Sommaire
- 1. A qui s'adresse ce guide
- 2. Resume en 3 lignes -- pour aller vite
- 3. Mettre a jour le nom de modele
- 4. Rupture 1 : pensee etendue supprimee, pensee adaptative
- 5. Rupture 2 : parametres de sampling supprimes
- 6. Rupture 3 : contenu de pensee masque par defaut
- 7. Rupture 4 : nouveau tokeniseur (env. 1,35x)
- 8. Rupture 5 : prefill supprime
- 9. Choisir le bon niveau d'effort (xhigh nouveau)
- 10. Reagir aux changements de comportement
- 11. Changements recommandes (non obligatoires)
- 12. Migration depuis Opus 4.5 / 4.1
- 13. Checklist complete de migration
- 14. Outil de migration automatisee
- FAQ
1. A qui s'adresse ce guide
Comme detaille dans l'article de sortie d'Opus 4.7, 4.7 est le successeur direct de 4.6. Seulement, plusieurs ruptures cote API sont introduites simultanement, et un simple changement du nom de modele peut renvoyer un 400 Bad Request.
Ce guide vise :
- Les developpeurs qui appellent
claude-opus-4-6via l'API ou le SDK Anthropic - Les equipes qui utilisent Claude via Bedrock ou Vertex AI
- Les utilisateurs restes en 4.5 ou 4.1 qui veulent sauter directement en 4.7
- Ceux qui utilisent la pensee etendue (
thinking: enabled) outemperatureen production
On s'appuie sur le guide officiel Anthropic comme source primaire, tout en insistant sur les pieges rencontres sur le terrain. La source officielle : guide de migration sur platform.claude.com.
2. Resume en 3 lignes -- pour aller vite
Le TL;DR pour les pressees.
- Changer le nom de modele
claude-opus-4-6->claude-opus-4-7(et mettre le SDK a jour) - Trois ruptures majeures : suppression de
thinking: enabled(remplace par pensee adaptative + effort), suppression detemperature/top_p/top_k, nouveau tokeniseur (jusqu'a 1,35x de tokens pour le meme texte) - En echange : meilleure performance en code, 1M de contexte au tarif standard, nouveau niveau d'effort
xhigh
Les chapitres suivants detaillent chaque point.
3. Mettre a jour le nom de modele
Premier geste, le plus simple : changer l'identifiant de modele.
# Avant
model = "claude-opus-4-6"
# Apres
model = "claude-opus-4-7"
Si l'identifiant est gere 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 modele ne suffit souvent pas cette fois-ci. Detaillons les ruptures.
4. Rupture 1 : pensee etendue supprimee, pensee adaptative
En 4.6, activer la pensee etendue (extended thinking) se faisait avec thinking: {type: "enabled", budget_tokens: N}. En 4.7, ce format renvoie une erreur 400.
On utilise desormais la « pensee adaptative » (adaptive thinking), ou le modele ajuste lui-meme sa profondeur de raisonnement. Par ailleurs, en 4.7, la pensee est desactivee par defaut : sans champ thinking, le modele repond sans reflexion 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: "..." }],
});
A retenir
- Plus besoin de controler
budget_tokensa la main - On choisit maintenant la « profondeur de reflexion » avec
output_config.effort - Sans le champ
thinking, le modele repond sans reflechir (comportement different de 4.6)
5. Rupture 2 : parametres de sampling supprimes
Toute valeur non par defaut pour temperature, top_p ou top_k renvoie une erreur 400. Anthropic assume ainsi sa ligne : le comportement du modele se regle 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 desormais le faire dans le prompt (« renvoie la meme reponse pour la meme question ») ou en combinant avec des structured outputs (schema JSON).
A l'inverse, les cas temperature=1.2 pour « reponses creatives » se convertissent en consignes de ton : « utilise des metaphores inattendues », etc.
6. Rupture 3 : contenu de pensee masque par defaut
En 4.6, une fois la pensee activee, la « pensee resumee » (summarized) arrivait dans le flux de reponse par defaut ; beaucoup d'UIs l'affichaient comme « en train de reflechir... ».
En 4.7, la specification change silencieusement : les blocs de pensee apparaissent toujours dans la reponse, mais le champ thinking est vide. Pour obtenir le contenu, il faut opter explicitement.
Symptomes
L'indicateur « en train de reflechir » tourne longtemps sans que rien n'apparaisse, ce qui allonge la perception du temps de reponse. 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 pensee n'est pas destinee a l'UI (traitement backend pur), laissez sans display.
7. Rupture 4 : nouveau tokeniseur (env. 1,35x)
Opus 4.7 utilise un nouveau tokeniseur. Il contribue aux gains de performance mais augmente le nombre de tokens d'un meme texte de 1,0 a 1,35x par rapport a 4.6.
Consequences :
- Les traitements cales sur un
max_tokensjuste suffisant peuvent etre coupes en cours de route - Les estimations de cout ou de longueur faites cote client (type
tiktoken) deviennent incorrectes - Les resultats de
/v1/messages/count_tokensdifferent entre 4.6 et 4.7 - Pour le meme prompt, cout et latence augmentent legerement
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 fenetre de 1M disponible au tarif API standard (pas de supplement long contexte). Malgre des tokens plus nombreux, la strategie « 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 reponse commencant 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 :
- Structured outputs (
output_config.format) -- contraindre la sortie avec un JSON schema - System prompt -- exiger explicitement : « renvoie uniquement du JSON, sans markdown ni preambule »
- Tool use -- recevoir la reponse en tant qu'appel de fonction (les arguments sont deja structures)
9. Choisir le bon niveau d'effort (xhigh nouveau)
output_config.effort accepte 5 valeurs. La nouveaute 4.7 : xhigh.
| effort | Position | Usage principal |
|---|---|---|
| max | Reflexion sans plafond | Benchmarks, problemes extremes ; attention aux rendements decroissants |
| xhigh (NEW) | Optimise code / agents | Standard pour Claude Code et les taches autonomes |
| high | Equilibre | Base minimale pour une tache a charge cognitive elevee |
| medium | Oriente cout | Tolere un peu moins de finesse pour gagner en prix et vitesse |
| low | Taches courtes et fixes | Classification, mise en forme, resume quand la latence prime |
Ceux qui reglaient budget_tokens a la main en 4.6 n'ont plus qu'a choisir l'effort en 4.7. Reperes empiriques :
- Agent de code (type Claude Code) : commencer en
xhigh - Chat QA ou reponse RAG :
highest une valeur sure - Tagging, extraction JSON, classification :
mediumoulow max: reserver a « une seule tache ou il faut penser tres fort, sans regarder le cout »
10. Reagir aux changements de comportement
Meme avec un code compatible API, la facon de repondre a un prompt differe de 4.6. Sans le savoir, vous risquez un « c'est devenu sec » en production.
10.1 La longueur s'adapte a la tache
4.7 ajuste la longueur en fonction de la complexite. Plus de verbosite uniforme imposee par « reponds toujours en 3 paragraphes ». A l'inverse, retirez les vieilles consignes de longueur pour observer le comportement naturel.
10.2 Les consignes sont prises plus litteralement
Particulierement aux niveaux d'effort bas. « Sois concis » ? La reponse est concise. « Donne-m'en 3 » ? Il n'en ajoute pas un quatrieme. Tres pratique, mais le remplissage « a la 4.6 » disparait quand la consigne est vague.
10.3 Le ton devient plus direct
Fini les « Excellente question ! », les emojis decoratifs, les formules d'accueil. Si vous voulez un ton chaleureux, specifiez-le via le system prompt.
10.4 Les mises a jour de progression sont integrees au tracking d'agent
Si vos agents orchestrant du « voici ce que je vais faire », « je suis en train de faire... » etaient faits a la main, 4.7 les genere nativement. Vous pouvez retirer ce scaffolding redondant.
10.5 Les sous-agents et appels d'outils se font plus discrets
Par defaut, moins de sous-agents, moins d'outils. Quand le raisonnement suffit, il raisonne plutot que d'appeler un outil. Ajustez vos attentes cote design d'agent.
10.6 Protections cybersecurite en temps reel
La securite offensive legitime (red-team, PoC de vulnerabilites) peut etre refusee selon le contexte. Si c'est votre usage de production, deposez une demande au Cyber Verification Program d'Anthropic.
10.7 Images haute resolution
4.7 traite nativement jusqu'a 2576 px. Attention : une image pleine resolution coute environ 3x plus de tokens. Pour un trafic image intense, (a) reaffectez max_tokens, (b) downsamplez avant envoi.
11. Changements recommandes (non obligatoires)
« Ca marche sans, mais c'est mieux si vous le faites. »
- Reevaluer
max_tokens: le nouveau tokeniseur gonfle aussi les sorties, partez d'une majoration de 1,2 a 1,35x pour re-tester - Auditer l'estimation de tokens cote client : si vous calculez la facturation ou la longueur vous-meme, basculez sur
count_tokensou ajustez vos coefficients - Introduire
task_budgets(beta) : pour les agents. Beta headertask-budgets-2026-03-13, minimum 20 000 tokens. C'est une limite indicative, pas un cap dur - Fixer
max_tokensa 64k ou plus : avecxhighoumax, pensee + sortie cumulees tirent fort - Downsampler les images : si la haute resolution n'apporte rien, reduisez avant envoi pour economiser tokens et couts
11.1 Exemple minimal de task_budgets (SDK officiel Python)
task_budgets etant en beta, passez par l'endpoint client.beta.messages.create et precisez l'argument betas. L'appel differe de celui des fonctionnalites 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"],
)
A retenir :
- Le minimum est 20 000 tokens. Toute valeur inferieure est refusee
max_tokensest un cap dur par requete (invisible pour le modele),task_budgetest une enveloppe indicative sur l'ensemble de la boucle d'agent (le modele en tient compte)- Pour couper strictement les couts, gardez
max_tokens; pour un equilibre qualite/efficacite, prefereztask_budget - Pour du travail tres ouvert (qualite > vitesse), ne specifiez pas
task_budget: le modele aurait tendance a 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 etapes suivantes :
- Supprimer les parametres de sampling : les utilisateurs historiques de Claude 3.x ont probablement
temperaturepartout. A retirer entierement - Faire le menage dans les beta headers :
effort-2025-11-24,fine-grained-tool-streaming-2025-05-14,interleaved-thinking-2025-05-14, etc., sont passes en GA. A supprimer - Changer d'endpoint : le code appelant
client.beta.messages.createbascule surclient.messages.create - Passer
output_formataoutput_config.format: le nom de cle a change - Parser les arguments d'outils : depuis 4.6, l'echappement JSON est different dans certains cas. Preferer
JSON.parse/json.loadsa un parsing manuel
Pour les nouveautes d'Opus 4.7 en elles-memes, lisez l'article pre-requis Claude Opus 4.7 : nouveautes, benchmarks et tarifs.
13. Checklist complete de migration
A imprimer et diffuser en equipe -- tous les items a plat.
13.1 Obligatoire (sinon erreur 400 ou comportement casse)
- Mettre a jour le nom de modele :
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 pensee, preciser
thinking.display: "summarized"
13.2 Reglage (optimisation cout / qualite)
- Mesurer a nouveau cout et latence avec le nouveau tokeniseur
- Ajuster
max_tokensd'environ 1,35x - Retester l'estimation client des tokens
- Pour les images, reaffecter les tokens en cas de haute resolution
- Avec
xhigh/max, fixermax_tokens ≥ 64k - Pour les agents, envisager
task_budgets(beta)
13.3 Revue des prompts et de l'exploitation
- Verifier adaptation de longueur, interpretation litterale, changement de ton sur les prompts reels
- Supprimer les vieilles consignes de longueur, reprendre une baseline
- Pour la securite offensive, demander l'acces au Cyber Verification Program
- Simplifier le scaffolding d'agent (messages de progression, etc.)
- Depuis 4.5 ou avant : retirer les beta headers et migrer vers
client.messages.create
14. Outil de migration automatisee
Si vous utilisez Claude Code, le skill Claude API d'Anthropic automatise les substitutions mecaniques. 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 depot, identifie les fichiers important le SDK anthropic et propose les modifications. Les ajustements de prompts et les mesures de benchmark ne peuvent pas etre automatises -- terminez avec la checklist.
FAQ
Q. Est-ce que changer juste le nom de modele suffit ?
Si votre code n'utilise ni temperature, ni top_p, ni top_k, ni thinking: {type: "enabled"}, ni de prefill, alors oui, ca tourne. Mais le nouveau tokeniseur peut couper des sorties longues : revisez max_tokens au passage.
Q. Sans champ thinking, 4.7 repond-il sans reflechir ?
Oui, la pensee est OFF par defaut en 4.7 -- comme c'etait deja le cas en 4.6 pour adaptive, mais les comportements actives par adaptive ne s'activent que si vous optez explicitement. Ajoutez thinking: {type: "adaptive"} et controlez l'intensite via output_config.effort.
Q. Si je supprime temperature, la sortie sera-t-elle identique a chaque fois ?
Non : Claude reste probabiliste, il y a toujours un peu de variabilite. Pour stabiliser fortement : (a) structured outputs (JSON schema) pour figer le format, (b) consignes explicites dans le prompt (« meme entree = meme sortie », « listes dans un ordre fixe », etc.).
Q. task_budgets est-il un cap dur ?
Non, c'est une limite « indicative » adressee au modele. Le respect n'est pas garanti. Pour contraindre les couts strictement, gardez max_tokens et une logique d'arret cote application. Utilisation en beta : header task-budgets-2026-03-13 obligatoire.
Q. Memes comportements entre Claude Code et API directe ?
Cote specs API, oui. Mais Claude Code applique des reglages par defaut (l'effort xhigh est quasiment le defaut pour coder) et certains skills activent task_budgets en arriere-plan. Si vous ressentez une difference, loggez le JSON des requetes pour comparer.
Q. Ma conso de tokens explose avec des images. Que faire ?
(1) Downsampler a moins de 2576 px avant envoi, (2) regrouper plusieurs images dans une planche unique, (3) OCR cote client et n'envoyer que le texte. Pour les usages exigeant la haute resolution (medical, plans, etc.), envoyez la pleine resolution et allouez plus de max_tokens.
Q. Je passe par Bedrock / Vertex AI. Meme procedure ?
Les changements de parametres sont identiques. Seuls l'identifiant de modele (par exemple anthropic.claude-opus-4-7 sur Bedrock) et la date de disponibilite changent d'une plateforme a l'autre -- suivez les annonces de chaque cloud. Les structures thinking et output_config sont communes.
Q. Jusqu'ou laisser faire l'outil de migration automatique ?
Le skill Claude API (/claude-api migrate) excelle sur les taches mecaniques : renommage, suppression des parametres de sampling, reecriture de la pensee etendue. En revanche, le ton des prompts, le controle de longueur et la mesure des benchmarks restent affaire humaine. Apres 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 specifications API pouvant evoluer, consultez la documentation officielle avant une mise en production.