Migration vers Claude Fable 5.1 depuis Fable 5 ou Opus 5 : Tous les changements majeurs

Migrer vers Claude Fable 5.1 depuis Fable 5 ou Opus 5 : tool_choice forcé 400, blocs de pensée à sens unique, la vérification de l'édition de l'historique, chaque correctif, et une liste de contrôle complète.

Ashley Goolam

Ashley Goolam

2 September 2026

Migration vers Claude Fable 5.1 depuis Fable 5 ou Opus 5 : Tous les changements majeurs

Apidog pour les entreprises

Déploiement sur site

SSO & RBAC

Conforme SOC 2

Découvrir Apidog Enterprise

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 :

É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

La liste de contrôle de la migration

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.

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API