A Anthropic lançou o Claude Opus 5 a 24 de julho de 2026 e o Claude Sonnet 5 a 30 de junho de 2026, e os dois modelos já substituíram a geração 4.x como opção recomendada para quem constrói produtos sobre a API da Claude. Se ainda não experimentou a plataforma, ou se a última integração que fez usava um modelo hoje classificado como legado, este tutorial mostra como criar conta, gerar a chave API, instalar o SDK e construir um agente funcional em 12 passos. No final tem um projeto completo: um assistente de triagem de tickets de suporte que usa tool use para classificar pedidos automaticamente.
O tutorial segue uma ordem prática: primeiro os fundamentos (conta, chave, primeira chamada), depois as funcionalidades que mudam o comportamento e o custo da aplicação (streaming, tool use, visão, caching, batch), e por fim os cuidados que separam um script de teste de um serviço que aguenta tráfego real. Ao longo do caminho reserve tempo para os passos de tratamento de erros e de segurança: são os que mais frequentemente ficam para depois e acabam por causar os incidentes mais caros em produção.
O Que é a API da Claude e Porque Interessa a Developers em Portugal
A API da Claude é a interface de programação que a Anthropic disponibiliza para que qualquer aplicação envie pedidos aos modelos da família Claude e receba respostas de texto, código ou chamadas a ferramentas. Ao contrário do ChatGPT ou do Gemini no browser, a API não tem interface gráfica: cada pedido é uma chamada HTTP que o developer controla ao detalhe, desde o modelo escolhido até ao número máximo de tokens de saída.
Para equipas em Portugal, a API interessa por três motivos concretos. Primeiro, o preço é por token e não por assinatura, o que facilita orçamentar um projeto piloto antes de escalar. Segundo, a Anthropic disponibiliza a Claude em plataformas cloud com presença na União Europeia, como o Google Cloud e o Microsoft Foundry, o que ajuda equipas com requisitos de residência de dados ao abrigo do RGPD. Terceiro, o modelo de tool use permite ligar a Claude a sistemas internos (CRMs, bases de dados, filas de tickets) sem expor esses sistemas a terceiros, mantendo o controlo dentro da própria infraestrutura.
O interesse por integrar IA no ciclo de desenvolvimento já não é uma curiosidade de early adopters. O Inquérito a Developers 2025 da Stack Overflow encontrou que 84% dos programadores já usam ou planeiam usar ferramentas de IA no seu processo de desenvolvimento, e 51% dos profissionais usam essas ferramentas diariamente. A questão para a maioria das equipas deixou de ser “se” vale a pena integrar um modelo como a Claude, e passou a ser “onde” e “com que salvaguardas”.
Este tutorial assume conhecimentos básicos de Python e de linha de comandos. Não é preciso experiência prévia com nenhum SDK de IA.
Vale ainda distinguir a API da Claude de outros produtos da mesma empresa que partilham o nome. O Claude Code é uma ferramenta de linha de comandos construída sobre a mesma API, pensada para tarefas de engenharia de software diretamente no terminal. O claude.ai é a aplicação de chat para utilizadores finais. Este artigo trata apenas da API pura, a camada de mais baixo nível, sobre a qual todos os outros produtos da Anthropic são construídos.
Pré-Requisitos: Contas, Versões e Ferramentas Necessárias
Antes de começar, confirme que tem o seguinte instalado e configurado. As versões indicadas foram verificadas em agosto de 2026 e são as recomendadas nesta data.
- Uma conta na Anthropic Console (console.anthropic.com), gratuita para criar e com cartão de crédito apenas necessário para gerar tráfego pago
- Python 3.9 ou superior (recomendado 3.11+) com
pipatualizado - O pacote oficial
anthropicpara Python, atualmente na versão 0.122.0 no PyPI - Um editor de código com suporte a variáveis de ambiente (VS Code, PyCharm ou equivalente)
- Ligação à internet estável, já que todas as chamadas são feitas a servidores da Anthropic
- Opcional: Node.js 18+ se preferir seguir os exemplos em TypeScript com o SDK
@anthropic-ai/sdk
Não precisa de GPU nem de hardware especial. Toda a inferência corre nos servidores da Anthropic, o computador local só envia e recebe pedidos HTTP.
Passo 1: Criar Conta na Anthropic Console e Gerar a Chave API
Aceda a console.anthropic.com e crie uma conta com o email profissional. Depois de confirmar o email, entre na secção “API Keys” do painel e clique em “Create Key”. Dê um nome descritivo à chave, por exemplo producao-triagem-tickets, para conseguir identificá-la mais tarde caso tenha de a revogar.
Guarde a chave num gestor de palavras-passe ou num cofre de segredos assim que ela aparecer no ecrã. A Anthropic não volta a mostrar o valor completo depois de fechar a janela. Nunca cole a chave diretamente no código-fonte nem a comita para um repositório Git, mesmo privado: chaves API expostas em repositórios públicos são uma das causas mais comuns de faturas inesperadas por uso indevido de terceiros.
Defina a chave como variável de ambiente no terminal:
export ANTHROPIC_API_KEY="a-sua-chave-aqui"
O SDK oficial lê esta variável automaticamente, pelo que não precisa de a passar manualmente em cada chamada.
Passo 2: Instalar o SDK e Configurar o Ambiente
Crie uma pasta dedicada ao projeto e um ambiente virtual para isolar as dependências:
mkdir claude-tutorial && cd claude-tutorial
python3 -m venv .venv
source .venv/bin/activate
pip install anthropic
Se preferir Node.js, o equivalente é npm install @anthropic-ai/sdk dentro de um projeto inicializado com npm init -y. Este tutorial segue Python nos exemplos de código, mas a lógica é idêntica em ambos os SDKs, já que ambos espelham a mesma API REST.
Passo 3: Fazer a Primeira Chamada à API
Crie um ficheiro primeiro_pedido.py com o seguinte código, que segue o padrão recomendado pela documentação oficial da Anthropic:
import anthropic
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-5",
max_tokens=1000,
messages=[
{
"role": "user",
"content": "Explica em duas frases o que é prompt caching."
}
],
)
for block in message.content:
if block.type == "text":
print(block.text)
Corra o script com python primeiro_pedido.py. A resposta típica no terminal é algo como:
Prompt caching guarda partes fixas do seu prompt (como instruções longas
ou documentos de referência) para que pedidos seguintes não paguem o
custo total de processar esse texto outra vez. Isto reduz latência e
custo em aplicações que repetem o mesmo contexto em várias chamadas.
Repare no parâmetro max_tokens, que é obrigatório em cada chamada e define o limite de tokens que a Claude pode gerar na resposta. Se o omitir, a chamada falha com um erro de validação antes sequer de chegar ao modelo.
Passo 4: Escolher o Modelo Certo: Opus 5, Sonnet 5 e Haiku 4.5
A escolha do modelo tem impacto direto no custo e na latência da aplicação. A Anthropic mantém três modelos principais em produção nesta data, além de várias versões legadas (Opus 4.8, Sonnet 4.6, Opus 4.7, Opus 4.6, Sonnet 4.5, Opus 4.5 e Opus 4.1) que continuam disponíveis mas já não recebem otimizações novas.
| Modelo | ID na API | Preço Input | Preço Output | Melhor Para |
|---|---|---|---|---|
| Claude Opus 5 | claude-opus-5 | $5 / MTok | $25 / MTok | Codificação agêntica complexa, trabalho empresarial |
| Claude Sonnet 5 | claude-sonnet-5 | $2 / MTok | $10 / MTok | Codificação e agentes do dia a dia, melhor custo-benefício |
| Claude Haiku 4.5 | claude-haiku-4-5-20251001 | $1 / MTok | $5 / MTok | Tarefas simples e de alto volume, latência mínima |
MTok significa um milhão de tokens. Como regra prática, comece com o Sonnet 5 para prototipar: tem quase o desempenho do Opus 5 num conjunto grande de tarefas de codificação e custa menos de metade por token. Reserve o Opus 5 para tarefas onde a qualidade do raciocínio compensa o custo extra, e mude para o Haiku 4.5 em classificações simples, extração de dados estruturados ou qualquer chamada que corra milhares de vezes por dia.
Passo 5: Streaming de Respostas em Tempo Real
Para respostas longas, esperar pelo output completo antes de mostrar qualquer coisa ao utilizador prejudica a experiência. O streaming resolve isto ao entregar o texto token a token, à medida que é gerado:
with client.messages.stream(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Escreve um resumo sobre RGPD e IA."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
Em aplicações web, o mesmo padrão liga-se a Server-Sent Events ou a um WebSocket para transmitir o texto ao frontend à medida que chega. Isto reduz a latência percebida mesmo quando o tempo total de geração não muda.
Passo 6: Conversas Multi-Turno e System Prompts
A API da Claude não guarda histórico entre chamadas. Cada pedido precisa de incluir toda a conversa relevante na lista messages. O parâmetro system define o comportamento geral do assistente, separado das mensagens do utilizador:
historico = [
{"role": "user", "content": "Quais são os prazos do RGPD para notificar uma fuga de dados?"}
]
resposta = client.messages.create(
model="claude-sonnet-5",
max_tokens=500,
system="És um assistente jurídico que responde em português de Portugal, de forma direta e sem floreados.",
messages=historico,
)
texto_resposta = resposta.content[0].text
historico.append({"role": "assistant", "content": texto_resposta})
historico.append({"role": "user", "content": "E se a fuga afetar menos de 100 utilizadores?"})
Cada vez que adiciona uma mensagem nova, tem de reenviar o histórico completo. Isto significa que o custo de uma conversa longa cresce a cada turno, o que torna o prompt caching (Passo 9) particularmente relevante para chatbots com muitas trocas de mensagens.
Passo 7: Tool Use, Função de Chamada com a Claude
Tool use permite que a Claude decida chamar uma função definida pelo programador em vez de responder apenas com texto. É a base de qualquer agente que precisa de consultar uma base de dados, enviar um email ou classificar um pedido segundo regras internas:
ferramentas = [
{
"name": "obter_prioridade_cliente",
"description": "Devolve o nível de prioridade contratual de um cliente pelo ID.",
"input_schema": {
"type": "object",
"properties": {
"cliente_id": {"type": "string", "description": "ID interno do cliente"}
},
"required": ["cliente_id"],
},
}
]
resposta = client.messages.create(
model="claude-sonnet-5",
max_tokens=500,
tools=ferramentas,
messages=[{"role": "user", "content": "Qual a prioridade do cliente C-4821?"}],
)
for bloco in resposta.content:
if bloco.type == "tool_use":
print("Claude quer chamar:", bloco.name, "com input:", bloco.input)
Depois de receber o bloco tool_use, o código da aplicação executa a função real (neste caso, uma consulta à base de dados de clientes) e devolve o resultado à Claude numa mensagem seguinte com role: "user" e um bloco tool_result. A Claude usa esse resultado para formular a resposta final ao utilizador.
Segurança: Prevenir Prompt Injection em Agentes com Tool Use
Assim que um agente ganha a capacidade de chamar funções, ganha também uma superfície de ataque nova. Um pedido de um cliente, o conteúdo de um PDF ou o texto de uma página web podem conter instruções escondidas destinadas a manipular a Claude para chamar uma ferramenta fora do contexto pretendido, um ataque conhecido como prompt injection. Cobrimos este tema em detalhe num tutorial dedicado à defesa contra prompt injection na API OpenAI, mas os princípios aplicam-se de igual forma à API da Claude.
A primeira defesa é tratar qualquer conteúdo gerado por terceiros (emails, PDFs, resultados de pesquisa web) como dados, nunca como instruções. Reforce isso no próprio system prompt, com uma frase explícita a dizer à Claude para ignorar instruções que apareçam dentro de conteúdo de utilizador ou de ferramentas. A segunda defesa é a validação no seu próprio código: nunca execute uma ferramenta apenas porque a Claude pediu, sobretudo se essa ferramenta tiver efeitos secundários como enviar dinheiro, apagar dados ou enviar emails.
ACOES_SENSIVEIS = {"cancelar_subscricao", "processar_reembolso", "eliminar_conta"}
def executar_ferramenta_com_seguranca(bloco_tool_use):
if bloco_tool_use.name in ACOES_SENSIVEIS:
aprovado = pedir_confirmacao_humana(bloco_tool_use)
if not aprovado:
return {"erro": "ação rejeitada por revisão manual"}
return executar_ferramenta(bloco_tool_use.name, bloco_tool_use.input)
Para ações reversíveis e de baixo risco, a automação total faz sentido. Para ações irreversíveis ou com impacto financeiro, mantenha sempre um humano no ciclo antes de executar. O OWASP Top 10 para Aplicações LLM lista prompt injection como o risco número um desta categoria de aplicações, e vale a pena rever essa lista antes de colocar qualquer agente com tool use em produção.
Passo 8: Visão, Processar Imagens e PDFs
Os modelos Claude aceitam imagens e PDFs diretamente na mensagem, sem precisar de OCR prévio. Para enviar uma imagem, codifique-a em base64 e inclua-a como bloco de conteúdo:
import base64
with open("fatura.png", "rb") as f:
imagem_base64 = base64.standard_b64encode(f.read()).decode("utf-8")
resposta = client.messages.create(
model="claude-sonnet-5",
max_tokens=500,
messages=[{
"role": "user",
"content": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": imagem_base64}},
{"type": "text", "text": "Extrai o valor total e a data desta fatura."}
],
}],
)
Para PDFs o processo é semelhante, mudando apenas o media_type para application/pdf. Isto é útil para automatizar extração de dados de faturas, contratos ou relatórios sem construir um pipeline de OCR à parte. A Claude interpreta tanto o texto como os elementos visuais do documento, como tabelas, gráficos e assinaturas, o que a torna mais fiável do que um OCR tradicional em documentos digitalizados de baixa qualidade.
Um detalhe a ter em conta é o limite de tamanho por ficheiro e o número máximo de imagens por pedido, ambos documentados na referência oficial da API. Para lotes grandes de documentos, é mais eficiente processar um ficheiro por chamada em vez de tentar enviar dezenas de páginas na mesma mensagem, já que isso simplifica o tratamento de erros caso um único documento falhe a validação.
Passo 9: Prompt Caching, Cortar Custos em Prompts Repetidos
Quando o mesmo bloco de texto (um manual de instruções, uma base de conhecimento, o histórico de uma conversa longa) aparece em várias chamadas seguidas, marque-o com cache_control para que a Claude não o reprocesse do zero:
resposta = client.messages.create(
model="claude-sonnet-5",
max_tokens=500,
system=[
{
"type": "text",
"text": manual_de_suporte_completo,
"cache_control": {"type": "ephemeral"},
}
],
messages=[{"role": "user", "content": "Como resolvo o erro E-102?"}],
)
Segundo o tarifário oficial da Anthropic, escrever no cache custa mais do que uma chamada normal (por exemplo $2,50 por MTok no Sonnet 5, contra $2 de input padrão), mas ler do cache custa apenas $0,20 por MTok, uma fração do preço. O cache mantém-se disponível durante uma janela de 5 minutos por predefinição, com opção de janelas mais longas para cargas de trabalho que o justifiquem. Em aplicações com um system prompt extenso e muitas chamadas por minuto, isto reduz a fatura de forma significativa.
Passo 10: Batch API, Processamento Assíncrono com 50% de Desconto
Para tarefas que não precisam de resposta imediata, como classificar dez mil tickets antigos durante a noite, a Batch API processa os pedidos de forma assíncrona com 50% de desconto sobre o preço normal:
lote = client.messages.batches.create(
requests=[
{
"custom_id": f"ticket-{i}",
"params": {
"model": "claude-haiku-4-5-20251001",
"max_tokens": 200,
"messages": [{"role": "user", "content": texto_do_ticket}],
},
}
for i, texto_do_ticket in enumerate(lista_de_tickets)
]
)
print("ID do lote:", lote.id, "estado:", lote.processing_status)
O lote é processado em segundo plano e os resultados ficam disponíveis para download assim que terminam, normalmente dentro de algumas horas. Combine a Batch API com o Haiku 4.5 para o custo mais baixo possível em tarefas de classificação em massa. Um caso de uso comum é correr o lote fora do horário de maior tráfego, por exemplo à noite, para reprocessar todo o histórico de tickets acumulado numa semana sem impacto no orçamento reservado para o tráfego em tempo real.
Passo 11: Tratamento de Erros e Rate Limits em Produção
Em produção, a aplicação vai encontrar erros de rede, limites de taxa e picos de tráfego no lado da Anthropic. O SDK oficial expõe exceções específicas que permitem tratar cada caso de forma diferente:
import anthropic
import time
def chamar_com_retry(mensagens, tentativas=3):
for tentativa in range(tentativas):
try:
return client.messages.create(
model="claude-sonnet-5",
max_tokens=500,
messages=mensagens,
)
except anthropic.RateLimitError:
espera = 2 ** tentativa
print(f"Rate limit atingido, a esperar {espera}s")
time.sleep(espera)
except anthropic.APIStatusError as erro:
if erro.status_code >= 500:
time.sleep(2 ** tentativa)
else:
raise
raise RuntimeError("Falhou após várias tentativas")
O Inquérito a Developers 2025 da Stack Overflow mostra que 46% dos programadores não confiam na precisão do output de ferramentas de IA, contra apenas 33% que confiam. Este ceticismo é saudável e reforça porque é que validar a resposta da Claude antes de a usar numa decisão automática (aprovar um reembolso, fechar um ticket, alterar um registo) deve ser tratado como parte obrigatória da arquitetura, não como um extra.
Passo 12: Projeto Completo, Assistente de Triagem de Tickets de Suporte
Junte tudo o que aprendeu num projeto funcional: um script que lê um ticket de suporte, usa tool use para classificar a categoria e a urgência, e devolve uma resposta estruturada pronta a integrar num sistema de helpdesk.
import anthropic
import json
client = anthropic.Anthropic()
ferramenta_triagem = [{
"name": "classificar_ticket",
"description": "Classifica um ticket de suporte por categoria e urgência.",
"input_schema": {
"type": "object",
"properties": {
"categoria": {
"type": "string",
"enum": ["faturacao", "tecnico", "conta", "outro"],
},
"urgencia": {
"type": "string",
"enum": ["baixa", "media", "alta", "critica"],
},
"resumo": {"type": "string", "description": "Resumo em uma frase"},
},
"required": ["categoria", "urgencia", "resumo"],
},
}]
def triar_ticket(texto_ticket: str) -> dict:
resposta = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=300,
tools=ferramenta_triagem,
tool_choice={"type": "tool", "name": "classificar_ticket"},
messages=[{"role": "user", "content": texto_ticket}],
)
for bloco in resposta.content:
if bloco.type == "tool_use":
return bloco.input
return {}
ticket_exemplo = "Não consigo aceder à minha conta desde ontem, já tentei recuperar a palavra-passe duas vezes."
resultado = triar_ticket(ticket_exemplo)
print(json.dumps(resultado, indent=2, ensure_ascii=False))
O parâmetro tool_choice força a Claude a usar sempre a mesma ferramenta, o que garante uma resposta estruturada e previsível, ideal para alimentar diretamente uma fila de trabalho. O output típico deste script é:
{
"categoria": "conta",
"urgencia": "alta",
"resumo": "Cliente sem acesso à conta após falha na recuperação de palavra-passe"
}
A partir daqui, o próximo passo natural é ligar esta função a uma fila real (RabbitMQ, SQS ou uma tabela de base de dados) e ao Passo 10 para processar tickets antigos em lote durante a noite.
Migrar de Outra API de IA para a Claude: Principais Diferenças
Se a sua equipa já tem código a apontar para outra API de modelos de linguagem, a migração para a Claude é sobretudo uma questão de ajustar a forma como o pedido é estruturado, não de reaprender conceitos novos. A ideia central é a mesma em todas as APIs de chat deste tipo: enviar uma lista de mensagens e receber uma resposta, sem estado guardado no servidor entre chamadas.
Três diferenças costumam apanhar quem migra pela primeira vez. A primeira é que a Claude trata o prompt de sistema como um parâmetro próprio, system, fora da lista messages. A segunda é que max_tokens é sempre obrigatório. A terceira é que o conteúdo de cada mensagem é uma lista de blocos tipados (texto, imagem, tool_use, tool_result) em vez de uma string simples, o que dá mais controlo mas exige algum código de conversão ao portar prompts existentes.
Para tool use, o formato do schema (name, description, input_schema em JSON Schema) é suficientemente próximo do padrão usado por outras APIs de function calling para que a conversão seja, na prática, uma questão de renomear campos.
Erros Comuns ao Integrar a API da Claude
Estas são as falhas mais frequentes observadas em integrações reais, e como evitá-las desde o início.
- Guardar a chave API no código-fonte: use sempre variáveis de ambiente ou um gestor de segredos, nunca uma string fixa no ficheiro Python. Se a chave chegar a ser comitada por engano, revogue-a imediatamente na Console e gere uma nova, mesmo que o repositório seja privado.
- Ignorar o limite de
max_tokens: respostas cortadas a meio de uma frase quase sempre significam que o valor está demasiado baixo para a tarefa pedida. Verifique o campostop_reasonda resposta, um valormax_tokensconfirma que foi este o motivo do corte. - Não implementar retries com backoff: tratar todo o tráfego como se a rede fosse perfeita causa falhas em cascata assim que há um pico de utilização, sobretudo em horários de maior tráfego do lado da Anthropic.
- Escolher sempre o Opus 5 por defeito: usar o modelo mais caro para classificações simples desperdiça orçamento que o Haiku 4.5 resolve com a mesma qualidade prática. Faça sempre um teste A/B de custo antes de fixar o modelo em produção.
- Esquecer a janela de 5 minutos do prompt caching: se as chamadas estiverem espaçadas por mais tempo do que isso, o cache expira e paga o preço de escrita outra vez, anulando a poupança esperada.
- Não validar o tipo de cada bloco de conteúdo: uma resposta pode conter blocos de texto,
tool_useouthinkingem simultâneo, e assumir sempre texto simples parte o código assim que a Claude decide chamar uma ferramenta. - Ultrapassar os limites de tamanho de imagem: ficheiros muito grandes ou em formatos não suportados falham silenciosamente se não forem validados antes do envio, por isso valide a extensão e o tamanho do ficheiro no seu próprio código antes de o codificar em base64.
Tabela de Preços da API Claude 2026
Além dos modelos base, a Anthropic cobra separadamente por funcionalidades adicionais. Estes valores foram confirmados na página oficial de preços em agosto de 2026.
| Funcionalidade | Custo | Detalhe |
|---|---|---|
| Batch API | -50% | Desconto sobre o preço normal de input e output |
| Prompt caching (escrita) | +25% a +50% | Sobre o preço de input padrão, TTL de 5 min por defeito |
| Prompt caching (leitura) | -90% | Sobre o preço de input padrão |
| Web search tool | $10 / 1.000 pesquisas | Tokens de input e output cobrados à parte |
| Code execution | 50h grátis/dia por organização | Depois, $0,05 por hora por contentor |
| Inferência exclusiva nos EUA | 1,1x | Sobre o preço de input e output padrão |
Para orçamentar um projeto novo, comece por estimar o número médio de tokens por pedido (o próprio response da API devolve esse valor em usage.input_tokens e usage.output_tokens) e multiplique pelo volume esperado de chamadas por mês. Isto dá uma base realista antes de decidir entre Opus 5, Sonnet 5 ou Haiku 4.5.
Resolução de Problemas: Erros Frequentes e Como Resolver
Esta tabela cobre os erros mais reportados por quem integra a API pela primeira vez, do lado da autenticação até ao comportamento do streaming em ligações instáveis. Guarde-a junto da documentação do seu próprio projeto para acelerar o diagnóstico quando um destes casos aparecer em produção.
| Erro | Causa Provável | Solução |
|---|---|---|
| 401 Unauthorized | Chave API em falta, inválida ou revogada | Confirme a variável ANTHROPIC_API_KEY e gere uma nova chave se necessário |
| 400 Invalid Request | max_tokens em falta ou schema de tool inválido | Reveja o payload contra a documentação da Messages API |
| 429 Rate Limit Exceeded | Demasiados pedidos por minuto para o nível de conta | Implemente backoff exponencial e considere pedir aumento de limite na Console |
| 529 Overloaded | Capacidade momentaneamente esgotada do lado da Anthropic | Repita o pedido com espera crescente, normalmente resolve em segundos |
| Resposta cortada a meio | max_tokens demasiado baixo para a tarefa | Aumente o limite ou divida a tarefa em partes mais pequenas |
| Cache sempre com miss | Pedidos espaçados por mais de 5 minutos | Agrupe chamadas relacionadas num intervalo mais curto ou use cache estendido |
| Stream interrompido a meio | Timeout de rede ou ligação instável no cliente | Capture a exceção e reabra o stream com o histórico já recebido |
| Modelo não encontrado | ID de modelo desatualizado ou mal escrito | Confirme o ID exato na documentação, IDs de modelos legados continuam válidos mas não recebem atualizações |
| Recusa inesperada de conteúdo | O pedido colide com a política de uso da Anthropic | Reformule o pedido e reveja a política de uso antes de reenviar |
Dicas Avançadas para Ambientes de Produção
Depois de ter a integração básica a funcionar, estas práticas separam um protótipo de um sistema pronto para produção.
Combine prompt caching com a Batch API sempre que processar grandes volumes de documentos com o mesmo contexto de sistema: o cache reduz o custo de cada pedido individual, e o lote reduz ainda mais 50% sobre esse valor já reduzido. Para tarefas que exigem raciocínio mais profundo, ative o extended thinking apenas nos casos que o justificam, já que aumenta a latência e o consumo de tokens. Use structured outputs quando precisar que a resposta siga sempre o mesmo formato JSON, o que evita ter de escrever lógica de parsing frágil no seu lado.
Antes de escalar para milhares de utilizadores, teste a sua própria integração sob carga, não apenas a API em isolado. Muitas vezes o gargalo é a fila de pedidos ou o timeout do servidor web, não o modelo.
Para equipas com requisitos de conformidade europeus, avalie correr a Claude através do Google Cloud ou do Microsoft Foundry em vez da API direta da Anthropic. Ambas as opções mantêm o processamento dentro de infraestrutura cloud com presença na UE, o que simplifica a resposta a pedidos de auditoria ao abrigo do RGPD. Vale também a pena acompanhar como o AI Act europeu classifica o seu caso de uso, já que aplicações que tomam decisões automatizadas sobre pessoas (como aprovar ou recusar um pedido) podem cair em categorias de risco mais elevado.
Monitorize sempre usage.input_tokens e usage.output_tokens em cada resposta e envie esses valores para o seu sistema de observabilidade. Sem esses dados, é impossível prever a fatura mensal ou identificar qual funcionalidade está a consumir mais orçamento antes de a fatura chegar.
Duas funcionalidades adicionais valem a pena explorar depois de dominar o essencial. Os service tiers permitem escolher entre disponibilidade garantida e custo previsível, o que interessa a aplicações com picos de tráfego sazonais. O fast mode, atualmente em pré-visualização de investigação para o Opus 5, entrega respostas até 2,5 vezes mais rápidas ao dobro do preço padrão, uma troca que faz sentido em funcionalidades de utilizador final onde cada segundo de espera importa mais do que o custo por chamada.
Perguntas Frequentes sobre a API da Claude
A API da Claude é gratuita?
Não. A Anthropic cobra por token processado, com preços que variam por modelo. Existe uma oferta gratuita separada em claude.ai para uso pessoal via chat, mas a API cobra desde o primeiro pedido.
Qual a diferença entre o Claude Opus 5 e o Claude Sonnet 5?
O Opus 5 é o modelo principal da Anthropic, otimizado para codificação agêntica complexa e trabalho empresarial, com preço de $5 de input e $25 de output por milhão de tokens. O Sonnet 5 custa $2 de input e $10 de output, com desempenho próximo do Opus 5 em muitas tarefas do dia a dia.
Preciso de cartão de crédito para gerar a chave API?
Pode criar a conta e gerar uma chave sem cartão, mas precisa de adicionar um método de pagamento para as chamadas serem processadas além do saldo de créditos iniciais oferecidos.
A API da Claude funciona em português?
Sim. Os modelos Claude respondem em português quando o pedido é feito nesse idioma, e o parâmetro system permite forçar português de Portugal de forma explícita, como mostrado no Passo 6.
Como reduzo o custo de uma aplicação com muitas chamadas?
Combine três táticas: use o Haiku 4.5 para tarefas simples, ative prompt caching para contexto repetido, e mude para a Batch API sempre que a resposta não precisar de ser imediata.
O que acontece se ultrapassar o limite de taxa (rate limit)?
A API devolve um erro 429. O SDK não repete o pedido automaticamente, por isso é responsabilidade da aplicação implementar retries com espera crescente, como mostrado no Passo 11.
Posso usar a API da Claude para processar dados sensíveis de clientes?
Tecnicamente sim, mas reveja sempre os termos de tratamento de dados da Anthropic e o âmbito do RGPD antes de enviar dados pessoais identificáveis. Para casos sensíveis, considere as opções de cloud com residência na UE mencionadas na secção de dicas avançadas.
Vale a pena migrar de um modelo legado (como o Opus 4.8) para o Opus 5?
Na maioria dos casos sim, já que o Opus 5 está classificado pela Anthropic como o modelo com melhor desempenho em intelligence e tarefas agênticas na sua gama, ao mesmo preço por token do Opus 4.8. Teste a migração num ambiente de staging antes de trocar o modelo em produção, já que pequenas diferenças de comportamento podem afetar prompts muito específicos.
Preciso de escolher entre Python e Node.js?
Não. Ambos os SDKs oficiais cobrem o mesmo conjunto de funcionalidades. A escolha deve seguir a stack já usada pela sua equipa.
Como testo a integração sem gastar créditos em cada alteração?
Use o Haiku 4.5 durante o desenvolvimento, o modelo mais barato, e só troque para o Sonnet 5 ou o Opus 5 na fase final de testes de qualidade.
Cobertura Relacionada
- Ollama: 178K GitHub Stars, LLMs Locais em 12 Passos [2026]
- Fine-Tuning de LLMs com Hugging Face: 10 Passos [2026]
- API OpenAI em Node.js: Bloqueia Prompt Injection em 10 Passos [2026]
- Amália: Portugal Cria IA Aberta, 9B Parâmetros, €7M [2026]
- DeepSeek V4-Flash Lidera OpenRouter 15 Semanas Seguidas [2026]
- AI Act: Transparência em Vigor na UE, Multas Até 3% [2026]
Para mais tutoriais e análises sobre modelos de linguagem, consulte a secção de Inteligência Artificial do shattered.io. Documentação técnica adicional está disponível na documentação oficial da Anthropic, no tarifário oficial, no Anthropic Academy, no pacote Python no PyPI, no repositório do SDK no GitHub e no OWASP Top 10 para Aplicações LLM, útil para reforçar a segurança de qualquer agente que construa com tool use.




