Aller au contenu principal
Leçon 9 sur 67 · Claude sur Amazon Bedrock

Contrôler la sortie du modèle

Leçon 9 sur 67 Mis à jour le 5 novembre 2026 Développeur
Sur cette page
  1. Orienter le début de la réponse
  2. Les séquences d’arrêt
  3. À quoi servent les séquences d’arrêt
  4. À vous de jouer
  5. Points clés à retenir

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.

Deux leviers, deux bouts de la réponse Deux colonnes : les consignes décident du début et de la forme (ouverture imposée, pas de préambule, données structurées) ; les séquences d'arrêt décident de la fin (stopSequences dans inferenceConfig, coupe au caractère près, stopReason à stop_sequence). CONTRÔLER LA SORTIE Deux leviers, deux bouts de la réponse Le début et la forme : vos consignes Ouverture imposée Demandez-la dans le message. Sans préambule Dites-le dans le prompt système. Données pour un programme Sorties structurées, leçon 10. La fin : les séquences d'arrêt stopSequences Dans inferenceConfig, plusieurs possibles. La coupe Au caractère près, séquence exclue. Le signal stopReason vaut stop_sequence. Le pré-remplissage du cours officiel est refusé par Haiku 5.5 : la consigne le remplace.
D'après la leçon « Controlling model output » (Claude Academy, Claude with Amazon Bedrock) et la documentation Claude.

À 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, stopSequences passe dans inferenceConfig ; plusieurs séquences sont possibles, la première rencontrée l’emporte.
  • La coupe tombe au caractère près, séquence exclue, et stopReason vaut alors stop_sequence.