Pensamento Estendido, Esforço e Noções Básicas Multimodais
7 exemplos para você começar com Pensamento Estendido, Esforço e Multimodal - 5 básicos e 2 intermediários.
Pré-requisitos
- Instale o SDK oficial:
pip install anthropic. - Defina sua chave de API como uma variável de ambiente:
export ANTHROPIC_API_KEY=sk-ant-.... - Crie um cliente uma vez e reutilize-o:
client = anthropic.Anthropic(). - Para exemplos de imagem, tenha um pequeno JPEG ou PNG em disco para codificar como base64.
Exemplos Básicos
1. Uma Requisição Simples, Sem Configuração de Pensamento
O ponto de partida antes que qualquer ajuste de pensamento ou esforço seja aplicado.
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=512,
messages=[{"role": "user", "content": "Resuma as desvantagens dos microsserviços."}],
)
print(response.content[0].text)messages.createenvia uma requisição de turno único sem configuração dethinking, portanto, nenhum bloco de raciocínio é retornado.response.contenté uma lista de blocos de conteúdo; para uma resposta de texto simples, geralmente contém um bloco de texto.- Esta é a linha de base em que todos os outros exemplos nesta página se baseiam.
2. Ativando o Pensamento Adaptativo
Ative o pensamento adaptativo para que o Claude decida quanta raciocínio uma tarefa precisa.
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
thinking={"type": "adaptive"},
messages=[{"role": "user", "content": "Planeje uma migração de banco de dados em fases."}],
)
for block in response.content:
print(block.type)thinking={"type": "adaptive"}permite que o Claude escolha a profundidade do raciocínio por requisição, em vez de um orçamento fixo.- Iterar sobre
response.contentmostra um bloco dethinkinge um bloco detextpara uma tarefa como esta. - Prompts simples ainda podem retornar pouco ou nenhum raciocínio visível, esse é o comportamento esperado.
Relacionado: Ativando o Pensamento Adaptativo com thinking: {type: 'adaptive'} - um guia completo desta configuração
3. Lendo o Bloco de Pensamento
Uma vez que o pensamento esteja ativado, extraia o raciocínio separadamente da resposta final.
thinking_text = None
answer_text = None
for block in response.content:
if block.type == "thinking":
thinking_text = block.thinking
elif block.type == "text":
answer_text = block.text
print("Raciocínio:", thinking_text)
print("Resposta:", answer_text)- O bloco
thinkinge o blocotextsão itens separados na mesma listacontent. - Verificar
block.typepermite que sua aplicação registre o raciocínio separadamente do que o usuário vê. - Nem toda resposta inclui um bloco de
thinking, proteja com verificaçõesis Noneem código real.
4. Definindo um Nível de Esforço
Limite a profundidade do raciocínio e o custo com o parâmetro de esforço.
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
thinking={"type": "adaptive"},
output_config={"effort": "low"},
messages=[{"role": "user", "content": "Classifique este ticket como cobrança, bug ou solicitação de recurso."}],
)
print(response.content[-1].text)output_config={"effort": "low"}favorece velocidade e baixo custo em detrimento de raciocínio profundo.- O esforço é independente da configuração de
thinking, ambos podem ser definidos juntos. - O esforço
lowé adequado para tarefas simples e de alto volume, como classificação.
Relacionado: Ajustando o Parâmetro de Esforço para Custo e Velocidade - escolhendo um nível por carga de trabalho
5. Enviando uma Imagem Junto com Texto
Peça ao Claude para olhar uma imagem e responder a uma pergunta sobre ela.
import base64
import anthropic
client = anthropic.Anthropic()
with open("chart.png", "rb") as f:
image_data = base64.standard_b64encode(f.read()).decode("utf-8")
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=512,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image_data,
},
},
{"type": "text", "text": "Qual tendência este gráfico mostra?"},
],
}
],
)
print(response.content[0].text)contentse torna uma lista de blocos tipados quando uma mensagem mistura uma imagem com texto.base64.standard_b64encodetransforma os bytes brutos na string que a API espera.media_typedeve corresponder ao formato real do arquivo; incompatibilidades causam erros na requisição.
Relacionado: Enviando Imagens para Análise de Visão com Codificação Base64 - uma análise mais aprofundada da entrada de visão
Exemplos Intermediários
6. Combinando Pensamento Adaptativo, Esforço e uma Imagem
Raciocine sobre uma pergunta que requer tanto olhar para uma imagem quanto pensar sobre a resposta.
import base64
import anthropic
client = anthropic.Anthropic()
with open("architecture-diagram.png", "rb") as f:
image_data = base64.standard_b64encode(f.read()).decode("utf-8")
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=1500,
thinking={"type": "adaptive"},
output_config={"effort": "high"},
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image_data,
},
},
{"type": "text", "text": "Identifique quaisquer pontos únicos de falha nesta arquitetura."},
],
}
],
)
for block in response.content:
if block.type == "thinking":
print("Raciocínio:", block.thinking[:200], "...")
elif block.type == "text":
print("Resposta:", block.text)- Todas as três configurações se compõem:
thinking,output_confige uma listacontentmultimodal funcionam na mesma requisição. - O esforço
highé apropriado aqui porque identificar falhas arquitetônicas se beneficia de um raciocínio mais profundo. - Truncar o raciocínio impresso (
[:200]) é um padrão comum ao registrar blocos de pensamento longos.
7. Lidando com uma Resposta que Não Tem Bloco de Pensamento
Escreva código defensivo, pois nem toda resposta retorna raciocínio visível.
def extract_answer(response):
thinking = None
answer = None
for block in response.content:
if block.type == "thinking":
thinking = block.thinking
elif block.type == "text":
answer = block.text
return thinking, answer
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=256,
thinking={"type": "adaptive"},
output_config={"effort": "low"},
messages=[{"role": "user", "content": "Qual é a capital da França?"}],
)
thinking, answer = extract_answer(response)
print("Teve raciocínio:", thinking is not None)
print("Resposta:", answer)- Uma pergunta factual trivial com esforço
lowgeralmente não retorna nenhum bloco dethinking, o pensamento adaptativo o pulou. - Escrever uma pequena função auxiliar
extract_answerevita que cada local de chamada repita o mesmo loop. - Verificar
thinking is not Noneantes de usá-lo evitaAttributeErrorem código de produção.
Relacionado: Níveis de Esforço e Opções de Exibição de Pensamento Referência - tabela completa de níveis e modos de exibição
Versões da 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
anthropicpara Python (ú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.