Sommaire
- 1. À qui s'adresse ce guide
- 2. Résumé en 3 lignes -- pour aller vite
- 3. Mettre à jour le nom de modèle
- 4. Rupture 1 : pensée étendue supprimée, pensée adaptative
- 5. Rupture 2 : paramètres de sampling supprimés
- 6. Rupture 3 : contenu de pensée masque par défaut
- 7. Rupture 4 : nouveau tokeniseur (env. 1,35x)
- 8. Rupture 5 : prefill supprime
- 9. Choisir le bon niveau d'effort (xhigh nouveau)
- 10. Réagir aux changements de comportement
- 11. Changements recommandés (non obligatoires)
- 12. Migration depuis Opus 4.5 / 4.1
- 13. Checklist complète de migration
- 14. Outil de migration automatisée
- FAQ
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-6via 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) outemperatureen 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.
Claude Opus 4.7
Guide de migration complet
Tous les changements cassants et leurs solutions
2. Résumé en 3 lignes -- pour aller vite
Le TL;DR pour les pressees.
- Changer le nom de modèle
claude-opus-4-6->claude-opus-4-7(et mettre le SDK à jour) - Trois ruptures majeures : suppression de
thinking: enabled(remplace par pensée adaptative + effort), suppression detemperature/top_p/top_k, nouveau tokeniseur (jusqu'à 1,35x de tokens pour le même texte) - 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_tokensjuste 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_tokensdiffè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 :
- Structured outputs (
output_config.format) -- contraindre la sortie avec un JSON schéma - System prompt -- exiger explicitement : « renvoie uniquement du JSON, sans markdown ni préambule »
- 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
9. Choisir le bon niveau d'effort (xhigh nouveau)
output_config.effort accepte 5 valeurs. La nouveauté 4.7 : xhigh.
| effort | Position | Usage principal |
|---|---|---|
| max | Réflexion sans plafond | Benchmarks, problèmes extrêmes ; attention aux rendements décroissants |
| xhigh (NEW) | Optimisé code / agents | Standard pour Claude Code et les tâches autonomes |
| high | Équilibre | Base minimale pour une tâche à charge cognitive élevée |
| medium | Orienté coût | Tolère un peu moins de finesse pour gagner en prix et vitesse |
| low | Tâches courtes et fixes | Classification, 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 :
highest une valeur sûre - Tagging, extraction JSON, classification :
mediumoulow 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.
11. Changements recommandés (non obligatoires)
« Ça marche sans, mais c'est mieux si vous le faites. »
- Réévaluer
max_tokens: le nouveau tokeniseur gonfle aussi les sorties, partez d'une majoration de 1,2 à 1,35x pour re-tester - Auditer l'estimation de tokens côté client : si vous calculez la facturation ou la longueur vous-même, basculez sur
count_tokensou ajustez vos coefficients - Introduire
task_budgets(bêta) : pour les agents. Bêta headertask-budgets-2026-03-13, minimum 20 000 tokens. C'est une limite indicative, pas un cap dur - Fixer
max_tokensà 64k ou plus : avecxhighoumax, pensée + sortie cumulees tirent fort - 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_tokensest un cap dur par requête (invisible pour le modèle),task_budgetest 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éreztask_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
temperaturepartout. À 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.createbascule surclient.messages.create - Passer
output_formataoutput_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
claude-opus-4-6 → claude-opus-4-7temperature / top_p / top_kthinking: enabled par adaptive + effortdisplay: "summarized"max_tokens Augmenter d'environ 1,35× à titre indicatifmax_tokens supplémentaire ou sous-échantillonnermax_tokens ≥ 64ktask_budgets (bêta)client.messages.createÀ 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_tokensd'environ 1,35x - Retester l'estimation client des tokens
- Pour les images, reaffecter les tokens en cas de haute résolution
- Avec
xhigh/max, fixermax_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.