Migrer vers Claude Fable 5.1 : checklist pratique et erreurs à anticiper
Passer à Claude Fable 5.1 consiste principalement à remplacer l’ID du modèle. La surface de l’API, les limites, le tokenizer, la tarification par jeton, la réflexion adaptative toujours active et la gestion des refus restent alignés sur Fable 5. Toutefois, trois changements peuvent provoquer de nouvelles erreurs — dont la vérification de l’édition de l’historique, capable de dégrader silencieusement un harnais d’agent stable depuis longtemps. Une migration depuis Opus 5 ajoute quatre changements supplémentaires.
Essayez Apidog dès aujourd'hui
Cette checklist reprend les erreurs exactes et les corrections recommandées dans le guide de migration d’Anthropic et Quoi de neuf dans Claude Fable 5.1. Les extraits peuvent être collés dans Apidog pour être testés contre le véritable endpoint avant la production. Pour une présentation générale, consultez ce qu’est Claude Fable 5.1.
Étape 0 : vérifier que la migration est nécessaire
Anthropic recommande de commencer avec Opus 5 et de choisir Fable 5.1 pour les raisonnements exigeants, le travail d’agent à long terme ou les évaluations où Opus 5 à effort élevé reste insuffisant.
- Si Opus 5 réussit déjà vos évaluations, Fable 5.1 peut doubler le prix par jeton sans gain mesurable.
- Depuis Fable 5, le prix des jetons reste identique, avec des lectures de cache moins coûteuses et de meilleurs résultats annoncés. Le principal coût est donc le travail de migration du harnais.
- Comparez Fable 5.1 à Fable 5 et Fable 5.1 à Opus 5.
Vérifiez également :
-
Rétention des données — Fable 5.1 exige une rétention de 30 jours et n’est pas disponible en rétention nulle (ZDR), sauf autorisation explicite d’Anthropic. Une organisation ZDR reçoit une erreur
400 invalid_request_errorsur chaque requête. Opus 5 reste disponible en ZDR. - Niveau de priorité — non pris en charge sur Fable 5.1, mais pris en charge sur Fable 5.
- Limites de débit — Fable 5.1 partage le pool « Fable 5.x » avec Fable 5. Une transition progressive utilise donc la même capacité disponible.
Étape 1 : remplacer l’ID du modèle
model = "claude-fable-5" # Avant
model = "claude-opus-5" # Ou avant
model = "claude-fable-5-1" # Après
Sur Amazon Bedrock, utilisez anthropic.claude-fable-5-1. Google Cloud, Microsoft Foundry et Claude Platform sur AWS utilisent claude-fable-5-1.
Avec Claude Managed Agents, c’est le seul changement requis.
Changement majeur 1 : tool_choice forcé renvoie une erreur 400
Fable 5 acceptait auto, none, any et tool dans tool_choice. Fable 5.1 rejette any et tool sur l’API Messages, l’API Batches et le endpoint de comptage des jetons :
tool_choice: type "tool" and "any" are not supported for this model.
Anthropic explique que la réflexion est toujours active. Forcer un outil pourrait donc la contourner et pousser le modèle à écrire son raisonnement directement dans les arguments.
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 explicitement l’outil dans l’instruction et activez strict: true afin de respecter le 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."}],
)
Adaptez la correction à l’intention :
- Pour obtenir du JSON, préférez les sorties structurées avec
output_config.format. - Si l’appel doit absolument avoir lieu pendant ce tour, ajoutez un message
role: "system"après le dernier tour utilisateur pour nommer l’outil et rendre l’appel obligatoire. Conservez ensuite ce message dans l’historique. - Si vous utilisiez
anypour obtenir exactement un outil,disable_parallel_tool_use: truefonctionne avecauto, mais signifie désormais au maximum un appel. - Supprimez les boucles de nouvelle tentative déclenchées par un outil manquant : Anthropic indique que Fable 5.1 suit correctement les instructions explicites.
- Dans une organisation CMEK,
strict: trueet les sorties structurées ne sont pas disponibles sur les modèles Fable. Utilisez uniquement l’instruction.
Changement majeur 2 : les anciens modèles ne lisent pas les blocs de réflexion de Fable 5.1
Chaque bloc de réflexion est associé au modèle qui l’a produit. Fable 5.1 peut lire les blocs provenant d’Opus 5, Fable 5, Mythos 5 et des modèles antérieurs. À l’exception de Mythos 5.1, les autres modèles ne peuvent pas lire un bloc produit par Fable 5.1.
Si une conversation Fable 5.1 bascule vers un ancien modèle — routeur, nouvelle tentative côté client ou repli après refus — l’API supprime automatiquement les blocs incompatibles avant de les transmettre :
- la requête réussit ;
- les jetons supprimés ne sont pas facturés ;
- le modèle cible replanifie sans le raisonnement ;
- le premier tour suivant le basculement peut coûter plus cher et être plus lent.
Aucune modification de code n’est nécessaire. Renvoyez les blocs de réflexion inchangés ; les supprimer vous-même peut provoquer une erreur 400 de signature.
Pour auditer les suppressions, envoyez l’en-tête bêta thinking-binding-controls-2026-08-01. La réponse contiendra un tableau input_transformations avec reason: "model_binding_mismatch".
Changement majeur 3 : modifier les tours précédents invalide les blocs de réflexion
Un bloc de réflexion de Fable 5.1 n’est valide que par rapport à l’invite system, au tableau tools et à l’historique exacts qui le précèdent. Lorsque la vérification est active, rejouer ce bloc après une modification renvoie :
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.
Comptes concernés
- Les comptes créés à partir du 31 août 2026 appliquent la vérification.
- Les comptes plus anciens enregistrent l’incohérence mais ne bloquent la requête que si
thinking.block_binding.prefix_mismatch_behaviorest défini. - Anthropic prévoit d’appliquer cette règle à tous les comptes avec les futurs modèles.
- Claude Code, claude.ai, Managed Agents et le SDK d’Agent préservent le préfixe automatiquement.
- Mythos 5.1 n’effectue pas cette vérification.
Ce qui invalide les blocs suivants
- modifier, réordonner ou supprimer un tour précédent, y compris un ancien résultat d’outil ;
- injecter du texte dans une requête puis le supprimer à la requête suivante ;
- reconstruire
systemoutoolsentre deux requêtes ; - réutiliser une URL d’image qui renvoie ultérieurement des octets différents.
Ce qui les maintient valides
- un historique en ajout seulement ;
- la suppression d’une série de blocs de réflexion en commençant par les plus anciens ;
- la modification de paramètres autres que
system,toolsetmessages; - le déplacement des marqueurs
cache_control; - la compaction ou l’édition du contexte côté serveur.
Solution de récupération
Envoyez l’en-tête bêta et configurez 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 incompatible ainsi que tous les blocs de réflexion suivants, puis continue la requête en signalant chaque suppression. Cette configuration ne s’applique qu’à la requête courante : renvoyez-la à chaque tour.
Utilisez error explicitement en CI afin qu’une modification inattendue de l’historique fasse échouer l’exécution.
Le guide de réflexion préservée détaille l’audit en trois étapes et les formes de compaction problématiques.
| Ce que vous faisiez | Faites plutôt ceci |
|---|---|
Modifier system en milieu de session |
Figer system au début ; ajouter un message role: "system" à l’endroit où le changement prend effet |
Modifier tools en milieu de session |
Déclarer l’ensemble complet dès le début ; utiliser des blocs tool_addition / tool_removal dans un message système avec la bêta mid-conversation-tool-changes-2026-07-01
|
| Injecter un rappel à chaque tour puis le supprimer | Utiliser un message système limité au tour avec clear_at: "next_user_message" et le conserver dans l’historique avec la bêta mid-conversation-system-clear-at-2026-08-21
|
| Supprimer d’anciens résultats d’outils côté client | Utiliser l’édition de contexte côté serveur |
| Compacter côté client en conservant textuellement les tours récents | Utiliser la compaction côté serveur, ou un message de résumé suivi du nouveau tour utilisateur sans rejouer d’autre contenu |
| Référencer une image par URL sur plusieurs tours | La télécharger une fois vers l’API Files, puis envoyer son file_id
|
Depuis Opus 5 : quatre changements supplémentaires
1. La réflexion ne peut plus être désactivée
Opus 5 acceptait :
thinking = {"type": "disabled"}
à un effort high ou inférieur. Fable 5.1 renvoie une erreur 400 quel que soit le niveau d’effort. Supprimez ce champ, contrôlez les dépenses avec un effort inférieur et réévaluez max_tokens pour les routes qui fonctionnaient sans réflexion.
2. La narration entre les outils devient un bloc de réflexion
Avec Opus 5, le texte entre les appels d’outils était renvoyé dans des blocs text. Avec Fable 5.1, il devient un bloc thinking de progression, vide par défaut car display vaut "omitted".
Si votre interface affiche cette narration :
thinking = {"type": "adaptive", "display": "updates"}
Ajoutez également l’en-tête bêta thinking-display-updates-2026-08-18.
3. L’ensemble des classificateurs est plus large
Opus 5 utilisait uniquement des classificateurs cybernétiques. Fable 5.1 couvre :
cyberbiofrontier_llmreasoning_extractiongeneral_harms
Gérez stop_reason: "refusal" avant de lire content et utilisez fallbacks: "default" avec l’en-tête bêta server-side-fallback-2026-07-01.
Les cibles autorisées sont Opus 4.8 et Opus 5. Une requête refusée peut donc revenir au modèle depuis lequel vous migrez.
4. Le prix et la rétention changent
Le tarif passe de 5 $ / 25 $ à 10 $ / 50 $, tandis que les lectures de cache passent de 0,50 $ à 0,25 $. La ZDR est perdue. Consultez le détail des prix pour les calculs.
Depuis Opus 4.8 ou une version antérieure, appliquez d’abord la migration d’Opus 4.8 vers Opus 5. Les intégrations Opus 4.8 tronquent souvent les anciens tours ou reconstruisent l’invite système à chaque requête.
Changements de comportement à tester
Ces changements ne renvoient pas d’erreur, mais nécessitent parfois une correction d’une ligne dans le [REDACTED PROMPT] les longues boucles, Fable 5.1 peut effectuer un appel d’outil par tour alors que Fable 5 en regroupait plusieurs. Mesurez la proportion de tours multi-appels et demandez explicitement le regroupement si elle diminue.
- Le modèle produit moins de messages de progression. Utilisez
display: "updates"et supprimez les instructions lui demandant de retenir les résultats. - Avec un effort
low, il appelle moins souvent les outils de recherche. Augmentez l’effort pour les tours nécessitant des données fraîches.
Consultez le guide de prompt pour réévaluer vos instructions.
Changements recommandés
-
Effort par message — avec la bêta
mid-conversation-output-config-2026-07-01, modifiez l’effort via un messagerole: "system"au contenu vide contenantoutput_config, plutôt que via la valeur de haut niveau qui réinitialise le cache. -
Commencer à
high— balayez ensuite les niveaux d’effort. Les gains par rapport à Fable 5 sont les plus importants àxhighetmax. Anthropic indique quemediumest approximativement comparable à Fable 5, à moindre coût. Les niveaux ne sont pas directement comparables entre modèles. -
Réduire le contexte côté serveur — la compaction côté serveur avec la bêta
compact-2026-01-12et l’édition de contexte ne sont pas considérées comme des modifications de l’historique.
Checklist de migration
- [ ] Confirmer la rétention de 30 jours et l’absence de dépendance au Niveau de Priorité.
- [ ] Remplacer l’ID par
claude-fable-5-1. - [ ] Remplacer chaque
tool_choicede typeanyoutoolparautoavec une instruction etstrict: true, ou utiliser les sorties structurées. - [ ] Depuis Opus 5, supprimer
thinking: {"type": "disabled"}et réévaluermax_tokens. - [ ] Renvoyer les blocs de réflexion inchangés à chaque tour, y compris les blocs vides.
- [ ] Tester une session avec
prefix_mismatch_behavior: "drop_block", journaliserinput_transformationset corriger chaqueprefix_binding_mismatch. - [ ] Figer
systemettoolsau début de la session. - [ ] Déplacer les rappels par tour vers des messages système à portée limitée, sans les supprimer de l’historique.
- [ ] Choisir une stratégie de production pour
prefix_mismatch_behavioret la surveiller. - [ ] Gérer
stop_reason: "refusal"et ajouterfallbacks: "default". - [ ] Définir
display: "updates"si l’interface affiche le texte entre les outils. - [ ] Refaire le balayage des niveaux d’effort à partir de
highet recalculer le coût de référence. - [ ] Vérifier que les lectures de cache sont facturées au quart du prix précédent.
Exécuter la checklist dans Apidog
Créez une collection contenant :
- une requête avec
tool_choiceforcé, qui doit produire l’erreur 400 correspondante ; - une requête avec
thinking: disabled, qui doit également produire une erreur 400 ; - une séquence de deux requêtes modifiant l’invite système entre les tours, avec l’en-tête de liaison de réflexion, qui doit produire une entrée
prefix_binding_mismatch; - les versions corrigées, avec des assertions sur
stop_reasonet un tableauinput_transformationsvide.
Exécutez cette collection en CI via l’interface CLI d’Apidog à chaque modification du harnais. Téléchargez Apidog pour la construire et utilisez le guide détaillé de l’API pour les corps de requête.
FAQ
La migration de Fable 5 vers Fable 5.1 est-elle directe ?
Principalement. Les points à traiter sont :
-
tool_choiceforcé renvoie une erreur 400 ; - les anciens modèles ne peuvent pas lire les blocs de réflexion de Fable 5.1 ;
- modifier les tours précédents invalide les blocs suivants lorsque la vérification est active.
Le reste est transféré.
Que signifie « lié à une conversation différente » ?
Votre code a modifié un élément situé avant un bloc de réflexion Fable 5.1, puis a rejoué ce 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 de l’historique ?
Oui s’il a été créé le ou après le 31 août 2026. Les comptes plus anciens ne l’appliquent que si vous définissez prefix_mismatch_behavior.
Puis-je conserver mes prompts Fable 5 ?
Oui. Anthropic indique qu’ils devraient fonctionner sans modification. Refaites toutefois le balayage des niveaux d’effort et attendez-vous à moins d’appels d’outils parallèles dans les longues boucles.
Que dois-je corriger depuis Opus 5 ?
Tout ce qui concerne la migration depuis Fable 5, plus :
-
thinking: disabledrenvoie une erreur 400 quel que soit l’effort ; - la narration entre les outils se déplace dans les blocs de réflexion ;
- les classificateurs sont plus nombreux ;
- le prix double ;
- la ZDR est perdue.
Bedrock et Google Cloud ont-ils les mêmes changements ?
Les changements d’ID 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 ; ils arrivent progressivement sur Bedrock et Google Cloud selon les modèles.
Sans ces contrôles, la récupération consiste à supprimer les blocs de réflexion et à réessayer une fois.


Top comments (0)