
Por que a Claude API merece sua atenção
Em 2026, a Anthropic consolidou a família Claude como referência para aplicações que precisam de raciocínio confiável, contexto longo (1M tokens no Opus 4.6) e uso de ferramentas. Diferente de SDKs que escondem decisões importantes, a Claude API expõe primitivos limpos: mensagens, ferramentas, streaming e cache. Saber usar esses primitivos diretamente é o que separa um app de IA que escala de um protótipo que cai sob pressão.
Este guia cobre o caminho mínimo viável: criar uma chave, fazer a primeira chamada, adicionar tool use, ativar streaming e habilitar prompt caching para reduzir custo.
Setup em 60 segundos
Crie uma conta no Anthropic Console, gere uma chave em Settings → API Keys, e exporte como variável de ambiente. Nunca cole a chave no código.
export ANTHROPIC_API_KEY="sk-ant-..."
pip install anthropic
# ou
npm install @anthropic-ai/sdk
A boa prática que poucos seguem: crie chaves separadas por ambiente (dev, staging, prod) e por serviço. Assim, vazamento de uma chave não compromete tudo, e você consegue rastrear consumo por rota.
Primeira chamada (Python)
from anthropic import Anthropic
client = Anthropic()
resp = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
messages=[
{"role": "user", "content": "Resuma o que é Clean Architecture em 3 bullets."}
],
)
print(resp.content[0].text)
Três pontos importantes que a documentação enfatiza:
max_tokensé obrigatório — protege seu bolso.role: "system"virou parâmetro top-level (system="..."), não vai mais dentro demessages.contentpode ser uma lista de blocos (texto, imagem, tool_result), não só string.
Tool use: deixando o modelo agir
Tool use é o que transforma um chatbot em um agente. Você define funções no schema JSON, o modelo decide quando chamá-las, executa, e devolve o resultado pra próxima rodada.
tools = [
{
"name": "get_weather",
"description": "Retorna a temperatura atual de uma cidade.",
"input_schema": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "Cidade"},
},
"required": ["city"],
},
}
]
resp = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "Qual a temperatura em Curitiba?"}],
)
Quando o stop_reason voltar como tool_use, você executa a função local, anexa o resultado como {"role": "user", "content": [{"type": "tool_result", ...}]} e chama a API de novo. O modelo vê o resultado e formula a resposta final.
A regra de ouro: descrições são tudo. Uma description precisa e exemplos no schema reduzem em até 80% as chamadas erradas.
Streaming: UX que parece mágica
Para chat e qualquer output longo, use streaming. O usuário vê o texto aparecendo token a token e a percepção de latência cai drasticamente.
with client.messages.stream(
model="claude-opus-4-6",
max_tokens=2048,
messages=[{"role": "user", "content": "Escreva um conto sobre IA."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
Em produção, encaminhe esses chunks para o frontend via Server-Sent Events (SSE) ou WebSockets. A SDK também emite eventos mais granulares (content_block_start, content_block_delta, message_stop) — úteis quando você precisa interceptar tool calls em tempo real.
Prompt caching: corte de custo brutal
Aplicações com prompts grandes (instruções longas, RAG context, few-shot examples) reaproveitam contexto a cada chamada. O prompt caching permite marcar partes do prompt como cacheáveis, e a Anthropic cobra apenas 10% do preço normal nos hits subsequentes.
resp = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
system=[
{
"type": "text",
"text": "Você é um assistente especializado em direito tributário brasileiro...",
"cache_control": {"type": "ephemeral"},
}
],
messages=[{"role": "user", "content": "O que é o regime do Simples Nacional?"}],
)
Para apps com instruções de 5k+ tokens, isso pode reduzir custo total em 60-80%. Verifique usage.cache_read_input_tokens na resposta para confirmar que o cache foi usado.
Erros comuns que custam caro
- Não setar
max_tokensbaixo no dev — uma chamada errada pode gastar muito. - Reusar a mesma chave em prod e em scripts locais — quando vaza, você não sabe de onde.
- Ignorar
stop_reason—end_turné diferente detool_usee demax_tokens. Tratar como sucesso pode mascarar respostas truncadas. - Não validar input antes de mandar pro modelo — usuário malicioso consegue injetar instruções no prompt do sistema.
- Streaming sem heartbeat — conexões caem em proxies (Cloudflare, nginx) após 30s sem dados. Envie comentários SSE periódicos.
Próximos passos
- Leia a doc oficial: docs.claude.com
- Experimente o Agent SDK para tarefas multi-step com loops nativos.
- Para apps Node.js sérios, configure observability (Helicone, Langfuse) desde o dia um.
- Defina budgets na console para evitar surpresas no fim do mês.
A Claude API é poderosa justamente porque é simples. Um arquivo de 50 linhas já te dá um agente funcional. Use bem.

