Busque em todas as páginas da documentação
O pensamento adaptativo permite que o Claude decida, por solicitação, quanta raciocínio visível uma tarefa realmente precisa, em vez de você adivinhar um orçamento fixo antecipadamente.
O pensamento estendido expõe o raciocínio do Claude como um bloco de conteúdo thinking separado retornado ao lado da resposta final.
O pensamento adaptativo é o modo recomendado para ativar isso, pois delega a decisão de profundidade para o próprio Claude.
Você o habilita com um único parâmetro thinking na chamada messages.create.
Uma vez ativado, sua análise de resposta precisa lidar com dois tipos de blocos de conteúdo em vez de um: thinking e text.
Esta página cobre a configuração exata, um exemplo de trabalho completo e os problemas que surgem com mais frequência quando as equipes o implementam pela primeira vez.
Cartão de receita de referência rápida - pronto para copiar e colar.
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
thinking={"type": "adaptive"},
messages=[{"role": "user", "content": "Projete um plano de rollback para um deploy com falha."}],
)
for block in response.content:
print(block.type)Quando usar isso:
effort, que compõe com thinking.import anthropic
client = anthropic.Anthropic()
def ask_with_adaptive_thinking(prompt: str) -> dict:
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=2048,
thinking={"type"
O que isso demonstra:
thinking do bloco text em cada chamada.block.type dentro do loop em vez de assumir uma forma de conteúdo fixa.reasoning pode ser None para um prompt que não precisou de raciocínio visível.response.stop_reason ao lado do conteúdo, útil para detectar respostas truncadas.thinking aceita um objeto de configuração; {"type": "adaptive"} é o valor que os exemplos deste site usam em todos os lugares.thinking em response.content, ordenados antes do bloco text correspondente.response.content é sempre uma lista, mesmo para uma resposta de bloco único, portanto, o código deve iterar em vez de indexar uma posição fixa.| Tipo de Bloco | Campo para ler | Presente quando |
|---|---|---|
thinking | block.thinking (string) | O Claude julgou que a tarefa se beneficiou de raciocínio visível |
text | block.text (string) | Sempre presente para uma resposta concluída normal |
# Padrão de extração defensiva usado em todos os exemplos desta seção.
def split_content(response):
thinking, text = None, None
for block in response.content:
if block.type == "thinking":
thinking = block.thinking
elif block.type == "text":
text
Trate block.thinking como opcional em todos os caminhos de código. Uma guarda no estilo getattr ou a verificação if block.type == "thinking" mostrada acima evita AttributeError quando um prompt simples pula o raciocínio inteiramente.
response.content[0] é sempre a resposta de texto. Com o pensamento adaptativo ativado, o índice 0 pode ser o bloco thinking em vez disso. Correção: itere sobre response.content e alterne com base em block.type em vez de indexar por posição.thinking ausente como um erro. Prompts simples frequentemente não produzem raciocínio visível, isso é o pensamento adaptativo funcionando corretamente, não um bug. Correção: proteja com verificações is not None e registre-o como inesperado apenas se o prompt for genuinamente complexo.max_tokens precisa cobrir o pensamento mais a resposta. Um valor baixo de max_tokens pode truncar o raciocínio antes que a resposta final seja escrita. Correção: orce max_tokens generosamente para tarefas que você espera que acionem raciocínio profundo e verifique response.stop_reason para "max_tokens".thinking com output_config.effort. Ativar o pensamento adaptativo por si só não define um teto de profundidade de raciocínio. Correção: combine thinking={"type": "adaptive"} com um output_config={"effort": ...} explícito quando você precisar controlar o custo, veja a página de ajuste de esforço.thinking pode ser verboso e destina-se à depuração ou divulgação opcional, não como a resposta principal da interface do usuário. Correção: mostre o bloco text por padrão e restrinja qualquer exibição de raciocínio a um controle explícito de "mostrar raciocínio".thinking de volta como histórico de conversas sem modificação. Alguns fluxos de vários turnos acidentalmente incluem blocos thinking anteriores como se fossem texto normal do assistente, aumentando o uso de tokens. Correção: remova ou resuma blocos thinking anteriores antes de anexá-los à lista messages do próximo turno.| Alternativa | Usar quando | Não usar quando |
|---|---|---|
Nenhuma configuração thinking | Solicitações simples e de baixa latência onde a profundidade de raciocínio é irrelevante | A tarefa envolve lógica de várias etapas, planejamento ou depuração |
| Configuração de pensamento com orçamento fixo (não adaptativo, se suportado pela sua versão do SDK) | Você precisa de um teto de tokens de raciocínio rígido e previsível, independentemente da dificuldade da tarefa | Você deseja que o Claude se auto-calibre e evite desperdiçar orçamento em prompts fáceis |
Pensamento adaptativo mais effort explícito | Cargas de trabalho de produção que precisam de auto-calibração e um teto de custo | Você precisa de determinismo absoluto nas contagens de tokens de raciocínio entre as solicitações |
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
thinking={"type": "adaptive"},
messages=[{"role": "user", "content": "..."}],
text.Pode custar, pois o raciocínio visível consome tokens de saída adicionais quando o Claude decide que uma tarefa precisa disso. Prompts simples adicionam pouca ou nenhuma sobrecarga; complexos podem usar tokens notavelmente mais.
Não. thinking e effort são configurações independentes. O pensamento adaptativo funciona por conta própria com esforço padrão; adicionar um effort explícito apenas limita o quão profundo esse raciocínio pode ir.
for block in response.content:
if block.type == "thinking":
print(block.thinking)Geralmente não. Trate-o como conteúdo de depuração ou divulgação opcional e apresente o bloco text como a resposta principal. Se você mostrar o raciocínio, torne-o um controle explícito de "opt-in".
Não, exceto para Claude Fable 5, que é executado com pensamento adaptativo sempre ativo por padrão. Outros modelos da linha exigem a configuração explícita thinking para ativá-lo.
Sim. Uma solicitação pode incluir um bloco de conteúdo de imagem e thinking={"type": "adaptive"} na mesma chamada; o Claude raciocina sobre o conteúdo da imagem assim como faria com texto.
response.stop_reason para "max_tokens" para detectar isso.max_tokens para prompts que provavelmente acionarão raciocínio profundo.O pensamento adaptativo é projetado para deixar o Claude decidir, então ele pulará o raciocínio visível em prompts que ele julga triviais. Se você precisar de saída de raciocínio garantida, independentemente da dificuldade da tarefa, essa é uma configuração de pensamento diferente e não adaptativa, não abordada nesta página.
Sim, os tokens de raciocínio e os tokens de resposta ambos consomem do mesmo orçamento de saída definido por max_tokens.
Evite reenviar blocos thinking brutos de turnos anteriores como texto de assistente simples em seu histórico messages. Remova-os ou resuma-os para que o uso de tokens não aumente drasticamente em uma conversa longa.
Versões de Stack: Escrito contra a linha de modelos Claude atual em ~junho de 2026 - Claude Fable 5, Claude Opus 4.8, Claude Sonnet 5 (o padrão), e Claude Haiku 4.5 - e o SDK oficial
anthropicPython (última versão 0.x). Nomes de modelos, versões de SDK e preços mudam rapidamente - verifique os detalhes atuais em platform.claude.com/docs antes de confiar neles.