Este recurso é elegível para Zero Data Retention (ZDR). Quando sua organização possui um acordo de ZDR, os dados enviados por meio deste recurso não são armazenados após a resposta da API ser retornada.
O "extended thinking" (pensamento estendido) dá ao Claude capacidades de raciocínio aprimoradas para tarefas complexas, ao mesmo tempo que fornece níveis variados de transparência sobre seu processo de pensamento passo a passo antes de entregar sua resposta final.
O pensamento estendido está disponível em todos os modelos Claude atuais. Como você o habilita depende do modelo:
| Modelo | Pensamento estendido manual (budget_tokens) | Recomendado |
|---|---|---|
| Claude Fable 5 Claude Mythos 5 | Não compatível (erro 400) | Pensamento adaptativo, sempre ativo; use effort para controlar a profundidade |
| Claude Mythos Preview | Compatível | Pensamento adaptativo, ativo por padrão |
| Claude Opus 4.8 | Não compatível (erro 400) | Pensamento adaptativo com effort |
| Claude Opus 4.7 | Não compatível (erro 400) | Pensamento adaptativo com effort |
| Claude Sonnet 5 | Não compatível (erro 400) | Pensamento adaptativo com effort |
| Claude Opus 4.6 | Descontinuado | Pensamento adaptativo com effort |
| Claude Sonnet 4.6 | Descontinuado | Pensamento adaptativo com effort |
| Claude Opus 4.5 | Compatível | N/A |
| Claude Haiku 4.5 | Compatível | N/A |
| Modelos Claude 4 anteriores | Compatível | N/A |
Com o pensamento adaptativo, o modelo decide quando e quanto pensar em cada requisição. No Claude Mythos Preview, Claude Fable 5 e Claude Mythos 5, thinking: {type: "disabled"} não é compatível. Para diferenças de comportamento por modelo (saída de pensamento, pensamento intercalado e preservação de blocos), consulte Diferenças no pensamento entre versões de modelos.
Quando o pensamento estendido está ativado, o Claude cria blocos de conteúdo thinking onde ele gera seu raciocínio interno. O Claude incorpora insights desse raciocínio antes de elaborar uma resposta final.
A resposta da API inclui 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 Messages API.
Aqui está um exemplo de uso do pensamento estendido na Messages API:
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?",
}
],
)
# A resposta contém blocos de pensamento resumidos e blocos de texto
for block in response.content:
match block.type:
case "thinking":
print(f"\nThinking summary: {block.thinking}")
case "text":
print(f"\nResponse: {block.text}")Para ativar o pensamento estendido, adicione um objeto thinking com type definido como enabled e um valor de budget_tokens. Em modelos onde o pensamento estendido manual está descontinuado ou não é compatível (consulte Modelos compatíveis), use type: "adaptive" em vez disso, conforme descrito em Pensamento adaptativo.
O parâmetro budget_tokens define o número máximo de tokens que o Claude pode usar para seu processo de raciocínio interno. Esse limite se aplica aos tokens de pensamento completos, não à saída resumida. Orçamentos maiores podem melhorar a qualidade da resposta ao permitir uma análise mais completa para problemas complexos, embora o Claude possa não usar todo o orçamento alocado, especialmente em faixas acima de 32k.
budget_tokens está descontinuado no Claude Opus 4.6 e Claude Sonnet 4.6 e será removido em uma versão futura do modelo. Use pensamento adaptativo com o parâmetro effort para controlar a profundidade do pensamento.
Claude Mythos Preview, Claude Opus 4.8, Claude Opus 4.7, Claude Sonnet 5, Claude Opus 4.6 e Claude Sonnet 4.6 suportam até 128k tokens de saída. Claude Haiku 4.5 suporta até 64k. Consulte a visão geral dos modelos para limites em modelos legados. Na Message Batches API, o cabeçalho beta output-300k-2026-03-24 aumenta o limite de saída para 300k no Claude Opus 4.8, Opus 4.7, Sonnet 5, Opus 4.6 e Sonnet 4.6.
budget_tokens deve ser definido com um valor menor que max_tokens. No entanto, ao usar pensamento intercalado com ferramentas, você pode exceder esse limite, pois o limite de tokens se torna toda a sua janela de contexto. Como budget_tokens deve ser menor que max_tokens, o pensamento estendido não pode ser combinado com max_tokens: 0 (pré-aquecimento do cache).
O campo display na configuração de pensamento controla como o conteúdo de pensamento é retornado nas respostas da API. Ele aceita dois valores:
"summarized": Os blocos de pensamento contêm texto de pensamento resumido. Consulte Pensamento resumido para mais detalhes. Este é o padrão no Claude Opus 4.6, Claude Sonnet 4.6 e modelos Claude 4 anteriores."omitted": Os blocos de pensamento são retornados com um campo thinking vazio. O campo signature ainda carrega o pensamento completo criptografado para continuidade em múltiplos turnos (consulte Criptografia de pensamento). Este é o padrão no Claude Fable 5, Claude Mythos 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7 e Claude Mythos Preview.Definir display: "omitted" é útil quando sua aplicação não exibe o conteúdo de pensamento aos usuários. O principal benefício é um tempo mais rápido até o primeiro token de texto ao usar streaming: o servidor pula completamente o streaming dos tokens de pensamento e entrega apenas a assinatura, de modo que a resposta de texto final começa a ser transmitida mais cedo.
Aqui estão algumas considerações importantes sobre o pensamento omitido:
signature para reconstruir o pensamento original na construção do prompt (consulte Preservando blocos de pensamento). Qualquer texto que você colocar no campo thinking de um bloco omitido enviado de volta é ignorado.display é inválido com thinking.type: "disabled" (não há nada para exibir).thinking.type: "adaptive" e o modelo pular o pensamento para uma solicitação simples, nenhum bloco de pensamento é produzido, independentemente de display.O campo signature é idêntico independentemente de display ser "summarized" ou "omitted". Alternar valores de display entre turnos em uma conversa é suportado.
No Claude Mythos Preview, display tem como padrão "omitted". Os exemplos nesta seção passam display explicitamente para que se apliquem a todos os modelos, mas no Mythos Preview você pode deixá-lo não definido e receber o mesmo comportamento. Para receber pensamento resumido no Mythos Preview, defina display: "summarized" explicitamente.
Pipelines automatizados que nunca exibem conteúdo de pensamento para usuários finais podem evitar a sobrecarga de receber tokens de pensamento pela rede. Aplicações sensíveis à latência obtêm a mesma qualidade de raciocínio sem esperar que o texto de pensamento seja transmitido antes que a resposta final comece.
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}")Quando display: "omitted" está definido, a resposta contém blocos thinking com um campo thinking vazio:
{
"content": [
{
"type": "thinking",
"thinking": "",
"signature": "EosnCkYICxIMMb3LzNrMu..."
},
{
"type": "text",
"text": "The answer is 12,231."
}
]
}Ao fazer streaming com display: "omitted", nenhum evento thinking_delta é emitido; consulte Streaming de pensamento para a sequência de eventos.
Com o "extended thinking" (pensamento estendido) habilitado, a API de Messages para modelos Claude 4 retorna um resumo do processo completo de pensamento do Claude. O pensamento resumido fornece todos os benefícios de inteligência do pensamento estendido, ao mesmo tempo que previne uso indevido. Este é o comportamento padrão nos modelos Claude 4 quando o campo display na configuração de pensamento não está definido ou está definido como "summarized". No Claude Fable 5, Claude Mythos 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7 e Claude Mythos Preview, display tem como padrão "omitted", então você deve definir display: "summarized" explicitamente para receber o pensamento resumido.
Aqui estão algumas considerações importantes sobre o pensamento resumido:
Em casos raros em que você precise de acesso à saída completa de pensamento para modelos Claude 4, entre em contato com a equipe de vendas da Anthropic.
Você pode fazer streaming de respostas de pensamento estendido usando server-sent events (SSE).
Quando o streaming está habilitado para pensamento estendido, você recebe conteúdo de pensamento via eventos thinking_delta.
Quando display: "omitted" está definido, nenhum evento thinking_delta é emitido. Consulte Controlando a exibição do pensamento.
Para mais documentação sobre streaming via Messages API, consulte Streaming de Mensagens.
Veja como lidar com streaming com pensamento:
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...")
# Redefinir flags para cada novo bloco
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.")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": "", "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"}Quando display: "omitted" está definido, o bloco de pensamento abre, um único signature_delta chega, e o bloco fecha sem nenhum evento thinking_delta. O streaming de texto começa imediatamente depois:
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":""}}Ao usar streaming com pensamento habilitado, você pode notar que o texto às vezes chega em blocos maiores alternando com entrega menor, token por token. Esse é o 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 nesse padrão de entrega "em blocos", com possíveis atrasos entre eventos de streaming.
O pensamento estendido pode ser usado junto com uso de ferramentas, permitindo que o Claude raciocine sobre a seleção de ferramentas e o processamento de resultados.
Ao usar pensamento estendido com uso de ferramentas, esteja ciente das seguintes limitações:
Limitação de escolha de ferramenta: O 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, o que é incompatível com o pensamento estendido.
Preservação de blocos de pensamento: Durante o uso de ferramentas, você deve passar os blocos thinking de volta para a API na última mensagem do assistente. Inclua o bloco completo e não modificado de volta para a API para manter a continuidade do raciocínio.
Você não pode alternar o pensamento no meio de um turno do assistente, incluindo durante loops de uso de ferramentas. Todo o turno 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 o Claude termine sua resposta completa, que pode incluir várias chamadas de ferramentas e resultados.
Por exemplo, esta sequência faz 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"]Mesmo que haja várias 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 o pensamento para ativado ou desativado durante um loop de uso de ferramentas), a API desabilita automaticamente o pensamento para essa requisição. Para preservar a qualidade do modelo e permanecer dentro da distribuição, a API pode:
Isso significa que tentar alternar o pensamento no meio do turno não causará um erro, mas o pensamento será silenciosamente desabilitado para essa requisição. 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 o 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 o pensamento, você garante que o pensamento esteja realmente habilitado para a nova requisição.
Alternar modos de pensamento também invalida o cache de prompt para o 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 os blocos thinking de volta para a API, e deve incluir o bloco completo e não modificado de volta para a API. Isso é 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 com role assistant, sempre passe de volta todos os blocos de pensamento para a API em qualquer conversa de múltiplos turnos. A API:
Quais blocos são mantidos depende do modelo. Consulte Preservação de blocos de pensamento por modelo para os padrões por classe. Para substituir o padrão, use a estratégia de edição de contexto clear_thinking_20251015.
Ao alternar modos de pensamento durante uma conversa, lembre-se de que todo o turno 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 o Claude invoca ferramentas, ele está pausando a construção de uma resposta para aguardar informações externas. Quando os resultados das ferramentas são retornados, o Claude continua construindo essa resposta existente. Isso torna necessário preservar blocos de pensamento durante o uso de ferramentas, por algumas razões:
Continuidade do raciocínio: Os blocos de pensamento capturam o raciocínio passo a passo do Claude que levou às requisições de ferramentas. Quando você envia resultados de ferramentas, incluir o pensamento original garante que o Claude possa continuar seu raciocínio de onde parou.
Manutenção de contexto: Embora os 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 esse fluxo conceitual em várias chamadas de API. Para mais informações sobre gerenciamento de contexto, consulte o guia sobre janelas de contexto.
Importante: Ao fornecer blocos thinking, toda a sequência de blocos thinking consecutivos deve corresponder às saídas geradas pelo modelo durante a requisição original; você não pode reorganizar ou modificar a sequência desses blocos.
Se os blocos de pensamento forem modificados, a API retorna um invalid_request_error 400 cuja mensagem contém `thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modified. A causa mais comum é código de aplicação que filtra blocos de conteúdo por tipo e descarta blocos redacted_thinking, ou que reconstrói a mensagem do assistente em vez de ecoá-la. Consulte Blocos de pensamento não podem ser modificados para o erro completo e etapas de correção.
O pensamento estendido com uso de ferramentas em modelos Claude 4 suporta "interleaved thinking" (pensamento intercalado), que permite ao Claude pensar entre chamadas de ferramentas e fazer raciocínio mais sofisticado após receber resultados de ferramentas.
Com pensamento intercalado, o Claude pode:
Como você habilita o pensamento intercalado depende do modelo:
| Modelo | Pensamento intercalado |
|---|---|
| Claude Fable 5 Claude Mythos 5 | Automático com pensamento adaptativo. O raciocínio entre ferramentas é movido para blocos de pensamento. Nenhum cabeçalho beta necessário. |
| Claude Mythos Preview | Automático. Cada etapa de raciocínio entre ferramentas é movida para um bloco de pensamento em vez de texto simples. Nenhum cabeçalho beta necessário ou compatível. |
| Claude Opus 4.8 | Automático com pensamento adaptativo (o único modo de pensamento compatível). Nenhum cabeçalho beta necessário. |
| Claude Opus 4.7 | Automático com pensamento adaptativo (o único modo de pensamento compatível). Nenhum cabeçalho beta necessário. |
| Claude Opus 4.6 | Automático com pensamento adaptativo. O cabeçalho beta interleaved-thinking-2025-05-14 está descontinuado e é ignorado com segurança se incluído. |
| Claude Sonnet 5 | Automático com pensamento adaptativo. O cabeçalho beta interleaved-thinking-2025-05-14 está descontinuado e é ignorado com segurança se incluído. |
| Claude Sonnet 4.6 | Automático com pensamento adaptativo (recomendado). O cabeçalho beta com type: "enabled" manual ainda é funcional, mas está descontinuado. |
| Claude Opus 4.5 | Adicione o cabeçalho beta interleaved-thinking-2025-05-14 à sua requisição de API. |
| Claude Haiku 4.5 | Não compatível. O cabeçalho beta é aceito na API do Claude, mas ignorado. |
| Modelos Claude 4 anteriores | Adicione o cabeçalho beta interleaved-thinking-2025-05-14 à sua requisição de API. |
Modelos Claude 4 anteriores aqui significa Claude Sonnet 4.5, Claude Opus 4.1 (descontinuado), Claude Opus 4 (retirado, exceto no Google Cloud) e Claude Sonnet 4 (retirado, exceto no Bedrock e Google Cloud).
Aqui estão algumas considerações importantes para o 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 requisições para qualquer modelo sem retornar um erro. Em modelos que não suportam pensamento intercalado, o cabeçalho é ignorado. No Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6 e Claude Sonnet 5, ele está descontinuado e é ignorado com segurança. No Claude Mythos Preview, ele não é necessário e é ignorado com segurança.interleaved-thinking-2025-05-14 para qualquer modelo além de Claude Opus 4.8, Claude Opus 4.7, Claude Sonnet 5, Claude Opus 4.6, Claude Sonnet 4.6, Claude Opus 4.5, Claude Opus 4.1 (descontinuado), Opus 4 (retirado, exceto no Google Cloud), Sonnet 4.5 ou Sonnet 4 (retirado, exceto no Bedrock e Google Cloud), sua requisição falhará.O 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 de várias etapas.
Remoção de contexto de blocos de pensamento
Padrões de invalidação de cache
Em modelos Opus/Sonnet anteriores e todos os modelos Haiku, blocos de pensamento são removidos para cálculos de cache e contexto; no Opus 4.5+ e Sonnet 4.6+, eles são mantidos por padrão. Em ambos os casos, eles devem ser preservados ao continuar conversas com uso de ferramentas, especialmente com pensamento intercalado.
Ao usar pensamento estendido com uso de ferramentas, blocos de pensamento exibem comportamento de cache específico que afeta a contagem de tokens:
Como funciona:
Fluxo de exemplo detalhado:
Requisição 1:
User: "What's the weather in Paris?"Resposta 1:
[thinking_block_1] + [tool_use block 1]Requisiçã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 Requisição 2 grava um cache do conteúdo da requisição (não da resposta). O cache inclui a mensagem original do usuário, o primeiro bloco de pensamento, o bloco de uso de ferramenta e o resultado da ferramenta.
Requisiçã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 Opus 4.5+ e Sonnet 4.6+, todos os blocos de pensamento anteriores são mantidos por padrão. Para modelos Opus/Sonnet anteriores e todos os modelos Haiku, como um bloco de usuário que não é resultado de ferramenta foi incluído, todos os blocos de pensamento anteriores são ignorados e removidos do contexto. Essa requisiçã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 principais:
cache_control explícitosmax_tokens (que inclui seu orçamento de pensamento quando o pensamento está habilitado) é aplicado como um limite estrito. Em modelos Claude 4.5 e mais recentes, se os tokens de entrada mais max_tokens excederem o tamanho da janela de contexto, a API aceita a requisição. Se a geração então atingir o limite da janela de contexto, ela para com stop_reason: "model_context_window_exceeded". Em modelos anteriores, a API retorna um erro de validação em vez disso. Consulte Lidando com motivos de parada.
Você pode ler o guia sobre janelas de contexto para um aprofundamento mais completo.
Ao calcular o uso da janela de contexto com pensamento habilitado, há algumas considerações a serem observadas:
max_tokens para esse turnoO diagrama abaixo demonstra o gerenciamento especializado de tokens quando o pensamento estendido está habilitado:
A janela de contexto efetiva é calculada como:
context window =
(current input tokens - previous thinking tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)Use a API de contagem de tokens para obter contagens precisas de tokens para seu caso de uso específico, especialmente ao trabalhar com conversas de múltiplos turnos 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, você pode precisar:
max_tokens conforme o comprimento do seu prompt mudaO conteúdo completo do pensamento é criptografado e retornado no campo signature. Esse campo é usado para verificar se os blocos de pensamento foram gerados pelo Claude quando passados de volta para a API.
Só é estritamente necessário enviar de volta os blocos de pensamento ao usar ferramentas com pensamento estendido. Caso contrário, você pode omitir os blocos de pensamento de turnos anteriores. Se você os passar de volta, o fato de a API mantê-los ou removê-los depende do modelo: Opus 4.5+ e Sonnet 4.6+ os mantêm no contexto por padrão; modelos Opus/Sonnet anteriores e todos os modelos Haiku os removem. Consulte edição de contexto para configurar isso.
Se for enviar de volta os blocos de pensamento, passe tudo de volta exatamente como você recebeu, para manter a consistência e evitar possíveis problemas.
Aqui estão algumas considerações importantes sobre a criptografia do pensamento:
signature_delta dentro de um evento content_block_delta logo antes do evento content_block_stop.signature são significativamente mais longos nos modelos Claude 4 do que nos modelos anteriores.signature é um campo opaco e não deve ser interpretado ou analisado.signature são compatíveis entre plataformas (APIs do Claude, Amazon Bedrock e Google Cloud). Valores gerados em uma plataforma serão compatíveis com outra.Além dos blocos thinking regulares, a API pode retornar blocos redacted_thinking. Um bloco redacted_thinking contém conteúdo de pensamento criptografado em um campo data, sem resumo legível:
{
"type": "redacted_thinking",
"data": "..."
}O campo data é opaco e criptografado. Assim como o campo signature em blocos de pensamento regulares, você deve passar blocos redacted_thinking de volta para a API sem alterações ao continuar uma conversa de múltiplos turnos com ferramentas.
Se seu código filtra blocos de conteúdo por tipo (por exemplo, block.type == "thinking") ao fazer o round-trip de respostas com uso de ferramentas, inclua também blocos redacted_thinking. Filtrar apenas por block.type == "thinking" descarta silenciosamente blocos redacted_thinking e quebra o protocolo de múltiplos turnos descrito acima.
Blocos redacted_thinking são um tipo distinto de bloco de conteúdo retornado pela API quando partes do pensamento são redigidas por segurança. Isso é separado da opção display: "omitted", que retorna blocos thinking regulares com um campo thinking vazio.
A Messages API lida com o pensamento de forma diferente entre versões de modelos Claude. A tabela a seguir fornece uma comparação condensada:
| Modelo | budget_tokens | Saída de pensamento | Pensamento intercalado | Preservação de blocos |
|---|---|---|---|---|
| Claude Fable 5 Claude Mythos 5 | Não compatível | Omitida por padrão1 | Automático2 | Consulte Pensamento adaptativo |
| Claude Mythos Preview | Compatível | Omitida por padrão1 | Automático2 | Preservados3 |
| Claude Opus 4.8 | Não compatível | Omitida por padrão1 | Automático2 | Preservados |
| Claude Opus 4.7 | Não compatível | Omitida por padrão1 | Automático2 | Preservados |
| Claude Sonnet 5 | Não compatível | Omitida por padrão1 | Automático2 | Preservados |
| Claude Opus 4.6 | Descontinuado | Resumida | Automático2 | Preservados |
| Claude Sonnet 4.6 | Descontinuado | Resumida | Automático, ou cabeçalho beta | Preservados |
| Claude Opus 4.5 | Compatível | Resumida | Cabeçalho beta | Preservados |
| Claude Haiku 4.5 | Compatível | Resumida | Não compatível | Apenas último turno |
| Modelos Claude 4 anteriores | Compatível | Resumida | Cabeçalho beta | Apenas último turno |
1 Defina display: "summarized" para receber pensamento resumido. No Claude Fable 5, Claude Mythos 5 e Claude Mythos Preview, tokens de pensamento brutos nunca são retornados.
2 Com pensamento adaptativo. O cabeçalho beta interleaved-thinking-2025-05-14 não é necessário nesses modelos e é ignorado com segurança se incluído.
3 Blocos são removidos ao continuar a conversa em um modelo que não suporta o formato de pensamento do Mythos.
Se os blocos de pensamento de turnos anteriores do assistente são preservados no contexto por padrão depende da classe do modelo. Opus: Claude Opus 4.5 e modelos Opus posteriores mantêm todos os blocos de pensamento anteriores; Claude Opus 4.1 (descontinuado) e modelos Opus anteriores mantêm apenas o pensamento do último turno do assistente. Sonnet: Claude Sonnet 4.6 e modelos Sonnet posteriores mantêm todos; Claude Sonnet 4.5 e modelos Sonnet anteriores mantêm apenas o último turno. Haiku: todos os modelos Haiku até Claude Haiku 4.5 mantêm apenas o último turno. Claude Mythos Preview também mantém todos os blocos de pensamento anteriores.
Benefícios da preservação de blocos de pensamento:
Considerações importantes:
Para modelos anteriores (Claude Sonnet 4.5, Opus 4.1 (descontinuado), 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.
Para informações completas sobre preços, incluindo taxas base, gravações de cache, acertos de cache e tokens de saída, consulte a página de preços.
O processo de pensamento gera cobranças por:
Quando o pensamento estendido está habilitado, um prompt do sistema especializado é incluído automaticamente para dar suporte a esse recurso.
Ao usar pensamento resumido:
Ao usar display: "omitted":
thinking está vazio)A contagem de tokens de saída cobrados não corresponderá à contagem de tokens visíveis na resposta. Você é cobrado pelo processo completo de pensamento, não pelo conteúdo de pensamento visível na resposta.
Para ver quantos tokens de saída cobrados foram gastos no raciocínio interno, leia usage.output_tokens_details.thinking_tokens na resposta. Esse valor reflete o raciocínio bruto que o modelo gerou (não o texto resumido retornado no corpo) e é sempre menor ou igual a output_tokens. Subtraia-o de output_tokens para obter uma aproximação da parte da saída que não corresponde ao raciocínio.
{
"usage": {
"input_tokens": 25,
"output_tokens": 348,
"output_tokens_details": {
"thinking_tokens": 312
}
}
}output_tokens continua sendo o total inclusivo e autoritativo usado para cobrança. output_tokens_details é um detalhamento somente leitura para observabilidade.
usage.output_tokens_details.thinking_tokens na resposta informa quantos dos tokens de saída cobrados foram de raciocínio interno. Ao usar streaming, esse detalhamento aparece apenas no evento final message_delta.max_tokens é maior que 21.333 para evitar timeouts HTTP em requisições de longa duração. Esta é uma validação do lado do cliente, não uma restrição da API. Se você não precisa processar eventos incrementalmente, use .stream() com .get_final_message() (Python) ou .finalMessage() (TypeScript) para obter o objeto Message completo sem lidar com eventos individuais. Consulte Streaming de Mensagens para mais detalhes. Ao usar streaming, esteja preparado para lidar com blocos de conteúdo de pensamento e de texto à medida que chegam.display: "omitted" na configuração de pensamento para reduzir o tempo até o primeiro token de texto. Consulte Controlando a exibição do pensamento.temperature ou top_k, nem com uso forçado de ferramentas.top_p para valores entre 1 e 0,95.Deixe o Claude decidir quando e quanto usar o pensamento estendido.
Explore exemplos práticos de pensamento no cookbook.
Aprenda as melhores práticas de engenharia de prompt para pensamento estendido.
Was this page helpful?