Aller au contenu
Mastering Claude

Accueil / L'API Claude pour ceux qui construisent

L'API Claude pour ceux qui construisent8 minApplication

Passer à Opus 5.5 sans casser votre code

Passer de Claude Opus 5 à Claude Opus 5.5 ne se résume pas à changer l'identifiant : quatre réglages anciens renvoient désormais une erreur 400, et les notes écrites entre deux appels d'outils arrivent vides tant que le code ne règle pas thinking.display.

Claude Opus 5.5, annoncé le 22 septembre 2026, s'appelle claude-opus-5-5 dans l'API. La page officielle de ses nouveautés recense quatre changements cassants pour un code qui tourne déjà sur Claude Opus 5, et un cinquième changement qui ne fait échouer aucune requête mais modifie la forme de la réponse. Un code qui ne change que l'identifiant s'expose aux cinq.

Quatre requêtes que l'API refuse

  • La réflexion ne se coupe plus. Un champ thinking de type disabled, comme un budget manuel de type enabled avec budget_tokens, renvoie une erreur 400. Le champ s'omet, ou prend le type adaptive, et la profondeur se règle par output_config.effort.
  • Le forçage d'outil disparaît. Un tool_choice de type any ou tool renvoie une erreur 400, y compris sur le point d'accès qui compte les jetons. Restent auto, la valeur par défaut, et none.
  • Un bloc de réflexion est lié à son modèle et à la conversation : sur les comptes créés à partir du 31 août 2026, le rejouer après une modification du prompt système, des outils ou d'un message antérieur renvoie une erreur 400.
  • Sur l'API Claude et Google Cloud, l'outil computer_20251124 est refusé au profit du jeu d'outils computer_toolset_20260801.

Pour remplacer le forçage, la documentation conseille de garder auto et de poser strict: true sur l'outil. Ce réglage contraint les arguments : quand Claude appelle l'outil, son entrée respecte le schéma déclaré. Il ne décide pas que l'appel aura lieu. Pour cela, le message dit en toutes lettres quand l'outil s'applique. Le schéma doit être complet, et chaque objet y porte additionalProperties: false. Voici une requête acceptée par Claude Opus 5 et refusée par Claude Opus 5.5 :

{
  "model": "claude-opus-5",
  "max_tokens": 1024,
  "thinking": { "type": "disabled" },
  "tools": [{
    "name": "chercher_client",
    "description": "Retrouve la fiche d'un client à partir de son numéro",
    "input_schema": {
      "type": "object",
      "properties": {
        "numero": { "type": "string" }
      },
      "required": ["numero"],
      "additionalProperties": false
    }
  }],
  "tool_choice": { "type": "tool", "name": "chercher_client" },
  "messages": [{ "role": "user", "content": "Trouve la fiche du client 4021" }]
}

La même requête corrigée pour Claude Opus 5.5 :

{
  "model": "claude-opus-5-5",
  "max_tokens": 1024,
  "output_config": { "effort": "low" },
  "tools": [{
    "name": "chercher_client",
    "description": "Retrouve la fiche d'un client à partir de son numéro",
    "input_schema": {
      "type": "object",
      "properties": {
        "numero": { "type": "string" }
      },
      "required": ["numero"],
      "additionalProperties": false
    },
    "strict": true
  }],
  "tool_choice": { "type": "auto" },
  "messages": [{ "role": "user", "content": "Trouve la fiche du client 4021. Utilise l'outil chercher_client." }]
}

Le changement qui ne renvoie aucune erreur

Entre deux appels d'outils, Claude Opus 5 écrivait de courtes notes dans des blocs de type text. Claude Opus 5.5 les range dans des blocs de type thinking, et au réglage par défaut, display: "omitted", leur champ thinking arrive vide. Une interface qui affichait ces notes se tait, sans la moindre erreur. Trier les blocs par leur champ type évite de prendre un bloc de réflexion pour la réponse, mais ne rend pas le texte : il faut en plus régler thinking.display. La valeur "updates", en bêta sous l'en-tête thinking-display-updates-2026-08-18, renvoie les notes seules ; "summarized" y mêle le résumé complet du raisonnement, sans distinction possible entre les deux.

# requête : "thinking": {"type": "adaptive", "display": "updates"}, en-tête bêta thinking-display-updates-2026-08-18
for bloc in reponse.content:
    if bloc.type == "thinking" and bloc.thinking:
        afficher(bloc.thinking)  # note écrite entre deux appels d'outils
    elif bloc.type == "text":
        afficher(bloc.text)

Ce tri ne sert qu'à l'affichage. Dans une boucle d'outils, le message de l'assistant se renvoie tel quel, blocs de réflexion compris, même vides : l'API rejette un bloc modifié, déplacé ou retiré.

L'effort appliqué quand le champ manque descend d'un cran, comme le montre le tableau. Le tarif par jeton baisse, comme le chiffre la figure, mais la réflexion toujours active se facture en jetons de sortie même quand son texte n'est pas renvoyé : le compromis de la leçon sur le choix d'un modèle se recalcule à l'effort choisi. La déclaration d'outil de la leçon sur les outils est la première touchée, et une consigne écrite pour l'ancien comportement vieillit, comme le montre la leçon sur les consignes qui vieillissent.

Figure 1

Ce qui change entre Claude Opus 5 et Claude Opus 5.5, identifiant remplacé seul

Réglage ou comportementSur Claude Opus 5Sur Claude Opus 5.5
Réflexion désactivée, thinking de type disabledAccepté à l'effort high ou en dessousRefusé, erreur 400
Outil forcé, tool_choice de type tool ou anyAcceptéRefusé, erreur 400
Outil computer_20251124 sur l'API Claude et Google CloudAccepté avec l'en-tête bêta dédiéRefusé, erreur 400
Effort appliqué quand le champ est omishighmedium
Notes écrites entre deux appels d'outilsBlocs de type textBlocs de type thinking, vides au réglage display par défaut
Chaque ligne compare un réglage ou un comportement entre les deux modèles, pour une requête identique par ailleurs.
Figure 2

Le tarif de Claude Opus 5.5 par million de jetons

4dollars par million
prix d'entrée de Claude Opus 5.5, contre 5 dollars pour Claude Opus 5
platform.claude.com, nouveautés de Claude Opus 5.5, 2026-09-28
20dollars par million
prix de sortie de Claude Opus 5.5, contre 25 dollars pour Claude Opus 5
platform.claude.com, nouveautés de Claude Opus 5.5, 2026-09-28
Le tarif d'entrée et de sortie de Claude Opus 5.5 au lancement, comparé dans chaque libellé à celui de Claude Opus 5.
Calibrez vous-même

Une équipe migre son intégration de claude-opus-5 vers claude-opus-5-5 en changeant l'identifiant de modèle dans son code. Ce code parcourt les blocs de chaque réponse, retient ceux dont le champ type vaut text et affiche leur contenu. Après la migration, la zone de l'interface qui affichait des notes du modèle entre deux appels d'outils reste vide pendant toute la tâche, et chaque appel renvoie un code de succès.

Écrivez en une phrase ce que cette situation établit, et en une phrase ce qu'elle n'établit pas.

Ce qu’il faut retenir
  • Un budget manuel de réflexion, type enabled avec budget_tokens, est refusé au même titre que la désactivation : l'effort devient le seul levier de profondeur.
  • Le réglage strict: true garantit la forme des arguments d'un outil appelé, et c'est le message qui doit dire quand l'appeler.
  • Trier les blocs par type protège la lecture de la réponse, et c'est le réglage thinking.display qui rend lisibles les notes écrites entre deux appels d'outils.
  • Les blocs de réflexion se renvoient intacts dans une boucle d'outils, y compris ceux dont le texte est vide.
  • Le guide de migration officiel liste chaque changement par modèle de départ, et sa liste pour Claude Opus 5 tient en un seul groupe.
À faire maintenant

Ouvrez le code qui appelle l'API Claude et cherchez-y les trois motifs qui provoquent une erreur 400 : thinking de type disabled ou enabled, tool_choice de type any ou tool, un outil de type computer_20251124. Corrigez chacun selon le guide de migration officiel. Cherchez ensuite, séparément, toute lecture de la réponse par position comme content[0].text : ce motif ne renvoie aucune erreur, il casse silencieusement l'affichage. Si votre interface affiche les notes écrites entre deux appels d'outils, réglez thinking.display sur updates avec l'en-tête bêta thinking-display-updates-2026-08-18, et affichez les blocs de réflexion non vides.

Vérifier à la source

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.