O pensamento estendido oferece ao Claude capacidades aprimoradas de raciocínio para tarefas complexas, enquanto fornece diferentes níveis de transparência em seu processo de pensamento passo a passo antes de entregar sua resposta final.
Para Claude Opus 4.6, recomendamos usar pensamento adaptativo (thinking: {type: "adaptive"}) com o parâmetro de esforço em vez do modo de pensamento manual descrito nesta página. A configuração manual thinking: {type: "enabled", budget_tokens: N} está descontinuada no Opus 4.6 e será removida em uma versão futura do modelo.
O pensamento estendido é suportado nos seguintes modelos:
claude-opus-4-6) — pensamento adaptativo apenas; modo manual (type: "enabled") está descontinuadoclaude-opus-4-5-20251101)claude-opus-4-1-20250805)claude-opus-4-20250514)claude-sonnet-4-6) — suporta tanto pensamento estendido manual com modo intercalado quanto pensamento adaptativoclaude-sonnet-4-5-20250929)claude-sonnet-4-20250514)claude-3-7-sonnet-20250219) (descontinuado)claude-haiku-4-5-20251001)O comportamento da API difere entre os modelos Claude Sonnet 3.7 e Claude 4, mas as formas da API permanecem exatamente as mesmas.
Para mais informações, consulte Diferenças no pensamento entre versões de modelos.
Quando o pensamento estendido é ativado, Claude cria blocos de conteúdo thinking onde produz seu raciocínio interno. Claude incorpora insights deste raciocínio antes de elaborar uma resposta final.
A resposta da API incluirá blocos de conteúdo thinking, seguidos por blocos de conteúdo text.
Aqui está um exemplo do formato de resposta padrão:
{
"content": [
{
"type": "thinking",
"thinking": "Let me analyze this step by step...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}Para mais informações sobre o formato de resposta do pensamento estendido, consulte a Referência da API de Mensagens.
Aqui está um exemplo de uso do pensamento estendido na API de Mensagens:
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?"
}
]
}'Para ativar o pensamento estendido, adicione um objeto thinking, com o parâmetro type definido como enabled e o budget_tokens para um orçamento de tokens especificado para pensamento estendido. Para Claude Opus 4.6, recomendamos usar type: "adaptive" em vez disso — consulte Pensamento adaptativo para detalhes. Embora type: "enabled" com budget_tokens ainda seja suportado no Opus 4.6, está descontinuado e será removido em uma versão futura.
O parâmetro budget_tokens determina o número máximo de tokens que Claude pode usar para seu processo de raciocínio interno. Nos modelos Claude 4 e posteriores, este limite se aplica aos tokens de pensamento completo, e não à saída resumida. Orçamentos maiores podem melhorar a qualidade da resposta ao permitir análise mais completa para problemas complexos, embora Claude possa não usar todo o orçamento alocado, especialmente em intervalos acima de 32k.
budget_tokens está descontinuado no Claude Opus 4.6 e será removido em uma versão futura do modelo. Recomendamos usar pensamento adaptativo com o parâmetro de esforço para controlar a profundidade do pensamento em vez disso.
Claude Opus 4.6 suporta até 128K tokens de saída. Modelos anteriores suportam até 64K tokens de saída.
budget_tokens deve ser definido para um valor menor que max_tokens. No entanto, ao usar pensamento intercalado com ferramentas, você pode exceder este limite, pois o limite de tokens se torna sua janela de contexto inteira (200k tokens).
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.
Você pode fazer streaming de respostas de pensamento estendido usando server-sent events (SSE).
Quando o streaming está ativado para pensamento estendido, você recebe conteúdo de pensamento via eventos thinking_delta.
Para mais documentação sobre streaming via a API de Mensagens, consulte Streaming de Mensagens.
Aqui está como lidar com streaming com pensamento:
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?"
}
]
}'Exemplo de saída 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"}Ao usar streaming com pensamento ativado, você pode notar que o texto às vezes chega em pedaços maiores alternando com entrega token por token. Este é um comportamento esperado, especialmente para conteúdo de pensamento.
O sistema de streaming precisa processar conteúdo em lotes para desempenho ideal, o que pode resultar neste padrão de entrega "em pedaços", com possíveis atrasos entre eventos de streaming. Estamos continuamente trabalhando para melhorar esta experiência, com futuras atualizações focadas em fazer o conteúdo de pensamento fazer streaming de forma mais suave.
O pensamento estendido pode ser usado junto com uso de ferramentas, permitindo que Claude raciocine através da seleção de ferramentas e processamento de resultados.
Ao usar pensamento estendido com uso de ferramentas, esteja ciente das seguintes limitações:
Limitação de escolha de ferramenta: Uso de ferramentas com pensamento suporta apenas tool_choice: {"type": "auto"} (o padrão) ou tool_choice: {"type": "none"}. Usar tool_choice: {"type": "any"} ou tool_choice: {"type": "tool", "name": "..."} resultará em um erro porque essas opções forçam o uso de ferramentas, que é incompatível com pensamento estendido.
Preservando blocos de pensamento: Durante o uso de ferramentas, você deve passar blocos thinking de volta para a API para a última mensagem do assistente. Inclua o bloco completo não modificado de volta para a API para manter a continuidade do raciocínio.
Você não pode alternar pensamento no meio de um turno do assistente, incluindo durante loops de uso de ferramentas. O turno inteiro do assistente deve operar em um único modo de pensamento:
Da perspectiva do modelo, loops de uso de ferramentas fazem parte do turno do assistente. Um turno do assistente não é concluído até que Claude termine sua resposta completa, que pode incluir múltiplas chamadas de ferramentas e resultados.
Por exemplo, esta sequência é toda parte de um único turno do assistente:
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"]Embora haja múltiplas mensagens da API, o loop de uso de ferramentas é conceitualmente parte de uma resposta contínua do assistente.
Quando ocorre um conflito de pensamento no meio do turno (como alternar pensamento ligado ou desligado durante um loop de uso de ferramentas), a API desativa automaticamente o pensamento para esse pedido. Para preservar a qualidade do modelo e permanecer na distribuição, a API pode:
Isso significa que tentar alternar pensamento no meio do turno não causará um erro, mas o pensamento será silenciosamente desativado para esse pedido. Para confirmar se o pensamento estava ativo, verifique a presença de blocos thinking na resposta.
Melhor prática: Planeje sua estratégia de pensamento no início de cada turno em vez de tentar alternar no meio do turno.
Exemplo: Alternando pensamento após completar um turno
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)Ao completar o turno do assistente antes de alternar pensamento, você garante que o pensamento seja realmente ativado para o novo pedido.
Alternar modos de pensamento também invalida o cache de prompt para histórico de mensagens. Para mais detalhes, consulte a seção Pensamento estendido com cache de prompt.
Durante o uso de ferramentas, você deve passar blocos thinking de volta para a API, e você deve incluir o bloco completo não modificado de volta para a API. Isto é crítico para manter o fluxo de raciocínio do modelo e a integridade da conversa.
Embora você possa omitir blocos thinking de turnos anteriores de assistant, sugerimos sempre passar de volta todos os blocos de pensamento para a API para qualquer conversa multi-turno. A API irá:
Ao alternar modos de pensamento durante uma conversa, lembre-se de que o turno inteiro do assistente (incluindo loops de uso de ferramentas) deve operar em um único modo de pensamento. Para mais detalhes, consulte Alternando modos de pensamento em conversas.
Quando Claude invoca ferramentas, está pausando sua construção de uma resposta para aguardar informações externas. Quando resultados de ferramentas são retornados, Claude continuará construindo essa resposta existente. Isto necessita preservar blocos de pensamento durante o uso de ferramentas, por alguns motivos:
Continuidade de raciocínio: Os blocos de pensamento capturam o raciocínio passo a passo de Claude que levou a pedidos de ferramentas. Quando você publica resultados de ferramentas, incluir o pensamento original garante que Claude possa continuar seu raciocínio de onde parou.
Manutenção de contexto: Embora resultados de ferramentas apareçam como mensagens de usuário na estrutura da API, eles fazem parte de um fluxo de raciocínio contínuo. Preservar blocos de pensamento mantém este fluxo conceitual através de múltiplas chamadas de API. Para mais informações sobre gerenciamento de contexto, consulte nosso guia sobre janelas de contexto.
Importante: Ao fornecer blocos thinking, a sequência inteira de blocos thinking consecutivos deve corresponder aos outputs gerados pelo modelo durante o pedido original; você não pode reorganizar ou modificar a sequência desses blocos.
O pensamento estendido com uso de ferramentas nos modelos Claude 4 suporta pensamento intercalado, que permite que Claude pense entre chamadas de ferramentas e faça raciocínio mais sofisticado após receber resultados de ferramentas.
Com pensamento intercalado, Claude pode:
Suporte de modelo:
interleaved-thinking-2025-05-14 está descontinuado no Opus 4.6 e é seguramente ignorado se incluído.interleaved-thinking-2025-05-14 com pensamento estendido manual (thinking: {type: "enabled"}). Você também pode usar pensamento adaptativo, que automaticamente ativa pensamento intercalado.interleaved-thinking-2025-05-14 ao seu pedido de API para ativar pensamento intercalado.Aqui estão algumas considerações importantes para pensamento intercalado:
budget_tokens pode exceder o parâmetro max_tokens, pois representa o orçamento total em todos os blocos de pensamento dentro de um turno do assistente.interleaved-thinking-2025-05-14 em pedidos para qualquer modelo, sem efeito (exceto Opus 4.6, onde está descontinuado e seguramente ignorado).interleaved-thinking-2025-05-14 para qualquer modelo além de Claude Sonnet 4.6, Claude Opus 4.5, Claude Opus 4.1, Opus 4, Sonnet 4.5, ou Sonnet 4, seu pedido falhará.Cache de prompt com pensamento tem várias considerações importantes:
Tarefas de pensamento estendido frequentemente levam mais de 5 minutos para serem concluídas. Considere usar a duração de cache de 1 hora para manter acertos de cache em sessões de pensamento mais longas e fluxos de trabalho multi-etapas.
Remoção de contexto de bloco de pensamento
Padrões de invalidação de cache
Enquanto blocos de pensamento são removidos para cache e cálculos de contexto, eles devem ser preservados ao continuar conversas com uso de ferramentas, especialmente com pensamento intercalado.
Ao usar pensamento estendido com uso de ferramentas, os blocos de pensamento exibem um comportamento de cache específico que afeta a contagem de tokens:
Como funciona:
Fluxo de exemplo detalhado:
Solicitação 1:
User: "What's the weather in Paris?"Resposta 1:
[thinking_block_1] + [tool_use block 1]Solicitação 2:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True]Resposta 2:
[thinking_block_2] + [text block 2]A Solicitação 2 escreve um cache do conteúdo da solicitação (não da resposta). O cache inclui a mensagem de usuário original, o primeiro bloco de pensamento, bloco de uso de ferramenta e o resultado da ferramenta.
Solicitação 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]Para Claude Opus 4.5 e posterior (incluindo Claude Opus 4.6), todos os blocos de pensamento anteriores são mantidos por padrão. Para modelos mais antigos, porque um bloco de usuário não relacionado a resultado de ferramenta foi incluído, todos os blocos de pensamento anteriores são ignorados. Esta solicitação será processada da mesma forma 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]Pontos-chave:
cache_controlEm modelos Claude mais antigos (anteriores ao Claude Sonnet 3.7), se a soma de tokens de prompt e max_tokens excedesse a janela de contexto do modelo, o sistema ajustaria automaticamente max_tokens para caber dentro do limite de contexto. Isso significava que você poderia definir um grande valor de max_tokens e o sistema o reduziria silenciosamente conforme necessário.
Com os modelos Claude 3.7 e 4, max_tokens (que inclui seu orçamento de pensamento quando o pensamento está ativado) é aplicado como um limite rigoroso. O sistema agora retornará um erro de validação se tokens de prompt + max_tokens exceder o tamanho da janela de contexto.
Você pode ler nosso guia sobre janelas de contexto para uma análise mais aprofundada.
Ao calcular o uso da janela de contexto com pensamento ativado, há algumas considerações a serem observadas:
max_tokens para esse turnoO diagrama abaixo demonstra o gerenciamento de tokens especializado quando o pensamento estendido está ativado:
A janela de contexto efetiva é calculada como:
context window =
(current input tokens - previous thinking tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)Recomendamos usar a API de contagem de tokens para obter contagens de tokens precisas para seu caso de uso específico, especialmente ao trabalhar com conversas multi-turno que incluem pensamento.
Ao usar pensamento estendido com uso de ferramentas, blocos de pensamento devem ser explicitamente preservados e retornados com os resultados das ferramentas.
O cálculo da janela de contexto efetiva para pensamento estendido com uso de ferramentas se torna:
context window =
(current input tokens + previous thinking tokens + tool use tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)O diagrama abaixo ilustra o gerenciamento de tokens para pensamento estendido com uso de ferramentas:
Dado o comportamento da janela de contexto e max_tokens com pensamento estendido nos modelos Claude 3.7 e 4, você pode precisar:
max_tokens conforme o comprimento do seu prompt mudaEsta mudança foi feita para fornecer um comportamento mais previsível e transparente, especialmente conforme os limites de tokens máximos aumentaram significativamente.
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.
A API de Mensagens lida com pensamento de forma diferente entre os modelos Claude Sonnet 3.7 e Claude 4, principalmente no comportamento de redação e resumo.
Veja a tabela abaixo para uma comparação condensada:
| Recurso | 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) |
|---|---|---|---|---|---|
| Saída de Pensamento | Retorna saída de pensamento completa | Retorna pensamento resumido | Retorna pensamento resumido | Retorna pensamento resumido | Retorna pensamento resumido |
| Pensamento Intercalado | Não suportado | Suportado com cabeçalho beta interleaved-thinking-2025-05-14 | Suportado com cabeçalho beta interleaved-thinking-2025-05-14 | Suportado com cabeçalho beta interleaved-thinking-2025-05-14 ou automático com adaptive thinking | Automático com adaptive thinking (cabeçalho beta não suportado) |
| Preservação de Bloco de Pensamento | Não preservado entre turnos | Não preservado entre turnos | Preservado por padrão | Preservado por padrão | Preservado por padrão |
A partir do Claude Opus 4.5 (e continuando no Claude Opus 4.6), blocos de pensamento de turnos anteriores do assistente são preservados no contexto do modelo por padrão. Isso difere dos modelos anteriores, que removem blocos de pensamento de turnos anteriores.
Benefícios da preservação de blocos de pensamento:
Considerações importantes:
Para modelos anteriores (Claude Sonnet 4.5, Opus 4.1, etc.), blocos de pensamento de turnos anteriores continuam sendo removidos do contexto. O comportamento existente descrito na seção Pensamento estendido com cache de prompt se aplica a esses modelos.
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.
max_tokens é maior que 21.333 para evitar timeouts HTTP em solicitações de longa duração. Esta é uma validação do lado do cliente, não uma restrição de API. Se você não precisar processar eventos incrementalmente, use .stream() com .get_final_message() (Python) ou .finalMessage() (TypeScript) para obter o objeto Message completo sem lidar com eventos individuais — veja Streaming Messages para detalhes. Ao fazer streaming, esteja preparado para lidar com blocos de conteúdo de pensamento e texto conforme chegam.temperature ou top_k bem como uso forçado de ferramentas.top_p para valores entre 1 e 0,95.Explore exemplos práticos de pensamento em nosso cookbook.
Aprenda as melhores práticas de engenharia de prompt para pensamento estendido.
Was this page helpful?