Cette fonctionnalité est éligible à la Zero Data Retention (ZDR). Lorsque votre organisation dispose d'un accord ZDR, les données envoyées via cette fonctionnalité ne sont pas stockées après le retour de la réponse de l'API.
La « extended thinking » (réflexion étendue) offre à Claude des capacités de raisonnement améliorées pour les tâches complexes, tout en fournissant différents niveaux de transparence sur son processus de réflexion étape par étape avant de livrer sa réponse finale.
La réflexion étendue est disponible sur tous les modèles Claude actuels. La manière de l'activer dépend du modèle :
| Modèle | Réflexion étendue manuelle (budget_tokens) | Recommandation |
|---|---|---|
| Claude Fable 5 Claude Mythos 5 | Non prise en charge (erreur 400) | Réflexion adaptative, toujours activée ; utilisez effort pour contrôler la profondeur |
| Claude Mythos Preview | Prise en charge | Réflexion adaptative, activée par défaut |
| Claude Opus 4.8 | Non prise en charge (erreur 400) | Réflexion adaptative avec effort |
| Claude Opus 4.7 | Non prise en charge (erreur 400) | Réflexion adaptative avec effort |
| Claude Opus 4.6 | Obsolète | Réflexion adaptative avec effort |
| Claude Sonnet 4.6 | Obsolète | Réflexion adaptative avec effort |
| Claude Opus 4.5 | Prise en charge | N/A |
| Claude Haiku 4.5 | Prise en charge | N/A |
| Modèles Claude 4 antérieurs | Prise en charge | N/A |
Avec la réflexion adaptative, le modèle décide quand et combien réfléchir pour chaque requête. Sur Claude Mythos Preview, Claude Fable 5 et Claude Mythos 5, thinking: {type: "disabled"} n'est pas pris en charge. Pour les différences de comportement par modèle (sortie de réflexion, réflexion entrelacée et préservation des blocs), consultez Différences de réflexion entre les versions de modèles.
Lorsque la réflexion étendue est activée, Claude crée des blocs de contenu thinking dans lesquels il produit son raisonnement interne. Claude intègre les enseignements de ce raisonnement avant d'élaborer une réponse finale.
La réponse de l'API inclut des blocs de contenu thinking, suivis de blocs de contenu text.
Voici un exemple du format de réponse par défaut :
{
"content": [
{
"type": "thinking",
"thinking": "Let me analyze this step by step...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}Pour plus d'informations sur le format de réponse de la réflexion étendue, consultez la Référence de l'API Messages.
Voici un exemple d'utilisation de la réflexion étendue dans l'API Messages :
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[
{
"role": "user",
"content": "Are there an infinite number of prime numbers such that n mod 4 == 3?",
}
],
)
# La réponse contient des blocs de réflexion résumés et des blocs de texte
for block in response.content:
if block.type == "thinking":
print(f"\nThinking summary: {block.thinking}")
elif block.type == "text":
print(f"\nResponse: {block.text}")Pour activer la réflexion étendue, ajoutez un objet thinking avec type défini sur enabled et une valeur budget_tokens. Sur les modèles où la réflexion étendue manuelle est obsolète ou non prise en charge (voir Modèles pris en charge), utilisez plutôt type: "adaptive" comme décrit dans Réflexion adaptative.
Le paramètre budget_tokens définit le nombre maximal de tokens que Claude peut utiliser pour son processus de raisonnement interne. Cette limite s'applique aux tokens de réflexion complets, et non à la sortie résumée. Des budgets plus importants peuvent améliorer la qualité des réponses en permettant une analyse plus approfondie des problèmes complexes, bien que Claude puisse ne pas utiliser la totalité du budget alloué, en particulier pour des valeurs supérieures à 32k.
budget_tokens est obsolète sur Claude Opus 4.6 et Claude Sonnet 4.6 et sera supprimé dans une future version de modèle. Utilisez plutôt la réflexion adaptative avec le paramètre effort pour contrôler la profondeur de réflexion.
Claude Mythos Preview, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6 et Claude Sonnet 4.6 prennent en charge jusqu'à 128k tokens de sortie. Claude Haiku 4.5 prend en charge jusqu'à 64k. Consultez la vue d'ensemble des modèles pour les limites des modèles hérités. Sur l'API Message Batches, l'en-tête bêta output-300k-2026-03-24 augmente la limite de sortie à 300k pour Claude Opus 4.8, Opus 4.7, Opus 4.6 et Sonnet 4.6.
budget_tokens doit être défini sur une valeur inférieure à max_tokens. Cependant, lorsque vous utilisez la réflexion entrelacée avec des outils, vous pouvez dépasser cette limite car la limite de tokens devient votre fenêtre de contexte entière. Étant donné que budget_tokens doit être inférieur à max_tokens, la réflexion étendue ne peut pas être combinée avec max_tokens: 0 (préchauffage du cache).
Le champ display de la configuration de réflexion contrôle la manière dont le contenu de réflexion est renvoyé dans les réponses de l'API. Il accepte deux valeurs :
"summarized" : les blocs de réflexion contiennent un texte de réflexion résumé. Consultez Réflexion résumée pour plus de détails. Il s'agit de la valeur par défaut sur Claude Opus 4.6, Claude Sonnet 4.6 et les modèles Claude 4 antérieurs."omitted" : les blocs de réflexion sont renvoyés avec un champ thinking vide. Le champ signature contient toujours la réflexion complète chiffrée pour assurer la continuité multi-tours (voir Chiffrement de la réflexion). Il s'agit de la valeur par défaut sur Claude Fable 5, Claude Mythos 5, Claude Opus 4.8, Claude Opus 4.7 et Claude Mythos Preview.Définir display: "omitted" est utile lorsque votre application n'affiche pas le contenu de réflexion aux utilisateurs. Le principal avantage est un délai plus court avant le premier token de texte lors du streaming : le serveur ignore entièrement le streaming des tokens de réflexion et ne transmet que la signature, de sorte que le streaming de la réponse textuelle finale commence plus tôt.
Voici quelques considérations importantes concernant la réflexion omise :
signature pour reconstruire la réflexion d'origine lors de la construction du prompt (voir Préservation des blocs de réflexion). Tout texte que vous placez dans le champ thinking d'un bloc omis renvoyé est ignoré.display n'est pas valide avec thinking.type: "disabled" (il n'y a rien à afficher).thinking.type: "adaptive" et que le modèle ignore la réflexion pour une requête simple, aucun bloc de réflexion n'est produit, quelle que soit la valeur de display.Le champ signature est identique, que display soit défini sur "summarized" ou "omitted". Le changement de valeur de display entre les tours d'une conversation est pris en charge.
Sur Claude Mythos Preview, display est défini par défaut sur "omitted". Les exemples de cette section passent display explicitement afin qu'ils s'appliquent à tous les modèles, mais sur Mythos Preview, vous pouvez le laisser non défini et obtenir le même comportement. Pour recevoir une réflexion résumée sur Mythos Preview, définissez explicitement display: "summarized".
Les pipelines automatisés qui n'exposent jamais le contenu de réflexion aux utilisateurs finaux peuvent éviter la surcharge liée à la réception des tokens de réflexion sur le réseau. Les applications sensibles à la latence obtiennent la même qualité de raisonnement sans attendre que le texte de réflexion soit diffusé en streaming avant que la réponse finale ne commence.
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000,
"display": "omitted",
},
messages=[
{"role": "user", "content": "What is 27 * 453?"},
],
)
for block in response.content:
if block.type == "thinking":
if block.thinking:
print(f"Thinking: {block.thinking}")
else:
print("Thinking: [omitted]")
elif block.type == "text":
print(f"Response: {block.text}")Lorsque display: "omitted" est défini, la réponse contient des blocs thinking avec un champ thinking vide :
{
"content": [
{
"type": "thinking",
"thinking": "",
"signature": "EosnCkYICxIMMb3LzNrMu..."
},
{
"type": "text",
"text": "The answer is 12,231."
}
]
}Lors du streaming avec display: "omitted", aucun événement thinking_delta n'est émis ; consultez Streaming de la réflexion pour la séquence d'événements.
Lorsque la réflexion étendue est activée, l'API Messages pour les modèles Claude 4 renvoie un résumé du processus de réflexion complet de Claude. La réflexion résumée offre tous les avantages d'intelligence de la réflexion étendue, tout en prévenant les utilisations abusives. Il s'agit du comportement par défaut sur les modèles Claude 4 lorsque le champ display de la configuration de réflexion n'est pas défini ou est défini sur "summarized". Sur Claude Fable 5, Claude Mythos 5, Claude Opus 4.8, Claude Opus 4.7 et Claude Mythos Preview, display est défini par défaut sur "omitted" ; vous devez donc définir explicitement display: "summarized" pour recevoir la réflexion résumée.
Voici quelques considérations importantes concernant la réflexion résumée :
Dans les rares cas où vous avez besoin d'accéder à la sortie de réflexion complète pour les modèles Claude 4, contactez l'équipe commerciale d'Anthropic.
Vous pouvez diffuser en streaming les réponses de réflexion étendue en utilisant les server-sent events (SSE).
Lorsque le streaming est activé pour la réflexion étendue, vous recevez le contenu de réflexion via des événements thinking_delta.
Lorsque display: "omitted" est défini, aucun événement thinking_delta n'est émis. Consultez Contrôler l'affichage de la réflexion.
Pour plus de documentation sur le streaming via l'API Messages, consultez Streaming Messages.
Voici comment gérer le streaming avec la réflexion :
client = anthropic.Anthropic()
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[
{
"role": "user",
"content": "What is the greatest common divisor of 1071 and 462?",
}
],
) as stream:
thinking_started = False
response_started = False
for event in stream:
if event.type == "content_block_start":
print(f"\nStarting {event.content_block.type} block...")
# Réinitialiser les indicateurs pour chaque nouveau bloc
thinking_started = False
response_started = False
elif event.type == "content_block_delta":
if event.delta.type == "thinking_delta":
if not thinking_started:
print("Thinking: ", end="", flush=True)
thinking_started = True
print(event.delta.thinking, end="", flush=True)
elif event.delta.type == "text_delta":
if not response_started:
print("Response: ", end="", flush=True)
response_started = True
print(event.delta.text, end="", flush=True)
elif event.type == "content_block_stop":
print("\nBlock complete.")Exemple de sortie en streaming :
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-sonnet-4-6", "stop_reason": null, "stop_sequence": null}}
event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": "", "signature": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "I need to find the GCD of 1071 and 462 using the Euclidean algorithm.\n\n1071 = 2 × 462 + 147"}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n462 = 3 × 147 + 21\n147 = 7 × 21 + 0\n\nSo GCD(1071, 462) = 21"}}
// Additional thinking deltas...
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "signature_delta", "signature": "EqQBCgIYAhIM1gbcDa9GJwZA2b3hGgxBdjrkzLoky3dl1pkiMOYds..."}}
event: content_block_stop
data: {"type": "content_block_stop", "index": 0}
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "text", "text": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "text_delta", "text": "The greatest common divisor of 1071 and 462 is **21**."}}
// Additional text deltas...
event: content_block_stop
data: {"type": "content_block_stop", "index": 1}
event: message_delta
data: {"type": "message_delta", "delta": {"stop_reason": "end_turn", "stop_sequence": null}}
event: message_stop
data: {"type": "message_stop"}Lorsque display: "omitted" est défini, le bloc de réflexion s'ouvre, un seul signature_delta arrive, et le bloc se ferme sans aucun événement thinking_delta. Le streaming du texte commence immédiatement après :
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"thinking","thinking":"","signature":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":"EosnCkYICxIMMb3LzNrMu..."}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: content_block_start
data: {"type":"content_block_start","index":1,"content_block":{"type":"text","text":""}}Lorsque vous utilisez le streaming avec la réflexion activée, vous pourriez remarquer que le texte arrive parfois en blocs plus volumineux alternant avec une livraison plus fine, token par token. Il s'agit d'un comportement attendu, en particulier pour le contenu de réflexion.
Le système de streaming doit traiter le contenu par lots pour des performances optimales, ce qui peut entraîner ce schéma de livraison « par blocs », avec des délais possibles entre les événements de streaming.
La réflexion étendue peut être utilisée conjointement avec l'utilisation d'outils, permettant à Claude de raisonner sur la sélection des outils et le traitement des résultats.
Lorsque vous utilisez la réflexion étendue avec l'utilisation d'outils, tenez compte des limitations suivantes :
Limitation du choix d'outil : l'utilisation d'outils avec la réflexion ne prend en charge que tool_choice: {"type": "auto"} (la valeur par défaut) ou tool_choice: {"type": "none"}. L'utilisation de tool_choice: {"type": "any"} ou tool_choice: {"type": "tool", "name": "..."} entraînera une erreur, car ces options forcent l'utilisation d'outils, ce qui est incompatible avec la réflexion étendue.
Préservation des blocs de réflexion : pendant l'utilisation d'outils, vous devez renvoyer les blocs thinking à l'API pour le dernier message de l'assistant. Incluez le bloc complet et non modifié dans l'API pour maintenir la continuité du raisonnement.
Vous ne pouvez pas basculer la réflexion au milieu d'un tour de l'assistant, y compris pendant les boucles d'utilisation d'outils. L'ensemble du tour de l'assistant doit fonctionner dans un seul mode de réflexion :
Du point de vue du modèle, les boucles d'utilisation d'outils font partie du tour de l'assistant. Un tour de l'assistant ne se termine pas tant que Claude n'a pas terminé sa réponse complète, qui peut inclure plusieurs appels d'outils et résultats.
Par exemple, cette séquence fait entièrement partie d'un seul tour de l'assistant :
User: "What's the weather in Paris?"
Assistant: [thinking] + [tool_use: get_weather]
User: [tool_result: "20°C, sunny"]
Assistant: [text: "The weather in Paris is 20°C and sunny"]Même s'il y a plusieurs messages d'API, la boucle d'utilisation d'outils fait conceptuellement partie d'une seule réponse continue de l'assistant.
Lorsqu'un conflit de réflexion survient en milieu de tour (par exemple, activer ou désactiver la réflexion pendant une boucle d'utilisation d'outils), l'API désactive automatiquement la réflexion pour cette requête. Pour préserver la qualité du modèle et rester dans la distribution, l'API peut :
Cela signifie que tenter de basculer la réflexion en milieu de tour ne provoquera pas d'erreur, mais la réflexion sera silencieusement désactivée pour cette requête. Pour confirmer si la réflexion était active, vérifiez la présence de blocs thinking dans la réponse.
Bonne pratique : planifiez votre stratégie de réflexion au début de chaque tour plutôt que d'essayer de basculer en milieu de tour.
Exemple : basculer la réflexion après avoir terminé un tour
User: "What's the weather?"
Assistant: [tool_use] (thinking disabled)
User: [tool_result]
Assistant: [text: "It's sunny"]
User: "What about tomorrow?"
Assistant: [thinking] + [text: "..."] (thinking enabled - new turn)En terminant le tour de l'assistant avant de basculer la réflexion, vous vous assurez que la réflexion est réellement activée pour la nouvelle requête.
Basculer entre les modes de réflexion invalide également la mise en cache des prompts pour l'historique des messages. Pour plus de détails, consultez la section Réflexion étendue avec la mise en cache des prompts.
Pendant l'utilisation d'outils, vous devez renvoyer les blocs thinking à l'API, et vous devez inclure le bloc complet et non modifié dans l'API. Ceci est essentiel pour maintenir le flux de raisonnement du modèle et l'intégrité de la conversation.
Bien que vous puissiez omettre les blocs thinking des tours précédents du rôle assistant, renvoyez toujours tous les blocs de réflexion à l'API pour toute conversation multi-tours. L'API :
Les blocs conservés dépendent du modèle. Consultez Préservation des blocs de réflexion par modèle pour les valeurs par défaut par classe. Pour remplacer la valeur par défaut, utilisez la stratégie d'édition de contexte clear_thinking_20251015.
Lorsque vous basculez entre les modes de réflexion pendant une conversation, n'oubliez pas que l'ensemble du tour de l'assistant (y compris les boucles d'utilisation d'outils) doit fonctionner dans un seul mode de réflexion. Pour plus de détails, consultez Basculer entre les modes de réflexion dans les conversations.
Lorsque Claude invoque des outils, il met en pause la construction de sa réponse pour attendre des informations externes. Lorsque les résultats des outils sont renvoyés, Claude continue de construire cette réponse existante. Cela nécessite de préserver les blocs de réflexion pendant l'utilisation d'outils, pour plusieurs raisons :
Continuité du raisonnement : les blocs de réflexion capturent le raisonnement étape par étape de Claude qui a conduit aux requêtes d'outils. Lorsque vous publiez les résultats des outils, inclure la réflexion originale garantit que Claude peut poursuivre son raisonnement là où il s'était arrêté.
Maintien du contexte : bien que les résultats des outils apparaissent comme des messages utilisateur dans la structure de l'API, ils font partie d'un flux de raisonnement continu. La préservation des blocs de réflexion maintient ce flux conceptuel à travers plusieurs appels d'API. Pour plus d'informations sur la gestion du contexte, consultez le guide sur les fenêtres de contexte.
Important : lorsque vous fournissez des blocs thinking, la séquence entière de blocs thinking consécutifs doit correspondre aux sorties générées par le modèle lors de la requête originale ; vous ne pouvez pas réorganiser ou modifier la séquence de ces blocs.
Si les blocs de réflexion sont modifiés, l'API renvoie une erreur 400 invalid_request_error dont le message contient `thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modified. La cause la plus fréquente est un code d'application qui filtre les blocs de contenu par type et supprime les blocs redacted_thinking, ou qui reconstruit le message de l'assistant au lieu de le renvoyer tel quel. Consultez Les blocs de réflexion ne peuvent pas être modifiés pour l'erreur complète et les étapes de correction.
La réflexion étendue avec l'utilisation d'outils dans les modèles Claude 4 prend en charge la « interleaved thinking » (réflexion entrelacée), qui permet à Claude de réfléchir entre les appels d'outils et d'effectuer un raisonnement plus sophistiqué après avoir reçu les résultats des outils.
Avec la réflexion entrelacée, Claude peut :
La manière d'activer la réflexion entrelacée dépend du modèle :
| Modèle | Réflexion entrelacée |
|---|---|
| Claude Fable 5 Claude Mythos 5 | Automatique avec la réflexion adaptative. Le raisonnement entre les outils est déplacé dans des blocs de réflexion. Aucun en-tête bêta nécessaire. |
| Claude Mythos Preview | Automatique. Chaque étape de raisonnement entre les outils est déplacée dans un bloc de réflexion au lieu de texte brut. Aucun en-tête bêta nécessaire ni pris en charge. |
| Claude Opus 4.8 | Automatique avec la réflexion adaptative (le seul mode de réflexion pris en charge). Aucun en-tête bêta nécessaire. |
| Claude Opus 4.7 | Automatique avec la réflexion adaptative (le seul mode de réflexion pris en charge). Aucun en-tête bêta nécessaire. |
| Claude Opus 4.6 | Automatique avec la réflexion adaptative. L'en-tête bêta interleaved-thinking-2025-05-14 est obsolète et ignoré sans erreur s'il est inclus. |
| Claude Sonnet 4.6 | Automatique avec la réflexion adaptative (recommandé). L'en-tête bêta avec type: "enabled" manuel est toujours fonctionnel mais obsolète. |
| Claude Opus 4.5 | Ajoutez l'en-tête bêta interleaved-thinking-2025-05-14 à votre requête API. |
| Claude Haiku 4.5 | Non prise en charge. L'en-tête bêta est accepté sur l'API Claude mais ignoré. |
| Modèles Claude 4 antérieurs | Ajoutez l'en-tête bêta interleaved-thinking-2025-05-14 à votre requête API. |
Les modèles Claude 4 antérieurs désignent ici Claude Sonnet 4.5, Claude Opus 4.1 (obsolète), Claude Opus 4 (retiré, sauf sur Vertex AI) et Claude Sonnet 4 (retiré, sauf sur Bedrock et Vertex AI).
Voici quelques considérations importantes pour la réflexion entrelacée :
budget_tokens peut dépasser le paramètre max_tokens, car il représente le budget total sur tous les blocs de réflexion au sein d'un tour de l'assistant.interleaved-thinking-2025-05-14 dans les requêtes vers n'importe quel modèle sans renvoyer d'erreur. Sur les modèles qui ne prennent pas en charge la réflexion entrelacée, l'en-tête est ignoré. Sur Claude Opus 4.8, Claude Opus 4.7 et Claude Opus 4.6, il est obsolète et ignoré sans erreur. Sur Claude Mythos Preview, il n'est pas nécessaire et est ignoré sans erreur.interleaved-thinking-2025-05-14 à un modèle autre que Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 4.6, Claude Opus 4.5, Claude Opus 4.1 (obsolète), Opus 4 (retiré, sauf sur Vertex AI), Sonnet 4.5 ou Sonnet 4 (retiré, sauf sur Bedrock et Vertex AI), votre requête échouera.La mise en cache des prompts avec la réflexion comporte plusieurs considérations importantes :
Les tâches de réflexion étendue prennent souvent plus de 5 minutes à s'exécuter. Envisagez d'utiliser la durée de cache d'une heure pour maintenir les correspondances de cache lors de sessions de réflexion plus longues et de workflows multi-étapes.
Suppression du contexte des blocs de réflexion
Schémas d'invalidation du cache
Sur les modèles Opus/Sonnet antérieurs et tous les modèles Haiku, les blocs de réflexion sont supprimés pour la mise en cache et les calculs de contexte ; sur Opus 4.5+ et Sonnet 4.6+, ils sont conservés par défaut. Dans les deux cas, ils doivent être préservés lors de la poursuite de conversations avec l'utilisation d'outils, en particulier avec la réflexion entrelacée.
Lors de l'utilisation de la réflexion étendue avec l'utilisation d'outils, les blocs de réflexion présentent un comportement de mise en cache spécifique qui affecte le comptage des tokens :
Fonctionnement :
Exemple de flux détaillé :
Requête 1 :
User: "What's the weather in Paris?"Réponse 1 :
[thinking_block_1] + [tool_use block 1]Requête 2 :
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True]Réponse 2 :
[thinking_block_2] + [text block 2]La requête 2 écrit un cache du contenu de la requête (pas de la réponse). Le cache inclut le message utilisateur original, le premier bloc de réflexion, le bloc d'utilisation d'outil et le résultat de l'outil.
Requête 3 :
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [thinking_block_2] + [text block 2],
User: [Text response, cache=True]Pour Opus 4.5+ et Sonnet 4.6+, tous les blocs de réflexion précédents sont conservés par défaut. Pour les modèles Opus/Sonnet antérieurs et tous les modèles Haiku, étant donné qu'un bloc utilisateur qui n'est pas un résultat d'outil a été inclus, tous les blocs de réflexion précédents sont ignorés et supprimés du contexte. Cette requête sera traitée de la même manière que :
User: ["What's the weather in Paris?"],
Assistant: [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [text block 2],
User: [Text response, cache=True]Points clés :
cache_control explicitesmax_tokens (qui inclut votre budget de réflexion lorsque la réflexion est activée) est appliqué comme une limite stricte. Sur les modèles Claude 4.5 et plus récents, si les tokens d'entrée plus max_tokens dépassent la taille de la fenêtre de contexte, l'API accepte la requête. Si la génération atteint ensuite la limite de la fenêtre de contexte, elle s'arrête avec stop_reason: "model_context_window_exceeded". Sur les modèles antérieurs, l'API renvoie plutôt une erreur de validation. Consultez Gestion des raisons d'arrêt.
Vous pouvez consulter le guide sur les fenêtres de contexte pour une analyse plus approfondie.
Lors du calcul de l'utilisation de la fenêtre de contexte avec la réflexion activée, il y a quelques considérations à prendre en compte :
max_tokens pour ce tourLe diagramme ci-dessous illustre la gestion spécialisée des tokens lorsque la réflexion étendue est activée :
La fenêtre de contexte effective est calculée comme suit :
context window =
(current input tokens - previous thinking tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)Utilisez l'API de comptage de tokens pour obtenir des comptages de tokens précis pour votre cas d'utilisation spécifique, en particulier lorsque vous travaillez avec des conversations multi-tours qui incluent de la réflexion.
Lors de l'utilisation de la réflexion étendue avec l'utilisation d'outils, les blocs de réflexion doivent être explicitement préservés et renvoyés avec les résultats des outils.
Le calcul de la fenêtre de contexte effective pour la réflexion étendue avec l'utilisation d'outils devient :
context window =
(current input tokens + previous thinking tokens + tool use tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)Le diagramme ci-dessous illustre la gestion des tokens pour la réflexion étendue avec l'utilisation d'outils :
Compte tenu du comportement de la fenêtre de contexte et de max_tokens avec la réflexion étendue, vous devrez peut-être :
max_tokens à mesure que la longueur de votre prompt changeLe contenu complet de la réflexion est chiffré et renvoyé dans le champ signature. Ce champ est utilisé pour vérifier que les blocs de réflexion ont bien été générés par Claude lorsqu'ils sont renvoyés à l'API.
Il n'est strictement nécessaire de renvoyer les blocs de réflexion que lorsque vous utilisez des outils avec la réflexion étendue. Sinon, vous pouvez omettre les blocs de réflexion des tours précédents. Si vous les renvoyez, le fait que l'API les conserve ou les supprime dépend du modèle : Opus 4.5+ et Sonnet 4.6+ les conservent dans le contexte par défaut ; les modèles Opus/Sonnet antérieurs et tous les modèles Haiku les suppriment. Consultez la section édition du contexte pour configurer ce comportement.
Si vous renvoyez des blocs de réflexion, renvoyez tout exactement comme vous l'avez reçu, par souci de cohérence et pour éviter d'éventuels problèmes.
Voici quelques considérations importantes concernant le chiffrement de la réflexion :
signature_delta à l'intérieur d'un événement content_block_delta, juste avant l'événement content_block_stop.signature sont nettement plus longues dans les modèles Claude 4 que dans les modèles précédents.signature est un champ opaque et ne doit pas être interprété ni analysé.signature sont compatibles entre les plateformes (API Claude, Amazon Bedrock et Vertex AI). Les valeurs générées sur une plateforme seront compatibles avec une autre.En plus des blocs thinking normaux, l'API peut renvoyer des blocs redacted_thinking. Un bloc redacted_thinking contient du contenu de réflexion chiffré dans un champ data, sans résumé lisible :
{
"type": "redacted_thinking",
"data": "..."
}Le champ data est opaque et chiffré. Comme le champ signature sur les blocs de réflexion normaux, vous devez renvoyer les blocs redacted_thinking à l'API sans modification lors de la poursuite d'une conversation multi-tours avec des outils.
Si votre code filtre les blocs de contenu par type (par exemple, block.type == "thinking") lors du renvoi des réponses avec l'utilisation d'outils, incluez également les blocs redacted_thinking. Filtrer uniquement sur block.type == "thinking" supprime silencieusement les blocs redacted_thinking et rompt le protocole multi-tours décrit ci-dessus.
Les blocs redacted_thinking sont un type de bloc de contenu distinct renvoyé par l'API lorsque des portions de réflexion sont expurgées pour des raisons de sécurité. Ceci est distinct de l'option display: "omitted", qui renvoie des blocs thinking normaux avec un champ thinking vide.
L'API Messages gère la réflexion différemment selon les versions de modèles Claude. Le tableau suivant donne une comparaison condensée :
| Modèle | budget_tokens | Sortie de réflexion | Réflexion entrelacée | Préservation des blocs |
|---|---|---|---|---|
| Claude Fable 5 Claude Mythos 5 | Non pris en charge | Omise par défaut1 | Automatique2 | Voir Réflexion adaptative |
| Claude Mythos Preview | Pris en charge | Omise par défaut1 | Automatique2 | Préservés3 |
| Claude Opus 4.8 | Non pris en charge | Omise par défaut1 | Automatique2 | Préservés |
| Claude Opus 4.7 | Non pris en charge | Omise par défaut1 | Automatique2 | Préservés |
| Claude Opus 4.6 | Obsolète | Résumée | Automatique2 | Préservés |
| Claude Sonnet 4.6 | Obsolète | Résumée | Automatique, ou en-tête bêta | Préservés |
| Claude Opus 4.5 | Pris en charge | Résumée | En-tête bêta | Préservés |
| Claude Haiku 4.5 | Pris en charge | Résumée | Non prise en charge | Dernier tour uniquement |
| Modèles Claude 4 antérieurs | Pris en charge | Résumée | En-tête bêta | Dernier tour uniquement |
1 Définissez display: "summarized" pour recevoir une réflexion résumée. Sur Claude Fable 5, Claude Mythos 5 et Claude Mythos Preview, les tokens de réflexion bruts ne sont jamais renvoyés.
2 Avec la réflexion adaptative. L'en-tête bêta interleaved-thinking-2025-05-14 n'est pas nécessaire sur ces modèles et est ignoré sans erreur s'il est inclus.
3 Les blocs sont supprimés lors de la poursuite de la conversation sur un modèle qui ne prend pas en charge le format de réflexion Mythos.
La préservation par défaut des blocs de réflexion des tours précédents de l'assistant dans le contexte dépend de la classe de modèle. Opus : Claude Opus 4.5 et les modèles Opus ultérieurs conservent tous les blocs de réflexion précédents ; Claude Opus 4.1 (obsolète) et les modèles Opus antérieurs ne conservent que la réflexion du dernier tour de l'assistant. Sonnet : Claude Sonnet 4.6 et les modèles Sonnet ultérieurs conservent tout ; Claude Sonnet 4.5 et les modèles Sonnet antérieurs ne conservent que le dernier tour. Haiku : tous les modèles Haiku jusqu'à Claude Haiku 4.5 ne conservent que le dernier tour. Claude Mythos Preview conserve également tous les blocs de réflexion précédents.
Avantages de la préservation des blocs de réflexion :
Considérations importantes :
Pour les modèles antérieurs (Claude Sonnet 4.5, Opus 4.1 (obsolète), etc.), les blocs de réflexion des tours précédents continuent d'être supprimés du contexte. Le comportement existant décrit dans la section Réflexion étendue avec la mise en cache des prompts s'applique à ces modèles.
Pour obtenir des informations complètes sur la tarification, y compris les tarifs de base, les écritures en cache, les lectures depuis le cache et les tokens de sortie, consultez la page de tarification.
Le processus de réflexion entraîne des frais pour :
Lorsque la réflexion étendue est activée, une invite système spécialisée est automatiquement incluse pour prendre en charge cette fonctionnalité.
Lors de l'utilisation de la réflexion résumée :
Lors de l'utilisation de display: "omitted" :
thinking est vide)Le nombre de tokens de sortie facturés ne correspondra pas au nombre de tokens visibles dans la réponse. Vous êtes facturé pour l'intégralité du processus de réflexion, et non pour le contenu de réflexion visible dans la réponse.
Pour connaître le nombre de tokens de sortie facturés consacrés au raisonnement interne, consultez usage.output_tokens_details.thinking_tokens dans la réponse. Cette valeur reflète le raisonnement brut généré par le modèle (et non le texte résumé renvoyé dans le corps de la réponse) et est toujours inférieure ou égale à output_tokens. Soustrayez-la de output_tokens pour obtenir une approximation de la partie de la sortie qui ne relève pas du raisonnement.
{
"usage": {
"input_tokens": 25,
"output_tokens": 348,
"output_tokens_details": {
"thinking_tokens": 312
}
}
}output_tokens reste le total inclusif et faisant autorité utilisé pour la facturation. output_tokens_details est une ventilation en lecture seule destinée à l'observabilité.
usage.output_tokens_details.thinking_tokens dans la réponse indique combien de tokens de sortie facturés correspondaient au raisonnement interne. En mode streaming, cette répartition n'apparaît que sur l'événement final message_delta.max_tokens est supérieur à 21 333 afin d'éviter les délais d'expiration HTTP sur les requêtes de longue durée. Il s'agit d'une validation côté client, et non d'une restriction de l'API. Si vous n'avez pas besoin de traiter les événements de manière incrémentale, utilisez .stream() avec .get_final_message() (Python) ou .finalMessage() (TypeScript) pour obtenir l'objet Message complet sans gérer les événements individuels. Consultez Messages en streaming pour plus de détails. Lors du streaming, préparez-vous à gérer à la fois les blocs de contenu de réflexion et de texte au fur et à mesure de leur arrivée.display: "omitted" dans la configuration de réflexion pour réduire le délai avant le premier token de texte. Consultez Contrôler l'affichage de la réflexion.temperature ou top_k, ni avec l'utilisation forcée d'outils.top_p à des valeurs comprises entre 1 et 0,95.Laissez Claude décider quand et dans quelle mesure utiliser la réflexion étendue.
Explorez des exemples pratiques de réflexion dans le cookbook.
Découvrez les meilleures pratiques d'ingénierie de prompts pour la réflexion étendue.
Was this page helpful?