Contrôler la sortie du modèle
Sur cette page
Au-delà de la qualité du prompt, deux leviers contrôlent la sortie de Claude, chacun à un bout de la réponse : vos consignes décident comment elle commence et quelle forme elle prend, les séquences d’arrêt décident où elle s’arrête.
Orienter le début de la réponse
Le cours officiel présente le pré-remplissage : on termine la liste de messages par un message assistant partiel, par exemple « Le café est meilleur parce que », et Claude continue à partir de là. La technique marche encore avec Claude Haiku 4.5, le modèle du cours officiel, quand il ne réfléchit pas. Mais Haiku 5.5, comme tous les modèles Claude depuis la génération 4.6, refuse une requête qui se termine par un message assistant.
La documentation d’Anthropic indique ce qui remplace chaque usage : des consignes directes, que les modèles actuels suivent de façon fiable. Pour imposer une direction, dites-la :
messages = []
add_user_message(
messages,
"Le café ou le thé est-il meilleur au petit-déjeuner ? "
"Défends le café, et commence ta réponse par « Le café est meilleur parce que ».",
)
print(chat(messages))
Claude construit un argumentaire en faveur du café, ouvert par la formule demandée. Le même principe couvre les autres usages de l’ancienne technique :
- Sauter les préambules : écrivez dans le prompt système « Réponds directement, sans préambule ».
- Imposer une langue ou une ouverture : demandez-les explicitement dans le message.
- Reprendre une réponse interrompue : dites-le dans le message de l’utilisateur, en citant la fin du texte déjà reçu.
- Produire des données pour un programme : utilisez les sorties structurées de la leçon 10.
Les séquences d’arrêt
À l’autre bout, une séquence d’arrêt interrompt la génération dès que Claude écrit un texte donné. Vous fournissez une liste de chaînes ; dès que Claude en produit une, il s’arrête et renvoie ce qu’il a écrit jusque-là, sans la séquence elle-même. Sur Bedrock, le réglage passe par inferenceConfig :
def chat(messages, system=None, stop_sequences=None):
params = {"modelId": model_id, "messages": messages}
if system:
params["system"] = [{"text": system}]
if stop_sequences:
params["inferenceConfig"] = {"stopSequences": stop_sequences}
response = client.converse(**params)
content = response["output"]["message"]["content"]
return "".join(block["text"] for block in content if "text" in block)
Le cours officiel donne à stop_sequences une liste vide par défaut ; une valeur None évite le piège classique des arguments mutables en Python, et la fonction n’envoie inferenceConfig que si une séquence est fournie. Exemple :
messages = []
add_user_message(messages, "Compte de 1 à 10 sur une seule ligne, en séparant les nombres par des virgules.")
print(chat(messages, stop_sequences=["5"]))
Résultat : « 1, 2, 3, 4, ». Claude s’arrête juste avant le « 5 ». La virgule et l’espace restent en fin de chaîne : la coupe tombe au caractère près, devant la séquence détectée. Choisissez donc vos séquences en pensant à l’état exact dans lequel elles laissent la sortie. Vous pouvez en donner plusieurs, et la première rencontrée l’emporte :
print(chat(messages, stop_sequences=["5", "3, 4"]))
Ici, « 3, 4 » arrête la génération avant même le « 5 ». Quand une séquence d’arrêt a joué, le champ stopReason de la réponse vaut stop_sequence au lieu de end_turn.
À quoi servent les séquences d’arrêt
Elles servent à limiter la longueur d’une réponse, à s’arrêter à un point de rupture naturel (la fin d’une liste, la fermeture d’un bloc), et à empêcher Claude de continuer au-delà d’un délimiteur. La génération coupée est aussi du temps et des tokens économisés : on ne paie pas ce qui n’est pas généré.
À vous de jouer
Remplacer un pré-remplissage. Le cours officiel pré-remplit « Tea is better because » pour orienter la réponse vers le thé. Obtenez le même effet avec Haiku 5.5 par une consigne, puis demandez une réponse neutre qui commence par « Les deux se valent parce que ».
Couper au bon endroit. Demandez une liste numérotée de dix conseils et arrêtez-la après le troisième avec une séquence d’arrêt. Quelle séquence choisissez-vous, et dans quel état laisse-t-elle la sortie ? Vérifiez stopReason.
Sources officielles : Controlling model output (Claude Academy) · Prefill Claude’s response et Migration guide (documentation Claude) · InferenceConfiguration (documentation AWS)
Points clés à retenir
- Deux leviers complémentaires : vos consignes orientent le début et la forme, les séquences d’arrêt contrôlent la fin.
- Le pré-remplissage est refusé par Haiku 5.5 et par tous les modèles depuis la génération 4.6 : demandez l’ouverture voulue dans le prompt.
- Sur Bedrock,
stopSequencespasse dansinferenceConfig; plusieurs séquences sont possibles, la première rencontrée l’emporte. - La coupe tombe au caractère près, séquence exclue, et
stopReasonvaut alorsstop_sequence.