Was this page helpful?
O pensamento adaptativo é a forma recomendada de usar pensamento estendido com Claude Opus 4.6. Em vez de definir manualmente um orçamento de tokens de pensamento, o pensamento adaptativo permite que Claude decida dinamicamente quando e quanto pensar com base na complexidade de cada solicitação.
O pensamento adaptativo impulsiona consistentemente um desempenho melhor do que o pensamento estendido com um budget_tokens fixo, e recomendamos migrar para o pensamento adaptativo para obter as respostas mais inteligentes do Opus 4.6. Nenhum cabeçalho beta é necessário.
O pensamento adaptativo é suportado nos seguintes modelos:
claude-opus-4-6)thinking.type: "enabled" e budget_tokens estão descontinuados no Opus 4.6 e serão removidos em um lançamento de modelo futuro. Use thinking.type: "adaptive" com o parâmetro de esforço em vez disso.
Modelos mais antigos (Sonnet 4.5, Opus 4.5, etc.) não suportam pensamento adaptativo e exigem thinking.type: "enabled" com budget_tokens.
No modo adaptativo, o pensamento é opcional para o modelo. Claude avalia a complexidade de cada solicitação e decide se e quanto pensar. No nível de esforço padrão (high), Claude quase sempre pensará. Em níveis de esforço mais baixos, Claude pode pular o pensamento para problemas mais simples.
O pensamento adaptativo também ativa automaticamente pensamento intercalado. Isso significa que Claude pode pensar entre chamadas de ferramentas, tornando-o especialmente eficaz para fluxos de trabalho de agentes.
Defina thinking.type como "adaptive" em sua solicitação de API:
Você pode combinar pensamento adaptativo com o parâmetro de esforço para orientar quanto Claude pensa. O nível de esforço atua como orientação suave para a alocação de pensamento de Claude:
| Nível de esforço | Comportamento de pensamento |
|---|---|
max | Claude sempre pensa sem restrições na profundidade do pensamento. Apenas Opus 4.6 — solicitações usando max em outros modelos retornarão um erro. |
high (padrão) | Claude sempre pensa. Fornece raciocínio profundo em tarefas complexas. |
medium | Claude usa pensamento moderado. Pode pular pensamento para consultas muito simples. |
low | Claude minimiza o pensamento. Pula pensamento para tarefas simples onde a velocidade é mais importante. |
O pensamento adaptativo funciona perfeitamente com streaming. Os blocos de pensamento são transmitidos via eventos thinking_delta assim como no modo de pensamento manual:
| Modo | Configuração | Disponibilidade | Quando usar |
|---|---|---|---|
| Adaptativo | thinking: {type: "adaptive"} | Opus 4.6 | Claude decide quando e quanto pensar. Use effort para orientar. |
| Manual | thinking: {type: "enabled", budget_tokens: N} | Todos os modelos. Descontinuado no Opus 4.6 — use modo adaptativo em vez disso. | Quando você precisa de controle preciso sobre o gasto de tokens de pensamento. |
| Desabilitado | Omita o parâmetro thinking | Todos os modelos | Quando você não precisa de pensamento estendido e deseja a menor latência. |
O pensamento adaptativo está atualmente disponível no Opus 4.6. Modelos mais antigos suportam apenas type: "enabled" com budget_tokens. No Opus 4.6, type: "enabled" com budget_tokens ainda é aceito, mas descontinuado — recomendamos usar pensamento adaptativo com o parâmetro de esforço em vez disso.
Ao usar pensamento adaptativo, os turnos anteriores do assistente não precisam começar com blocos de pensamento. Isso é mais flexível do que o modo manual, onde a API impõe que os turnos com pensamento habilitado começam com um bloco de pensamento.
Solicitações consecutivas usando pensamento adaptive preservam pontos de interrupção de cache de prompt. No entanto, alternar entre modos de pensamento adaptive e enabled/disabled quebra pontos de interrupção de cache para mensagens. Prompts de sistema e definições de ferramentas permanecem em cache independentemente de mudanças de modo.
O comportamento de acionamento do pensamento adaptativo é orientável por prompt. Se Claude está pensando mais ou menos frequentemente do que você gostaria, você pode adicionar orientação ao seu prompt de sistema:
Extended thinking adds latency and should only be used when it
will meaningfully improve answer quality — typically for problems
that require multi-step reasoning. When in doubt, respond directly.Orientar Claude a pensar com menos frequência pode reduzir a qualidade em tarefas que se beneficiam do raciocínio. Meça o impacto em suas cargas de trabalho específicas antes de implantar ajuste baseado em prompt em produção. Considere testar com níveis de esforço mais baixos primeiro.
Use max_tokens como um limite rígido na saída total (pensamento + texto de resposta). O parâmetro effort fornece orientação suave adicional sobre quanto pensamento Claude aloca. Juntos, esses lhe dão controle efetivo sobre o custo.
Nos níveis de esforço high e max, Claude pode pensar mais extensivamente e pode ser mais provável que esgote o orçamento max_tokens. Se você observar stop_reason: "max_tokens" em respostas, considere aumentar max_tokens para dar mais espaço ao modelo, ou diminuir o nível de esforço.
Os conceitos a seguir se aplicam a todos os modelos que suportam pensamento estendido, independentemente de você usar modo adaptativo ou manual.
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.
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.
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 - it exists solely for verification purposes.signature values are compatible across platforms (Claude APIs, Amazon Bedrock, and Vertex AI). Values generated on one platform will be compatible with another.Occasionally Claude's internal reasoning will be flagged by our safety systems. When this occurs, we encrypt some or all of the thinking block and return it to you as a redacted_thinking block. redacted_thinking blocks are decrypted when passed back to the API, allowing Claude to continue its response without losing context.
When building customer-facing applications that use extended thinking:
Here's an example showing both normal and redacted thinking blocks:
{
"content": [
{
"type": "thinking",
"thinking": "Let me analyze this step by step...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "redacted_thinking",
"data": "EmwKAhgBEgy3va3pzix/LafPsn4aDFIT2Xlxh0L5L8rLVyIwxtE3rAFBa8cr3qpPkNRj2YfWXGmKDxH4mPnZ5sQ7vB9URj2pLmN3kF8/dW5hR7xJ0aP1oLs9yTcMnKVf2wRpEGjH9XZaBt4UvDcPrQ..."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}Seeing redacted thinking blocks in your output is expected behavior. The model can still use this redacted reasoning to inform its responses while maintaining safety guardrails.
If you need to test redacted thinking handling in your application, you can use this special test string as your prompt: ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB
When passing thinking and redacted_thinking blocks back to the API in a multi-turn conversation, you must include the complete unmodified block back to the API for the last assistant turn. This is critical for maintaining the model's reasoning flow. We suggest always passing back all thinking blocks to the API. For more details, see the Preserving thinking blocks section.
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:
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 summary you see.
A página de pensamento estendido cobre vários tópicos em mais detalhes com exemplos de código específicos do modo:
tool_choice quando o pensamento está ativo.adaptive e enabled/disabled quebra pontos de interrupção de cache para mensagens (prompts de sistema e definições de ferramentas permanecem em cache).max_tokens e limites de janela de contexto.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-opus-4-6",
"max_tokens": 16000,
"thinking": {
"type": "adaptive"
},
"messages": [
{
"role": "user",
"content": "Explain why the sum of two even numbers is always even."
}
]
}'import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=16000,
thinking={
"type": "adaptive"
},
output_config={
"effort": "medium"
},
messages=[{
"role": "user",
"content": "What is the capital of France?"
}]
)
print(response.content[0].text)import anthropic
client = anthropic.Anthropic()
with client.messages.stream(
model="claude-opus-4-6",
max_tokens=16000,
thinking={"type": "adaptive"},
messages=[{"role": "user", "content": "What is the greatest common divisor of 1071 and 462?"}],
) as stream:
for event in stream:
if event.type == "content_block_start":
print(f"\nStarting {event.content_block.type} block...")
elif event.type == "content_block_delta":
if event.delta.type == "thinking_delta":
print(event.delta.thinking, end="", flush=True)
elif event.delta.type == "text_delta":
print(event.delta.text, end="", flush=True)Saiba mais sobre pensamento estendido, incluindo modo manual, uso de ferramentas e cache de prompt.