Accueil / L'API Claude pour ceux qui construisent
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.
Trois façons de fixer le format d'une réponse
| Technique pour orienter le format de la réponse | Rejetée par une erreur 400 sur les modèles courants | Documentée comme remplacement officiel |
|---|---|---|
| Pré remplissage du tour assistant | Oui | Non |
| Instruction system stable | Non | Oui |
| Champ output_config.format | Non | Oui |
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 que cela établit : Ceci établit que le pré remplissage du tour assistant, un message assistant qui commence la réponse à la place de Claude, est rejeté par une erreur 400 sur Claude Sonnet 5.
Ce que cela n’établit pas : Ceci n'établit pas si une instruction system demandant le même format aurait été acceptée par le serveur, puisque cette seconde approche n'a pas été tentée dans cette situation.
Les trois calibrages faux les plus courants
- Trop large Cette situation prouve que Claude Sonnet 5 refuse tout message dont le contenu commence par une accolade, quel que soit son rôle.
- Trop étroit Cette situation ne prouve rien puisqu'une seule requête a échoué avec ce format précis.
- À côté Cette situation montre que Claude Sonnet 5 met plus de temps à répondre lorsque le tableau messages contient un message assistant incomplet.
- 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.
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.
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.
- Anthropic, guide de migration vers Claude Opus 5 consultée le 2026-09-02
- Anthropic, refus et repli, la réclamation d'un crédit de repli consultée le 2026-09-02