1. À qui s'adresse ce guide

Comme détaillé dans l'article de sortie d'Opus 4.7, 4.7 est le successeur direct de 4.6. Seulement, plusieurs ruptures côté API sont introduites simultanément, et un simple changement du nom de modèle peut renvoyer un 400 Bad Request.

Ce guide vise :

  • Les développeurs qui appellent claude-opus-4-6 via l'API ou le SDK Anthropic
  • Les équipes qui utilisent Claude via Bedrock ou Vertex AI
  • Les utilisateurs restés en 4.5 ou 4.1 qui veulent sauter directement en 4.7
  • Ceux qui utilisent la pensée étendue (thinking: enabled) ou temperature en production

On s'appuie sur le guide officiel Anthropic comme source primaire, tout en insistant sur les pièges rencontrés sur le terrain. La source officielle : guide de migration sur platform.claude.com.

GUIDE DE MIGRATION

Claude Opus 4.7

Guide de migration complet

Tous les changements cassants et leurs solutions

1 Modèle de pensée
- enabled + budget
+ adaptive + effort
OFF par défaut, xhigh débarque
2 Sampling supprime
- température
- top_p / top_k
Tout passe par le prompt
3 Nouveau tokeniseur
1.35x
Réajuster max_tokens
claude-opus-4-6 → claude-opus-4-7
Source : notes de version d'Anthropic (Claude Opus 4.7)

2. Résumé en 3 lignes -- pour aller vite

Le TL;DR pour les pressees.

  1. Changer le nom de modèle claude-opus-4-6 -> claude-opus-4-7 (et mettre le SDK à jour)
  2. Trois ruptures majeures : suppression de thinking: enabled (remplace par pensée adaptative + effort), suppression de temperature/top_p/top_k, nouveau tokeniseur (jusqu'à 1,35x de tokens pour le même texte)
  3. En échange : meilleure performance en code, 1M de contexte au tarif standard, nouveau niveau d'effort xhigh

Les chapitres suivants detaillent chaque point.

3. Mettre à jour le nom de modèle

Premier geste, le plus simple : changer l'identifiant de modèle.

# Avant
model = "claude-opus-4-6"

# Apres
model = "claude-opus-4-7"

Si l'identifiant est géré par une variable d'environnement ou un fichier de config, gardez cette structure : la prochaine migration n'en sera que plus simple.

// .env
// CLAUDE_MODEL=claude-opus-4-6
CLAUDE_MODEL=claude-opus-4-7

// app.ts
const model = process.env.CLAUDE_MODEL ?? "claude-opus-4-7";

Mais changer le nom de modèle ne suffit souvent pas cette fois-ci. Détaillons les ruptures.

4. Rupture 1 : pensée étendue supprimée, pensée adaptative

En 4.6, activer la pensée étendue (extended thinking) se faisait avec thinking: {type: "enabled", budget_tokens: N}. En 4.7, ce format renvoie une erreur 400.

On utilise désormais la « pensée adaptative » (adaptive thinking), ou le modèle ajuste lui-même sa profondeur de raisonnement. Par ailleurs, en 4.7, la pensée est désactivée par défaut : sans champ thinking, le modèle répond sans réflexion approfondie. Il faut l'activer explicitement pour retrouver un raisonnement profond comme en 4.6.

Before (4.6) / After (4.7)

# Before: Opus 4.6
client.messages.create(
    model="claude-opus-4-6",
    max_tokens=64000,
    thinking={"type": "enabled", "budget_tokens": 32000},
    messages=[{"role": "user", "content": "..."}],
)

# After: Opus 4.7
client.messages.create(
    model="claude-opus-4-7",
    max_tokens=64000,
    thinking={"type": "adaptive"},
    output_config={"effort": "high"},  # "max", "xhigh", "high", "medium", "low"
    messages=[{"role": "user", "content": "..."}],
)
// Before: Opus 4.6
await client.messages.create({
  model: "claude-opus-4-6",
  max_tokens: 64000,
  thinking: { type: "enabled", budget_tokens: 32000 },
  messages: [{ role: "user", content: "..." }],
});

// After: Opus 4.7
await client.messages.create({
  model: "claude-opus-4-7",
  max_tokens: 64000,
  thinking: { type: "adaptive" },
  output_config: { effort: "high" },
  messages: [{ role: "user", content: "..." }],
});

À retenir

  • Plus besoin de contrôler budget_tokens à la main
  • On choisit maintenant la « profondeur de réflexion » avec output_config.effort
  • Sans le champ thinking, le modèle répond sans réfléchir (comportement diffèrent de 4.6)

5. Rupture 2 : paramètres de sampling supprimés

Toute valeur non par défaut pour temperature, top_p ou top_k renvoie une erreur 400. Anthropic assume ainsi sa ligne : le comportement du modèle se règle via le prompt.

# Before
client.messages.create(
    model="claude-opus-4-6",
    temperature=0.7,
    top_p=0.9,
    top_k=40,
    messages=[...],
)

# After
client.messages.create(
    model="claude-opus-4-7",
    # temperature / top_p / top_k sont supprimes
    messages=[...],
)

Ceux qui utilisaient temperature=0.2 pour obtenir des sorties stables doivent désormais le faire dans le prompt (« renvoie la même réponse pour la même question ») ou en combinant avec des structured outputs (schéma JSON).

À l'inverse, les cas temperature=1.2 pour « réponses créatives » se convertissent en consignes de ton : « utilise des métaphores inattendues », etc.

6. Rupture 3 : contenu de pensée masque par défaut

En 4.6, une fois la pensée activée, la « pensée résumée » (summarized) arrivait dans le flux de réponse par défaut ; beaucoup d'UIs l'affichaient comme « en train de réfléchir... ».

En 4.7, la spécification change silencieusement : les blocs de pensée apparaissent toujours dans la réponse, mais le champ thinking est vide. Pour obtenir le contenu, il faut opter explicitement.

Symptômes

L'indicateur « en train de réfléchir » tourne longtemps sans que rien n'apparaisse, ce qui allonge la perception du temps de réponse. Les utilisateurs disent « c'est bloque ? ». C'est ce cas.

Solution

# Pour retrouver le comportement 4.6 et streamer la pensee resumee dans l'UI
client.messages.create(
    model="claude-opus-4-7",
    thinking={
        "type": "adaptive",
        "display": "summarized",  # a specifier explicitement
    },
    output_config={"effort": "high"},
    messages=[...],
)
await client.messages.create({
  model: "claude-opus-4-7",
  thinking: {
    type: "adaptive",
    display: "summarized",
  },
  output_config: { effort: "high" },
  messages: [...],
});

Si la pensée n'est pas destinée à l'UI (traitement backend pur), laissez sans display.

7. Rupture 4 : nouveau tokeniseur (env. 1,35x)

Opus 4.7 utilise un nouveau tokeniseur. Il contribué aux gains de performance mais augmente le nombre de tokens d'un même texte de 1,0 à 1,35x par rapport à 4.6.

Conséquences :

  • Les traitements cales sur un max_tokens juste suffisant peuvent être coupés en cours de route
  • Les estimations de coût ou de longueur faites côté client (type tiktoken) deviennent incorrectes
  • Les résultats de /v1/messages/count_tokens diffèrent entre 4.6 et 4.7
  • Pour le même prompt, coût et latence augmentent légèrement

Ce qu'il faut faire

# Before : max_tokens 16k base sur 4.6
response = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=16000,
    messages=[...],
)

# After : majorer d'environ 1,35x
response = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=22000,  # 16000 * 1,35 ≒ 21600 -> arrondi
    messages=[...],
)

Bonne nouvelle : 4.7 rend la fenêtre de 1M disponible au tarif API standard (pas de supplément long contexte). Malgré des tokens plus nombreux, la stratégie « mettons tout dans le contexte » devient plus viable.

8. Rupture 5 : prefill supprime

Cette rupture est heritee de 4.6. Le prefill d'un message assistant -- glisser {role: "assistant", content: "```json"} en fin de messages pour forcer une réponse commençant par du JSON -- renvoie une erreur 400.

# Before : prefill pour forcer un JSON en sortie
client.messages.create(
    model="claude-opus-4-6",
    messages=[
        {"role": "user", "content": "Renvoie les infos de l'utilisateur en JSON"},
        {"role": "assistant", "content": "```json\n{"},  # prefill
    ],
)

# After : passer par structured outputs
client.messages.create(
    model="claude-opus-4-7",
    output_config={
        "format": {
            "type": "json_schema",
            "schema": {
                "type": "object",
                "properties": {
                    "name": {"type": "string"},
                    "age": {"type": "integer"},
                },
                "required": ["name", "age"],
            },
        },
    },
    messages=[
        {"role": "user", "content": "Renvoie les infos de l'utilisateur en JSON"},
    ],
)

Trois alternatives au prefill :

  1. Structured outputs (output_config.format) -- contraindre la sortie avec un JSON schéma
  2. System prompt -- exiger explicitement : « renvoie uniquement du JSON, sans markdown ni préambule »
  3. Tool use -- recevoir la réponse en tant qu'appel de fonction (les arguments sont déjà structures)

Opus 4.7 : 5 changements cassants — Avant / Après

1 Pensée étendue (enabled) supprimée → pensée adaptative (adaptive)
- thinking: { type: "enabled", budget_tokens: 32000 }
// 400 sur 4.7
+ thinking: { type: "adaptive" }
+ output_config: { effort: "high" }
2 Paramètres de sampling supprimés
- température: 0.7
- top_p: 0.9 - top_k: 40
// complètement omis
Le réglage passe par le prompt
3 Contenu de pensée masque par défaut
4.6 : summarized par défaut
4.7 : champ thinking vide
+ thinking: { type: "adaptive",
   display: "summarized" }
4 Nouveau tokeniseur : jusqu'à 1.35x de tokens pour le même texte
count_tokens donne un autre résultat qu'en 4.6
Risque de coupure avec un max_tokens trop bas
Augmenter max_tokens (xhigh/max : 64k+ recommandé)
1M de contexte au tarif standard
5 Prefill supprime (depuis 4.6)
- { rôle: "assistant", content: "```json" }
// erreur 400
+ output_config: { format: {...} }
Remplacer par structured outputs / system prompt
Source : guide de migration officiel Anthropic / AI Arte

9. Choisir le bon niveau d'effort (xhigh nouveau)

output_config.effort accepte 5 valeurs. La nouveauté 4.7 : xhigh.

effortPositionUsage principal
maxRéflexion sans plafondBenchmarks, problèmes extrêmes ; attention aux rendements décroissants
xhigh (NEW)Optimisé code / agentsStandard pour Claude Code et les tâches autonomes
highÉquilibreBase minimale pour une tâche à charge cognitive élevée
mediumOrienté coûtTolère un peu moins de finesse pour gagner en prix et vitesse
lowTâches courtes et fixesClassification, mise en forme, résumé quand la latence prime

Ceux qui reglaient budget_tokens à la main en 4.6 n'ont plus qu'à choisir l'effort en 4.7. Repères empiriques :

  • Agent de code (type Claude Code) : commencer en xhigh
  • Chat QA ou réponse RAG : high est une valeur sûre
  • Tagging, extraction JSON, classification : medium ou low
  • max : réserver à « une seule tâche où il faut penser très fort, sans regarder le coût »

10. Réagir aux changements de comportement

Même avec un code compatible API, la façon de répondre à un prompt diffère de 4.6. Sans le savoir, vous risquez un « c'est devenu sec » en production.

10.1 La longueur s'adapte à la tâche

4.7 ajuste la longueur en fonction de la complexité. Plus de verbosité uniforme imposée par « réponds toujours en 3 paragraphes ». À l'inverse, retirez les vieilles consignes de longueur pour observer le comportement naturel.

10.2 Les consignes sont prises plus littéralement

Particulièrement aux niveaux d'effort bas. « Sois concis » ? La réponse est concise. « Donne-m'en 3 » ? Il n'en ajoute pas un quatrième. Très pratique, mais le remplissage « à la 4.6 » disparaît quand la consigne est vague.

10.3 Le ton devient plus direct

Fini les « Excellente question ! », les émojis decoratifs, les formules d'accueil. Si vous voulez un ton chaleureux, spécifiez-le via le system prompt.

10.4 Les mises à jour de progression sont intégrées au tracking d'agent

Si vos agents orchestrant du « voici ce que je vais faire », « je suis en train de faire... » étaient faits à la main, 4.7 les généré nativement. Vous pouvez retirer ce scaffolding redondant.

10.5 Les sous-agents et appels d'outils se font plus discrets

Par défaut, moins de sous-agents, moins d'outils. Quand le raisonnement suffit, il raisonne plutôt que d'appeler un outil. Ajustez vos attentes côté design d'agent.

10.6 Protections cybersécurité en temps réel

La sécurité offensive légitime (red-team, PoC de vulnérabilités) peut être refusée selon le contexte. Si c'est votre usage de production, déposez une demande au Cyber Vérification Program d'Anthropic.

10.7 Images haute résolution

4.7 traite nativement jusqu'à 2576 px. Attention : une image pleine résolution coûte environ 3x plus de tokens. Pour un trafic image intense, (a) reaffectez max_tokens, (b) downsamplez avant envoi.

« Ça marche sans, mais c'est mieux si vous le faites. »

  1. Réévaluer max_tokens : le nouveau tokeniseur gonfle aussi les sorties, partez d'une majoration de 1,2 à 1,35x pour re-tester
  2. Auditer l'estimation de tokens côté client : si vous calculez la facturation ou la longueur vous-même, basculez sur count_tokens ou ajustez vos coefficients
  3. Introduire task_budgets (bêta) : pour les agents. Bêta header task-budgets-2026-03-13, minimum 20 000 tokens. C'est une limite indicative, pas un cap dur
  4. Fixer max_tokens à 64k ou plus : avec xhigh ou max, pensée + sortie cumulees tirent fort
  5. Downsampler les images : si la haute résolution n'apporte rien, réduisez avant envoi pour économiser tokens et coûts

11.1 Exemple minimal de task_budgets (SDK officiel Python)

task_budgets étant en bêta, passez par l'endpoint client.beta.messages.create et précisez l'argument betas. L'appel diffère de celui des fonctionnalités GA.

response = client.beta.messages.create(
    model="claude-opus-4-7",
    max_tokens=128000,
    output_config={
        "effort": "high",
        "task_budget": {"type": "tokens", "total": 128000},
    },
    messages=[
        {"role": "user", "content": "Review the codebase and propose a refactor plan."}
    ],
    betas=["task-budgets-2026-03-13"],
)

À retenir :

  • Le minimum est 20 000 tokens. Toute valeur inférieure est refusée
  • max_tokens est un cap dur par requête (invisible pour le modèle), task_budget est une enveloppe indicative sur l'ensemble de la boucle d'agent (le modèle en tient compte)
  • Pour couper strictement les coûts, gardez max_tokens ; pour un équilibre qualité/efficacité, préférez task_budget
  • Pour du travail très ouvert (qualité > vitesse), ne spécifiez pas task_budget : le modèle aurait tendance à raccourcir

12. Migration depuis Opus 4.5 / 4.1

Si vous sautez 4.6 en venant directement de 4.5 ou 4.1, ajoutez les étapes suivantes :

  • Supprimer les paramètres de sampling : les utilisateurs historiques de Claude 3.x ont probablement temperature partout. À retirer entièrement
  • Faire le menage dans les bêta headers : effort-2025-11-24, fine-grained-tool-streaming-2025-05-14, interleaved-thinking-2025-05-14, etc., sont passés en GA. À supprimer
  • Changer d'endpoint : le code appelant client.beta.messages.create bascule sur client.messages.create
  • Passer output_format a output_config.format : le nom de clé a change
  • Parser les arguments d'outils : depuis 4.6, l'echappement JSON est diffèrent dans certains cas. Préférer JSON.parse / json.loads à un parsing manuel

Pour les nouveautés d'Opus 4.7 en elles-mêmes, lisez l'article pré-requis Claude Opus 4.7 : nouveautés, benchmarks et tarifs.

13. Checklist complète de migration

Checklist de migration vers Opus 4.7

Suivez l'ordre pour une migration sans accroc

Obligatoire (sinon ça ne marche pas)
Mettre à jour le nom du modèle claude-opus-4-6claude-opus-4-7
Supprimer temperature / top_p / top_k
Remplacer thinking: enabled par adaptive + effort
Retirer le prefill assistant (passer aux structured outputs)
Si votre UI affiche le raisonnement, spécifiez display: "summarized"
Réglage (qualité et coût optimaux)
Remesurer coût et latence avec le nouveau tokeniseur
max_tokens Augmenter d'environ 1,35× à titre indicatif
Retester la logique cliente d'estimation des tokens
Pour les images HD, prévoir max_tokens supplémentaire ou sous-échantillonner
Avec xhigh / max, définir max_tokens ≥ 64k
Pour les agents, envisager task_budgets (bêta)
Revue des prompts (changements de comportement)
Vérifier interprétation litterale, longueur adaptative, moins d'outils
Retirer les anciens prompts de contrôle de longueur, refaire les baselines
Cas sécurité offensive : demander l'accès au cyber vérification program
Migration depuis pré-4.5 : retirer l'en-tête bêta et passer à client.messages.create
AI Arte — Checklist de migration Claude Opus 4.7

À imprimer et diffuser en équipe -- tous les items à plat.

13.1 Obligatoire (sinon erreur 400 ou comportement casse)

  • Mettre à jour le nom de modèle : claude-opus-4-6 -> claude-opus-4-7
  • Supprimer temperature / top_p / top_k
  • Remplacer thinking: {type: "enabled", budget_tokens: N} par {type: "adaptive"} + output_config.effort
  • Retirer le prefill assistant et passer aux structured outputs / system prompt
  • Si l'UI affiche la pensée, préciser thinking.display: "summarized"

13.2 Réglage (optimisation coût / qualité)

  • Mesurer à nouveau coût et latence avec le nouveau tokeniseur
  • Ajuster max_tokens d'environ 1,35x
  • Retester l'estimation client des tokens
  • Pour les images, reaffecter les tokens en cas de haute résolution
  • Avec xhigh / max, fixer max_tokens ≥ 64k
  • Pour les agents, envisager task_budgets (bêta)

13.3 Revue des prompts et de l'exploitation

  • Vérifier adaptation de longueur, interprétation litterale, changement de ton sur les prompts réels
  • Supprimer les vieilles consignes de longueur, reprendre une baseline
  • Pour la sécurité offensive, demander l'accès au Cyber Vérification Program
  • Simplifier le scaffolding d'agent (messages de progression, etc.)
  • Depuis 4.5 où avant : retirer les bêta headers et migrer vers client.messages.create

14. Outil de migration automatisée

Si vous utilisez Claude Code, le skill Claude API d'Anthropic automatise les substitutions mécaniques. Dans Claude Code :

/claude-api migrate

Migrer l'ensemble du projet de Claude Opus 4.6 vers 4.7 :
- changer le nom de modele
- supprimer temperature / top_p / top_k
- remplacer thinking: enabled par adaptive + effort: high
- remplacer les prefills restants par des structured outputs

Le skill parcourt le dépôt, identifie les fichiers important le SDK anthropic et propose les modifications. Les ajustements de prompts et les mesures de benchmark ne peuvent pas être automatisés -- terminez avec la checklist.

FAQ

Q. Est-ce que changer juste le nom de modèle suffit ?

Si votre code n'utilise ni temperature, ni top_p, ni top_k, ni thinking: {type: "enabled"}, ni de prefill, alors oui, ça tourne. Mais le nouveau tokeniseur peut couper des sorties longues : révisez max_tokens au passage.

Q. Sans champ thinking, 4.7 répond-il sans réfléchir ?

Oui, la pensée est OFF par défaut en 4.7 -- comme c'était déjà le cas en 4.6 pour adaptive, mais les comportements activés par adaptive ne s'activent que si vous optez explicitement. Ajoutez thinking: {type: "adaptive"} et contrôlez l'intensité via output_config.effort.

Q. Si je supprime temperature, la sortie sera-t-elle identique à chaque fois ?

Non : Claude reste probabiliste, il y a toujours un peu de variabilité. Pour stabiliser fortement : (à) structured outputs (JSON schéma) pour figer le format, (b) consignes explicites dans le prompt (« même entrée = même sortie », « listes dans un ordre fixe », etc.).

Q. task_budgets est-il un cap dur ?

Non, c'est une limite « indicative » adressée au modèle. Le respect n'est pas garanti. Pour contraindre les coûts strictement, gardez max_tokens et une logique d'arrêt côté application. Utilisation en bêta : header task-budgets-2026-03-13 obligatoire.

Q. Mêmes comportements entre Claude Code et API directe ?

Côté specs API, oui. Mais Claude Code applique des réglages par défaut (l'effort xhigh est quasiment le défaut pour coder) et certains skills activent task_budgets en arrière-plan. Si vous ressentez une différence, loggez le JSON des requêtes pour comparer.

Q. Ma conso de tokens explose avec des images. Que faire ?

(1) Downsampler à moins de 2576 px avant envoi, (2) regrouper plusieurs images dans une planche unique, (3) OCR côté client et n'envoyer que le texte. Pour les usages exigeant la haute résolution (médical, plans, etc.), envoyez la pleine résolution et allouez plus de max_tokens.

Q. Je passe par Bedrock / Vertex AI. Même procédure ?

Les changements de paramètres sont identiques. Seuls l'identifiant de modèle (par exemple anthropic.claude-opus-4-7 sur Bedrock) et la date de disponibilité changent d'une plateforme à l'autre -- suivez les annonces de chaque cloud. Les structures thinking et output_config sont communes.

Q. Jusqu'où laisser faire l'outil de migration automatique ?

Le skill Claude API (/claude-api migrate) excelle sur les tâches mécaniques : renommage, suppression des paramètres de sampling, réécriture de la pensée étendue. En revanche, le ton des prompts, le contrôle de longueur et la mesure des benchmarks restent affaire humaine. Après l'automatisation, parcourez la checklist de cet article, ligne par ligne.

Guide base sur le guide officiel Anthropic de migration Claude Opus 4.7 (avril 2026). Les spécifications API pouvant évoluer, consultez la documentation officielle avant une mise en production.