Was this page helpful?
La réflexion étendue donne à Claude des capacités de raisonnement améliorées pour les tâches complexes, tout en fournissant différents niveaux de transparence dans son processus de réflexion étape par étape avant de livrer sa réponse finale.
Pour Claude Opus 4.6, nous recommandons d'utiliser la réflexion adaptative (thinking: {type: "adaptive"}) avec le paramètre d'effort au lieu du mode de réflexion manuel décrit sur cette page. La configuration manuelle thinking: {type: "enabled", budget_tokens: N} est dépréciée sur Opus 4.6 et sera supprimée dans une future version du modèle.
La réflexion étendue est prise en charge dans les modèles suivants :
claude-opus-4-6) — réflexion adaptative uniquement ; le mode manuel (type: "enabled") est dépréciéclaude-opus-4-5-20251101)claude-opus-4-1-20250805)claude-opus-4-20250514)claude-sonnet-4-6) — prend en charge à la fois la réflexion étendue manuelle avec le mode entrelacé et la réflexion adaptativeclaude-sonnet-4-5-20250929)claude-sonnet-4-20250514)claude-3-7-sonnet-20250219) (déprécié)claude-haiku-4-5-20251001)Le comportement de l'API diffère entre les modèles Claude Sonnet 3.7 et Claude 4, mais les formes d'API restent exactement les mêmes.
Pour plus d'informations, voir 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 où il produit son raisonnement interne. Claude intègre les idées de ce raisonnement avant de formuler une réponse finale.
La réponse de l'API inclura 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, voir la Référence de l'API Messages.
Voici un exemple d'utilisation de la réflexion étendue dans l'API Messages :
Pour activer la réflexion étendue, ajoutez un objet thinking, avec le paramètre type défini sur enabled et le budget_tokens défini sur un budget de jetons spécifié pour la réflexion étendue. Pour Claude Opus 4.6, nous recommandons d'utiliser type: "adaptive" à la place — voir Réflexion adaptative pour plus de détails. Bien que type: "enabled" avec budget_tokens soit toujours pris en charge sur Opus 4.6, il est déprécié et sera supprimé dans une future version.
Le paramètre budget_tokens détermine le nombre maximum de jetons que Claude est autorisé à utiliser pour son processus de raisonnement interne. Dans Claude 4 et les modèles ultérieurs, cette limite s'applique aux jetons de réflexion complète, 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 pour les problèmes complexes, bien que Claude ne puisse pas utiliser l'intégralité du budget alloué, en particulier pour les plages supérieures à 32k.
budget_tokens est déprécié sur Claude Opus 4.6 et sera supprimé dans une future version du modèle. Nous recommandons d'utiliser la réflexion adaptative avec le paramètre d'effort pour contrôler la profondeur de réflexion à la place.
Claude Opus 4.6 prend en charge jusqu'à 128K jetons de sortie. Les modèles antérieurs prennent en charge jusqu'à 64K jetons de sortie.
budget_tokens doit être défini sur une valeur inférieure à max_tokens. Cependant, lors de l'utilisation de la réflexion entrelacée avec des outils, vous pouvez dépasser cette limite car la limite de jetons devient votre fenêtre de contexte entière (200k jetons).
With extended thinking enabled, the Messages API for Claude 4 models returns a summary of Claude's full thinking process. Summarized thinking provides the full intelligence benefits of extended thinking, while preventing misuse. This is the default behavior when the display field on the thinking configuration is unset or set to "summarized".
Here are some important considerations for summarized thinking:
Claude Sonnet 3.7 continues to return full thinking output.
In rare cases where you need access to full thinking output for Claude 4 models, contact our sales team.
Vous pouvez diffuser en continu les réponses de réflexion étendue en utilisant les événements envoyés par le serveur (SSE).
Lorsque le streaming est activé pour la réflexion étendue, vous recevez le contenu de réflexion via les événements thinking_delta.
Pour plus de documentation sur le streaming via l'API Messages, voir Streaming Messages.
Voici comment gérer le streaming avec la réflexion :
Exemple de sortie de 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": ""}}
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"}Lors de l'utilisation du streaming avec la réflexion activée, vous remarquerez peut-être que le texte arrive parfois en plus gros morceaux alternant avec une livraison plus petite, jeton par jeton. C'est 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 modèle de livraison « par à-coups », avec des délais possibles entre les événements de streaming. Nous travaillons continuellement à l'amélioration de cette expérience, avec des mises à jour futures axées sur le streaming plus fluide du contenu de réflexion.
La réflexion étendue peut être utilisée aux côtés de l'utilisation d'outils, permettant à Claude de raisonner sur la sélection des outils et le traitement des résultats.
Lors de l'utilisation de la réflexion étendue avec l'utilisation d'outils, soyez conscient des limitations suivantes :
Limitation du choix d'outil : L'utilisation d'outils avec réflexion ne prend en charge que tool_choice: {"type": "auto"} (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 : Lors de l'utilisation d'outils, vous devez repasser les blocs thinking à l'API pour le dernier message d'assistant. Incluez le bloc complet non modifié à l'API pour maintenir la continuité du raisonnement.
Vous ne pouvez pas basculer la réflexion au milieu d'un tour d'assistant, y compris lors des boucles d'utilisation d'outils. L'intégralité du tour d'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 d'assistant. Un tour d'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 partie d'un seul tour d'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"]Bien qu'il y ait plusieurs messages d'API, la boucle d'utilisation d'outils fait conceptuellement partie d'une réponse d'assistant continue.
Lorsqu'un conflit de réflexion en milieu de tour se produit (comme basculer la réflexion activée ou désactivée lors d'une boucle d'utilisation d'outils), l'API désactive automatiquement la réflexion pour cette demande. Pour préserver la qualité du modèle et rester sur la distribution, l'API peut :
Cela signifie que la tentative de basculer la réflexion en milieu de tour ne causera pas d'erreur, mais la réflexion sera silencieusement désactivée pour cette demande. Pour confirmer si la réflexion était active, vérifiez la présence de blocs thinking dans la réponse.
Meilleure 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 complété 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 complétant le tour d'assistant avant de basculer la réflexion, vous vous assurez que la réflexion est réellement activée pour la nouvelle demande.
Le basculement des modes de réflexion invalide également la mise en cache des invites pour l'historique des messages. Pour plus de détails, voir la section Réflexion étendue avec mise en cache des invites.
Lors de l'utilisation d'outils, vous devez repasser les blocs thinking à l'API, et vous devez inclure le bloc complet non modifié à l'API. Ceci est critique 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 d'assistant antérieurs, nous suggérons de toujours repasser tous les blocs de réflexion à l'API pour toute conversation multi-tour. L'API va :
Lors du basculement des modes de réflexion lors d'une conversation, rappelez-vous que l'intégralité du tour d'assistant (y compris les boucles d'utilisation d'outils) doit fonctionner dans un seul mode de réflexion. Pour plus de détails, voir Basculer les modes de réflexion dans les conversations.
Lorsque Claude invoque des outils, il met en pause la construction d'une réponse pour attendre des informations externes. Lorsque les résultats des outils sont retournés, Claude continuera à construire cette réponse existante. Cela nécessite de préserver les blocs de réflexion lors de l'utilisation d'outils, pour quelques raisons :
Continuité du raisonnement : Les blocs de réflexion capturent le raisonnement étape par étape de Claude qui a conduit aux demandes d'outils. Lorsque vous postez les résultats des outils, inclure la réflexion originale garantit que Claude peut continuer son raisonnement à partir de là où il s'était arrêté.
Maintenance 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. Préserver les blocs de réflexion maintient ce flux conceptuel à travers plusieurs appels d'API. Pour plus d'informations sur la gestion du contexte, voir notre guide sur les fenêtres de contexte.
Important : Lors de la fourniture de blocs thinking, l'intégralité de la séquence de blocs thinking consécutifs doit correspondre aux résultats générés par le modèle lors de la demande originale ; vous ne pouvez pas réorganiser ou modifier la séquence de ces blocs.
La réflexion étendue avec utilisation d'outils dans les modèles Claude 4 prend en charge la réflexion entrelacée, qui permet à Claude de réfléchir entre les appels d'outils et de faire un raisonnement plus sophistiqué après avoir reçu les résultats des outils.
Avec la réflexion entrelacée, Claude peut :
Support du modèle :
interleaved-thinking-2025-05-14 est déprécié sur Opus 4.6 et est ignoré sans danger s'il est inclus.interleaved-thinking-2025-05-14 avec la réflexion étendue manuelle (thinking: {type: "enabled"}). Vous pouvez également utiliser la réflexion adaptative, qui active automatiquement la réflexion entrelacée.interleaved-thinking-2025-05-14 à votre demande d'API pour activer la réflexion entrelacée.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 dans un tour d'assistant.interleaved-thinking-2025-05-14 dans les demandes à n'importe quel modèle, sans effet (sauf Opus 4.6, où il est déprécié et ignoré sans danger).interleaved-thinking-2025-05-14 à n'importe quel modèle autre que Claude Sonnet 4.6, Claude Opus 4.5, Claude Opus 4.1, Opus 4, Sonnet 4.5 ou Sonnet 4, votre demande échouera.La mise en cache des invites avec réflexion a plusieurs considérations importantes :
Les tâches de réflexion étendue prennent souvent plus de 5 minutes pour se terminer. Envisagez d'utiliser la durée de cache d'une heure pour maintenir les accès au cache sur les sessions de réflexion plus longues et les flux de travail multi-étapes.
Suppression du contexte des blocs de réflexion
Modèles d'invalidation du cache
Bien que les blocs de réflexion soient supprimés pour la mise en cache et les calculs de contexte, ils doivent être préservés lors de la continuation des 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 jetons :
Comment cela fonctionne :
Flux d'exemple détaillé :
Demande 1 :
User: "What's the weather in Paris?"Réponse 1 :
[thinking_block_1] + [tool_use block 1]Demande 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 demande 2 écrit un cache du contenu de la demande (pas 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.
Demande 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 Claude Opus 4.5 et versions ultérieures (y compris Claude Opus 4.6), tous les blocs de réflexion précédents sont conservés par défaut. Pour les modèles plus anciens, parce qu'un bloc utilisateur sans résultat d'outil a été inclus, tous les blocs de réflexion précédents sont ignorés. Cette demande 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 explicitesDans les modèles Claude plus anciens (antérieurs à Claude Sonnet 3.7), si la somme des jetons de prompt et de max_tokens dépassait la fenêtre de contexte du modèle, le système ajusterait automatiquement max_tokens pour tenir dans la limite de contexte. Cela signifiait que vous pouviez définir une grande valeur max_tokens et le système la réduirait silencieusement selon les besoins.
Avec les modèles Claude 3.7 et 4, max_tokens (qui inclut votre budget de réflexion lorsque la réflexion est activée) est appliqué comme une limite stricte. Le système retournera maintenant une erreur de validation si les jetons de prompt + max_tokens dépassent la taille de la fenêtre de contexte.
Vous pouvez consulter notre guide sur les fenêtres de contexte pour une plongée 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 à connaître :
max_tokens pour ce tourLe diagramme ci-dessous démontre la gestion spécialisée des jetons lorsque la réflexion étendue est activée :
La fenêtre de contexte effective est calculée comme :
context window =
(current input tokens - previous thinking tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)Nous recommandons d'utiliser l'API de comptage des jetons pour obtenir des comptages de jetons précis pour votre cas d'utilisation spécifique, en particulier lorsque vous travaillez avec des conversations multi-tours qui incluent 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 retournés avec les résultats des outils.
Le calcul de la fenêtre de contexte effective pour la réflexion étendue avec 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 jetons pour la réflexion étendue avec utilisation d'outils :
Compte tenu du comportement de la fenêtre de contexte et de max_tokens avec la réflexion étendue pour les modèles Claude 3.7 et 4, vous devrez peut-être :
max_tokens à mesure que la longueur de votre prompt changeCe changement a été apporté pour fournir un comportement plus prévisible et transparent, en particulier à mesure que les limites de jetons maximums ont augmenté de manière significative.
Full thinking content is encrypted and returned in the signature field. This field is used to verify that thinking blocks were generated by Claude when passed back to the API.
It is only strictly necessary to send back thinking blocks when using tools with extended thinking. Otherwise you can omit thinking blocks from previous turns, or let the API strip them for you if you pass them back.
If sending back thinking blocks, we recommend passing everything back as you received it for consistency and to avoid potential issues.
Here are some important considerations on thinking encryption:
signature_delta inside a content_block_delta event just before the content_block_stop event.signature values are significantly longer in Claude 4 models than in previous models.signature field is an opaque field and should not be interpreted or parsed.signature values are compatible across platforms (Claude APIs, Amazon Bedrock, and Vertex AI). Values generated on one platform will be compatible with another.L'API Messages gère la réflexion différemment selon les modèles Claude Sonnet 3.7 et Claude 4, principalement dans le comportement de résumé.
Consultez le tableau ci-dessous pour une comparaison condensée :
| Fonctionnalité | Claude Sonnet 3.7 | Claude 4 Models (pré-Opus 4.5) | Claude Opus 4.5 | Claude Sonnet 4.6 | Claude Opus 4.6 (adaptive thinking) |
|---|---|---|---|---|---|
| Sortie de réflexion | Retourne la sortie de réflexion complète | Retourne la réflexion résumée | Retourne la réflexion résumée | Retourne la réflexion résumée | Retourne la réflexion résumée |
| Réflexion entrelacée | Non supportée | Supportée avec l'en-tête bêta interleaved-thinking-2025-05-14 | Supportée avec l'en-tête bêta interleaved-thinking-2025-05-14 | Supportée avec l'en-tête bêta interleaved-thinking-2025-05-14 ou automatique avec adaptive thinking | Automatique avec adaptive thinking (en-tête bêta non supporté) |
À partir de Claude Opus 4.5 (et continuant dans Claude Opus 4.6), les blocs de réflexion des tours d'assistant précédents sont préservés dans le contexte du modèle par défaut. Cela diffère des modèles antérieurs, qui suppriment les blocs de réflexion des tours 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, etc.), les blocs de réflexion des tours précédents continuent à être supprimés du contexte. Le comportement existant décrit dans la section Réflexion étendue avec mise en cache du prompt s'applique à ces modèles.
For complete pricing information including base rates, cache writes, cache hits, and output tokens, see the pricing page.
The thinking process incurs charges for:
When extended thinking is enabled, a specialized system prompt is automatically included to support this feature.
When using summarized thinking:
When using display: "omitted":
thinking field is empty)The billed output token count will not match the visible token count in the response. You are billed for the full thinking process, not the thinking content visible in the response.
max_tokens est supérieur à 21 333 pour éviter les délais d'expiration HTTP sur les demandes longues. C'est une validation côté client, pas une restriction 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 Streaming Messages pour plus de détails. Lors du streaming, soyez préparé à gérer à la fois les blocs de contenu de réflexion et de texte à mesure qu'ils arrivent.temperature ou top_k ainsi que l'utilisation forcée d'outils.top_p sur des valeurs entre 1 et 0,95.curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data \
'{
"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?"
}
]
}'curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-sonnet-4-6",
"max_tokens": 16000,
"stream": true,
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"messages": [
{
"role": "user",
"content": "What is the greatest common divisor of 1071 and 462?"
}
]
}'| Non préservée entre les tours |
| Non préservée entre les tours |
| Préservée par défaut |
| Préservée par défaut |
| Préservée par défaut |
Explorez des exemples pratiques de réflexion dans notre cookbook.