Aller au contenu
Mastering Claude

Accueil / L'API Claude pour ceux qui construisent

L'API Claude pour ceux qui construisent7 minApplication

Des rôles qui tiennent, pas un pré remplissage qui casse

Le pré remplissage du tour assistant, une pratique qui commençait la réponse de Claude à la place du modèle, est désormais rejeté par une erreur 400 sur les modèles courants ; une instruction system stable ou une sortie contrainte le remplacent.

Compléter soi même le début de la réponse de Claude, une pratique appelée pré remplissage du tour assistant, ne fonctionne plus sur les modèles courants. Techniquement, cette pratique ajoutait au tableau messages un dernier message de rôle assistant, un contenu partiel non terminé, dans l'attente que Claude continue ce texte amorcé. Le serveur renvoie désormais une erreur HTTP 400 dès qu'il reçoit un tel message, avant même que la génération ne commence.

Les modèles concernés par le rejet

Le rejet touche Claude Opus 5, Claude Sonnet 5, Claude Fable 5.1, Claude Fable 5, ainsi que les générations Claude Opus 4.6, Claude Opus 4.7, Claude Opus 4.8 et Claude Sonnet 4.6. Le guide officiel de migration est explicite sur ce point : le pré remplissage de messages assistant renvoie une erreur 400 sur Claude Opus 4.7 et les modèles suivants, Claude Opus 5 compris, et recommande d'utiliser des sorties structurées, une instruction system, ou le champ output_config.format à la place. Le rejet intervient à l'envoi de la requête, ce qui évite de payer pour une génération qui n'aurait de toute façon pas eu lieu.

// Ancienne pratique, refusée par une erreur 400 sur les modèles courants
{
  "model": "claude-sonnet-5",
  "max_tokens": 200,
  "messages": [
    { "role": "user", "content": "Réponds en JSON strict." },
    { "role": "assistant", "content": "{" }
  ]
}

Ce qui remplace le pré remplissage

Une instruction system stable produit le même résultat sans toucher au tableau messages. Elle s'écrit une fois, en dehors de ce tableau, et s'applique à toute la requête plutôt qu'à un seul tour amorcé à la main.

// Instruction system stable, sans pré remplissage
{
  "model": "claude-sonnet-5",
  "system": "Réponds toujours en JSON strict, sans texte autour de l'objet.",
  "max_tokens": 200,
  "messages": [
    { "role": "user", "content": "Donne le statut du service." }
  ]
}

Le champ output_config.format, l'autre voie documentée, contraint directement la forme de la sortie plutôt que de la suggérer par une instruction textuelle ; son détail dépasse le périmètre de cette leçon. Une seule exception subsiste, documentée séparément : la réclamation d'un crédit de repli sur un refus accepte un message assistant écho, un cas particulier de la gestion des refus, pas une réouverture générale du pré remplissage. Le tableau messages garde par ailleurs sa règle propre, décrite dans la structure de la requête de base : chaque tour y alterne son rôle.

Figure 1

Trois façons de fixer le format d'une réponse

Technique pour orienter le format de la réponseRejetée par une erreur 400 sur les modèles courantsDocumentée comme remplacement officiel
Pré remplissage du tour assistantOuiNon
Instruction system stableNonOui
Champ output_config.formatNonOui
Le tableau croise trois techniques avec deux critères vérifiés dans le guide de migration : le rejet par une erreur 400 sur les modèles courants, et le statut de remplacement officiellement documenté.
Calibrez vous-même

Un développeur ajoute un message de rôle assistant qui contient une accolade ouvrante, à la suite d'un message utilisateur, dans le tableau messages d'une requête adressée à Claude Sonnet 5. Le serveur renvoie un code d'erreur 400 avant que la génération ne commence.

Écrivez en une phrase ce que cette situation établit, et en une phrase ce qu'elle n'établit pas.

Ce qu’il faut retenir
  • Le pré remplissage du tour assistant renvoie une erreur HTTP 400 dès que le dernier message du rôle assistant contient un contenu partiel destiné à orienter la suite.
  • Le rejet touche Claude Opus 5, Claude Sonnet 5, Claude Fable 5.1, Claude Fable 5, et les générations Claude Opus 4.6 à 4.8 ainsi que Claude Sonnet 4.6.
  • Le guide officiel de migration nomme trois remplacements : les sorties structurées, une instruction system, ou le champ output_config.format.
  • Une instruction system s'écrit une fois hors du tableau messages et s'applique à toute la requête, sans dépendre d'un tour assistant amorcé à la main.
  • Une seule exception documentée subsiste, hors du champ de cette pratique : la réclamation d'un crédit de repli sur un refus accepte un message assistant écho.
À faire maintenant

Ouvrez le code de votre projet et cherchez toute ligne qui ajoute un message de rôle assistant partiel à la fin du tableau messages avant l'envoi. Déplacez l'instruction qu'il portait dans un champ system séparé, puis relisez le résultat sans l'envoyer.

Vérifier à la source

Chaque affirmation datable de cette leçon renvoie ici au texte public qui la porte. Une source qui ne s’ouvre pas ne prouve rien.