Passer à Claude Fable 5.1 est principalement un échange d'ID de modèle. La surface de l'API, les limites, la tarification par jeton, le tokenizer, la réflexion adaptative toujours active et la gestion des refus correspondent tous à Fable 5. Mais trois changements renvoient des erreurs que Fable 5 n'a jamais faites, et l'un d'eux, la vérification de l'édition de l'historique, peut dégrader silencieusement un harnais d'agent qui fonctionnait parfaitement pendant un an. Venir d'Opus 5 ajoute quatre éléments supplémentaires.
Ce guide est la liste de contrôle avec le texte d'erreur exact et la correction pour chaque élément, dans l'ordre où vous les rencontrerez, élaboré à partir du guide de migration d'Anthropic et de Quoi de neuf dans Claude Fable 5.1. Chaque extrait peut être collé dans Apidog et exécuté contre le véritable point de terminaison avant d'atteindre la production. Pour un aperçu du modèle, commencez par ce qu'est Claude Fable 5.1.

Étape 0 : Confirmer si vous devez migrer
Les documents d'Anthropic indiquent de commencer avec Opus 5 et d'utiliser Fable 5.1 « pour les raisonnements exigeants et le travail d'agent à long terme, ou lorsque vos évaluations sur Claude Opus 5 à effort plus élevé sont encore insuffisantes. » Si Opus 5 réussit vos évaluations, la migration double votre prix par jeton sans gain mesurable. Si vous utilisez Fable 5, le prix est le même avec des lectures de cache moins chères et de meilleurs chiffres annoncés, donc la question est seulement de savoir combien de travail de harnais cela demande. Les comparaisons Fable 5.1 contre Fable 5 et Fable 5.1 contre Opus 5 couvrent la décision.
Trois vérifications d'éligibilité d'abord :
- Rétention des données. Fable 5.1 exige une rétention de 30 jours et n'est pas disponible en rétention de données nulle (ZDR) à moins qu'Anthropic ne l'autorise expressément. Une organisation ZDR reçoit une erreur
400 invalid_request_errorsur chaque requête sans autre indice. Opus 5 est disponible en ZDR. - Niveau de priorité. Non pris en charge sur Fable 5.1. Fable 5 le prend en charge.
- Limites de débit. Fable 5.1 partage un pool unique « Fable 5.x » avec Fable 5, ainsi une transition progressive utilise la même marge disponible.
Étape 1 : Mettre à jour le nom du modèle
model = "claude-fable-5" # Avant
model = "claude-opus-5" # Ou avant
model = "claude-fable-5-1" # Après
Sur Amazon Bedrock, l'ID est anthropic.claude-fable-5-1. Google Cloud, Microsoft Foundry et Claude Platform sur AWS utilisent claude-fable-5-1. Si vous utilisez Claude Managed Agents, c'est le seul changement requis.
Changement majeur 1 : l'utilisation forcée d'outils renvoie une erreur 400
Fable 5 acceptait les valeurs auto, none, any et tool pour tool_choice. Fable 5.1 rejette les deux dernières, sur l'API Messages, l'API Batches et le point de terminaison de comptage de jetons :
tool_choice: type "tool" and "any" are not supported for this model.
Raison d'Anthropic : la réflexion est toujours active, et un appel forcé la sauterait, de sorte que le modèle écrirait son processus de réflexion directement dans les arguments de l'outil.
Avant (Fable 5) :
response = client.messages.create(
model="claude-fable-5",
max_tokens=16000,
tools=[record_summary_tool],
tool_choice={"type": "tool", "name": "record_summary"},
messages=[{"role": "user", "content": "Summarize: The meeting moved to Thursday."}],
)
Après (Fable 5.1) : laissez tool_choice à auto, nommez l'outil dans l'instruction et définissez strict: true (utilisation stricte des outils) afin que les arguments correspondent toujours à votre schéma.
record_summary_tool["strict"] = True
record_summary_tool["input_schema"]["additionalProperties"] = False
response = client.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
tools=[record_summary_tool],
tool_choice={"type": "auto"},
messages=[{"role": "user", "content": "Summarize: The meeting moved to Thursday. Call the record_summary tool with your result."}],
)
Migrez par intention. Si vous avez forcé un outil à renvoyer du JSON, remplacez-le par des sorties structurées (output_config.format). Si l'application exige l'appel à ce tour, ajoutez un message role: "system" après le dernier tour utilisateur qui nomme l'outil et indique que l'appel est requis, et conservez-le ensuite dans l'historique. Si vous vous êtes appuyé sur any pour « exactement un outil », disable_parallel_tool_use: true fonctionne toujours avec auto mais signifie maintenant au maximum un appel. Supprimez toute boucle de nouvelle tentative en cas d'outil manquant ; Anthropic affirme que Fable 5.1 suit les instructions explicites d'outils de manière fiable. Dans une organisation CMEK, strict: true et les sorties structurées ne sont pas disponibles sur les modèles Fable, donc fiez-vous uniquement à l'instruction.
Changement majeur 2 : les anciens modèles ne peuvent pas lire les blocs de réflexion de Fable 5.1
Chaque bloc de réflexion enregistre le modèle qui l'a produit. Fable 5.1 lit les blocs d'Opus 5, Fable 5, Mythos 5 et des modèles antérieurs, donc une conversation passant sur Fable 5.1 conserve son raisonnement. Hormis Mythos 5.1, aucun autre modèle ne peut lire un bloc Fable 5.1.
Une conversation Fable 5.1 atterrit sur un modèle plus ancien via un commutateur de routeur, une nouvelle tentative côté client ou un repli en cas de refus du classifieur. Dans chaque cas, l'API supprime les blocs que ce modèle ne peut pas lire avant de les voir. La requête réussit, les jetons supprimés ne sont pas facturés, et le modèle cible replanifie sans le raisonnement, ce qui augmente le coût et la latence au premier tour après le changement.
Rien à corriger dans le code. Continuez à renvoyer les blocs de réflexion inchangés ; les supprimer vous-même peut déclencher des erreurs 400 de signature. Pour plus de visibilité, envoyez l'en-tête bêta thinking-binding-controls-2026-08-01 et la réponse contiendra un tableau input_transformations nommant chaque bloc supprimé avec reason: "model_binding_mismatch".
Changement majeur 3 : l'édition des tours précédents invalide les blocs de réflexion
C'est l'élément pour lequel il faut prévoir du temps. Un bloc de réflexion de Fable 5.1 n'est valide que par rapport à l'invite system exacte, au tableau tools et à l'historique des messages qui l'ont précédé (réflexion préservée). Là où la vérification est appliquée, une requête qui rejoue un bloc après que l'un de ces éléments ait été modifié est rejetée :
messages.5.content.0: Invalid `signature` in `thinking` block. The block is bound to a different conversation. Remove the block, or set `thinking.block_binding.prefix_mismatch_behavior` to "drop_block". That setting requires the `thinking-binding-controls-2026-08-01` value in the `anthropic-beta` header.
Qui est concerné. Les comptes créés à partir du 31 août 2026. Les comptes plus anciens enregistrent l'incohérence mais n'agissent que si la requête définit thinking.block_binding.prefix_mismatch_behavior. Anthropic affirme que les futurs modèles l'appliqueront pour chaque compte. Si vous livrez un outil que d'autres exécutent avec leur propre clé API, testez avec le champ défini : vos utilisateurs sur les nouveaux comptes seront contraints avant vous. Claude Code, claude.ai, Managed Agents et le SDK d'Agent maintiennent le préfixe intact pour vous ; Mythos 5.1 n'exécute pas du tout la vérification.
Ce qui invalide chaque bloc ultérieur : l'édition, le réordonnancement ou la suppression d'un tour précédent (y compris la suppression d'anciens résultats d'outils) ; l'injection de texte par requête que vous supprimez à la requête suivante ; la reconstruction de system ou tools entre les requêtes ; une URL d'image qui sert des octets différents plus tard. Ce qui maintient les blocs valides : les historiques en mode ajout seulement, la suppression d'une série de blocs de réflexion en commençant par les plus anciens, la modification de tout paramètre en dehors de system, tools et messages, le déplacement des marqueurs cache_control, et la compaction ou l'édition de contexte côté serveur.
La porte de sortie. Envoyez l'en-tête bêta et définissez le champ à "drop_block" :
response = client.beta.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
thinking={"type": "adaptive", "block_binding": {"prefix_mismatch_behavior": "drop_block"}},
betas=["thinking-binding-controls-2026-08-01"],
messages=history,
)
for t in response.input_transformations or []:
print(t.path, t.reason) # prefix_binding_mismatch ou model_binding_mismatch
L'API supprime le premier bloc non concordant et tous les blocs de réflexion qui suivent, continue et rapporte chaque suppression. Cela s'applique uniquement à cette requête, donc continuez à envoyer le champ. Définissez "error" explicitement en CI pour qu'une modification d'historique échoue l'exécution. Le guide de réflexion préservée contient l'audit en trois étapes et les formes de compaction qui posent problème. Le tableau des correctifs :
| Ce que vous faisiez | Faites plutôt ceci |
|---|---|
Modification de system en milieu de session |
Figez-le au début de la session ; ajoutez un message role: "system" là où le changement devient effectif |
Modification de tools en milieu de session |
Déclarez l'ensemble complet dès le début ; envoyez des blocs tool_addition / tool_removal dans un message système (bêta mid-conversation-tool-changes-2026-07-01) |
| Injection d'un rappel par tour et suppression de celui-ci | Message système à portée du tour avec clear_at: "next_user_message" (bêta mid-conversation-system-clear-at-2026-08-21), laissé dans l'historique |
| Suppression des anciens résultats d'outils côté client | Édition de contexte côté serveur |
| Compaction côté client conservant les tours récents textuellement | Compaction côté serveur, ou un message de résumé plus le nouveau tour utilisateur, sans rien rejouer d'autre |
| Référencement d'une image par URL sur plusieurs tours | Téléchargez une fois vers l'API Files et envoyez l'file_id |
Venant d'Opus 5 : quatre éléments supplémentaires
1. La réflexion ne peut pas être désactivée quel que soit l'effort. Opus 5 acceptait thinking: {"type": "disabled"} à high ou moins. Fable 5.1 renvoie une erreur 400 quel que soit l'effort. Supprimez le champ, contrôlez les dépenses avec un effort moindre et réexaminez max_tokens pour les routes qui fonctionnaient sans réflexion.
2. La narration entre les outils se déplace dans les blocs de réflexion. Sur Opus 5, le texte entre les appels d'outils était renvoyé sous forme de blocs text. Sur Fable 5.1, il est renvoyé sous forme de blocs thinking de mise à jour de progression qui sont vides avec le réglage par défaut display: "omitted". Si votre interface utilisateur affichait cette narration, définissez thinking: {"type": "adaptive", "display": "updates"} avec l'en-tête thinking-display-updates-2026-08-18.
3. L'ensemble des classificateurs est plus large. Opus 5 utilise des classificateurs uniquement cybernétiques. Fable 5.1 couvre cyber, bio, frontier_llm, reasoning_extraction et general_harms. Gérez stop_reason: "refusal" avant de lire content, et optez pour fallbacks: "default" avec l'en-tête server-side-fallback-2026-07-01. Les cibles autorisées sont Opus 4.8 et Opus 5, donc une requête refusée peut revenir au modèle à partir duquel vous avez migré.
4. Prix et rétention. 10 $ et 50 $ au lieu de 5 $ et 25 $, avec des lectures de cache à 0,25 $ au lieu de 0,50 $. La ZDR est perdue. Le détail des prix contient les calculs.
En venant d'Opus 4.8 ou d'une version antérieure, appliquez d'abord la migration d'Opus 4.8 vers Opus 5, puis ce guide. Les intégrations écrites pour Opus 4.8 tronquent souvent les anciens tours ou reconstruisent l'invite système à chaque requête, et Opus 4.8 n'a jamais soulevé d'objection.
Changements de comportement à tester
Aucun ne renvoie d'erreurs, et chacun a une correction d'une ligne dans le guide de prompt. Dans les boucles longues, Fable 5.1 peut émettre un appel d'outil par tour là où Fable 5 en regroupait plusieurs ; mesurez la proportion de tours multi-appels et ajoutez l'incitation au regroupement si elle a diminué. Il écrit moins de messages de progression, alors définissez display: "updates" et supprimez les lignes de prompt lui disant de retenir les résultats. À un effort low, il appelle moins souvent les outils de recherche, alors augmentez l'effort pour les tours qui nécessitent des données fraîches.
Changements recommandés
- Effort par message (bêta
mid-conversation-output-config-2026-07-01). Modifiez l'effort avec un messagerole: "system"au contenu vide portantoutput_configau lieu de modifier la valeur de haut niveau, ce qui réinitialise le cache. - Commencez à
highet balayez. Les gains par rapport à Fable 5 sont les plus importants àxhighetmax; Anthropic indique quemediumcorrespond à peu près à Fable 5 à un coût inférieur. Les noms de niveau ne sont pas transférables entre les modèles. - Réduisez le contexte sur le serveur. La compaction côté serveur (bêta
compact-2026-01-12) et l'édition de contexte ne sont pas considérées comme des modifications de l'historique.
La liste de contrôle de la migration
- [ ] Confirmer la rétention des données de 30 jours et l'absence de dépendance au Niveau de Priorité.
- [ ] Mettre à jour le nom du modèle vers
claude-fable-5-1. - [ ] Remplacer chaque
tool_choicede typeanyoutoolparautoplus une instruction etstrict: true, ou des sorties structurées. - [ ] Depuis Opus 5 : supprimer
thinking: {"type": "disabled"}et réexaminermax_tokens. - [ ] Renvoyer les blocs de réflexion inchangés à chaque tour, y compris les vides.
- [ ] Si votre code construit des
messages, exécutez une session avecprefix_mismatch_behavior: "drop_block", enregistrez lesinput_transformations, et corrigez chaqueprefix_binding_mismatch. - [ ] Figer
systemettoolsau début de la session ; déplacez les rappels par tour vers des messages système à portée du tour que vous ne supprimez jamais. - [ ] Choisir un
prefix_mismatch_behaviorde production et le surveiller. - [ ] Gérer
stop_reason: "refusal"; ajouterfallbacks: "default". - [ ] Si votre interface utilisateur affiche du texte entre les outils, définissez
display: "updates". - [ ] Réexécuter le balayage d'effort à partir de
highet ré-établir le coût de base. Le nombre de jetons est inchangé par rapport à Fable 5 ; les lectures de cache coûtent un quart du prix.
Exécution de la liste de contrôle dans Apidog
Créez une collection avec une requête par changement majeur : un appel tool_choice forcé (attendez l'erreur 400 ci-dessus), un appel thinking: disabled (attendez une erreur 400), et une séquence de deux requêtes qui modifie l'invite système entre les tours avec l'en-tête de liaison de réflexion défini (attendez une entrée prefix_binding_mismatch). Ajoutez les versions passantes à côté d'elles avec des assertions sur stop_reason et un tableau input_transformations vide, et exécutez-les en CI via l'interface CLI d'Apidog à chaque modification du harnais. Téléchargez Apidog pour le construire ; le guide détaillé de l'API contient les corps de requête.

FAQ
La migration de Fable 5 vers Fable 5.1 est-elle un changement direct ? Principalement. L'utilisation forcée de tool_choice renvoie une erreur 400, les modèles plus anciens ne peuvent pas lire les blocs de réflexion de Fable 5.1, et l'édition des tours précédents invalide les blocs de réflexion ultérieurs sur les comptes où la vérification est appliquée. Tout le reste est transféré.
Que signifie « lié à une conversation différente » ? Votre code a modifié quelque chose avant un bloc de réflexion de Fable 5.1, puis a rejoué le bloc. Cessez de modifier l'historique, ou envoyez l'en-tête thinking-binding-controls-2026-08-01 avec prefix_mismatch_behavior: "drop_block".
Mon compte applique-t-il la vérification d'édition de l'historique ? S'il a été créé le ou après le 31 août 2026, oui. Les anciens comptes ne l'appliquent que si vous définissez prefix_mismatch_behavior.
Puis-je conserver mes prompts Fable 5 ? Oui. Anthropic affirme qu'ils devraient bien fonctionner sans modifications. Réexécutez le balayage d'effort et attendez-vous à moins d'appels d'outils parallèles dans les boucles longues.
Qu'est-ce qui est cassé lorsque je migre depuis Opus 5 ? Tout ce qui figure dans la liste de Fable 5, plus thinking: disabled renvoie une erreur 400 quel que soit l'effort, la narration entre les outils se déplace dans les blocs de réflexion, l'ensemble des classificateurs est plus large, le prix double et la ZDR est perdue.
Bedrock et Google Cloud ont-ils les mêmes changements majeurs ? Les changements de modèle, oui. Les contrôles de liaison de réflexion étaient disponibles sur l'API Claude et Claude Platform sur AWS au lancement et arrivent par modèle sur Bedrock et Google Cloud. Sans les contrôles, la récupération consiste à supprimer les blocs de réflexion et à réessayer une fois.
