Ce qui casse sur les modèles récents : la liste de contrôle
Sur cette page
La plupart des tutoriels sur l’API Claude, y compris d’excellents, ont été écrits pour des modèles qui acceptaient des réglages aujourd’hui refusés. Le résultat est une catégorie d’erreurs très frustrante : du code qui a fonctionné, qui semble correct, et qui renvoie une erreur 400 dès qu’on change d’identifiant de modèle. Cette leçon rassemble ces ruptures en une seule liste, avec pour chacune le modèle à partir duquel elle s’applique et la façon de la contourner.
La liste, du plus ancien au plus récent
| Ce que fait votre code | À partir de | Ce qui se passe | Ce qu’il faut faire |
|---|---|---|---|
Préremplir la réponse (dernier message assistant partiel) | Génération 4.6 | Erreur 400 | Consigne directe, balises XML, sorties structurées |
Envoyer temperature, top_p ou top_k avec une valeur non par défaut | Claude Opus 4.7, puis toutes les générations 5 et 5.5 | Erreur 400 | Retirer le paramètre ; passer par le prompt |
Activer la réflexion avec thinking: {"type": "enabled", "budget_tokens": …} | Claude Opus 4.7 | Erreur 400 | Omettre thinking, régler la profondeur avec effort |
Couper la réflexion avec disabled à l’effort xhigh ou max | Claude Opus 5, Haiku 5.5 | Erreur 400 | Rester à high ou en dessous, ou garder la réflexion |
Couper la réflexion avec disabled, à tout niveau | Fable 5, Fable 5.1, Opus 5.5, Sonnet 5.5 | Erreur 400 | Fable et Opus 5.5 : impossible ; Sonnet 5.5 : between_tools |
Forcer un outil (tool_choice de type any ou tool) | Fable 5.1, Opus 5.5, Sonnet 5.5 | Erreur 400 | auto avec "strict": true sur l’outil, ou sorties structurées |
Utiliser computer_20251124 sur l’API Claude ou Google Cloud | Opus 5.5, Sonnet 5.5 | Erreur 400 | Passer à la boîte à outils computer_toolset_20260801 |
Utiliser computer_20250124 | Haiku 5.5 | Erreur 400 | computer_toolset_20260801, ou computer_20251124 sur Bedrock |
| Renvoyer un bloc de réflexion après avoir modifié un tour antérieur, le prompt système ou les outils | Fable 5.1, Opus 5.5, Sonnet 5.5, Haiku 5.5 (comptes créés depuis le 31 août 2026), Mythos 5.1 | Erreur 400 | Conversation en ajout seul ; messages système en cours de conversation |
Envoyer temperature, top_p ou top_k, même à la valeur par défaut | Version d’API 2026-10-21 | Erreur 400 | Retirer le paramètre |
Placer un document dans un message assistant, ou des citations dans un message user | Version d’API 2026-10-21 | Erreur 400 | Documents côté user, citations retirées des messages user |
Lisez ce tableau dans les deux sens. Pour un nouveau projet, il dit ce qu’il ne faut pas écrire. Pour un projet existant, il dit quoi chercher avant de changer de modèle : une recherche sur un "role": "assistant" en fin de liste, temperature, top_p, top_k, budget_tokens, "disabled", tool_choice et computer_2025 couvre la quasi-totalité des cas. Pour la ligne sur les blocs de réflexion, cherchez le code qui réécrit l’historique : un rappel injecté dans un ancien message, un prompt système reconstruit à chaque requête, une liste d’outils qui varie.
Les ruptures silencieuses
Toutes les ruptures ne se signalent pas par une erreur. Quatre changements modifient le comportement sans rien casser visiblement, et ce sont souvent eux qui coûtent le plus cher.
Le premier est l’effort par défaut. Sur Opus 5.5 et Haiku 5.5, il vaut medium et non plus high : une requête qui n’envoie pas effort réfléchit moins qu’avant. Si vos évaluations montrent une baisse de qualité après une migration, regardez ce point avant d’accuser le modèle.
Le deuxième est le découpage en tokens. Depuis Claude Opus 4.7, le même texte produit environ 30 % de tokens de plus que sur les modèles antérieurs, selon le contenu : c’est le cas en passant de Haiku 4.5 à Haiku 5.5, ou de Sonnet 4.6 à Sonnet 5. Un prix au million de tokens identique ne garantit donc pas une facture identique.
Le troisième concerne l’affichage de la réflexion. Sur les modèles actuels, son texte est omis par défaut ; si votre interface affichait le raisonnement, elle n’affichera plus rien tant que vous ne demandez pas display: "summarized".
Le quatrième touche la portabilité des blocs de réflexion. Un bloc que le modèle cible ne sait pas lire est supprimé sans erreur : c’est le cas quand une conversation passe de Fable 5.1 à un autre modèle, ou quand un bloc produit par Sonnet 5.5 ou Haiku 5.5 est renvoyé depuis un autre compte. La requête réussit, mais le modèle repart sans ce raisonnement. Pour le voir, l’en-tête bêta thinking-binding-controls-2026-08-01 signale chaque suppression dans le champ input_transformations de la réponse.
Le réflexe à prendre : interroger l’API Models
Plutôt que de retenir ces règles par cœur, laissez l’API vous les dire. Depuis octobre 2026, l’API Models indique pour chaque modèle s’il accepte thinking: {"type": "disabled"} et between_tools, s’il accepte les outils serveur de recherche web et d’exécution de code, et à quelle famille il appartient.
import anthropic
client = anthropic.Anthropic()
for model in client.models.list():
if model.capabilities is None:
continue
types = model.capabilities.thinking.types
print(model.id,
"| disabled :", types.disabled.supported,
"| between_tools :", types.between_tools.supported)
Un test automatisé qui exécute ce script à chaque changement de modèle et compare le résultat à vos attentes vaut mieux que n’importe quelle liste de contrôle, celle-ci comprise.
À vous de jouer
Votre liste de contrôle. Lancez les recherches de cette leçon sur votre dépôt et classez chaque résultat en trois colonnes : à supprimer, à remplacer, à surveiller. Pour la colonne « à surveiller », ajoutez à vos tests une requête qui échouerait si la rupture vous touchait, par exemple un appel au modèle visé avec votre prompt système réel et deux tours de conversation.
Sources officielles : Release notes (documentation Claude) · Thinking · Preserved thinking · Define tools · Migrating to API version 2026-10-21 · Model deprecations (paramètres dépréciés)
Points clés à retenir
- Préremplissage, température et réflexion manuelle sont refusés par tous les modèles actuels
- Forcer un outil est refusé par Fable 5.1, Opus 5.5 et Sonnet 5.5 : utilisez le mode strict
- Sur la gamme 5.5 et Fable 5.1, traitez la conversation en ajout seul pour garder les blocs de réflexion valides
- Quatre ruptures silencieuses : effort par défaut
medium, découpage en tokens, réflexion omise, blocs supprimés sans erreur - L’API Models décrit ce que chaque modèle accepte : testez-la plutôt que de deviner