Resumo
Claude Opus 4.7 (claude-opus-4-7) é o modelo GA mais avançado da Anthropic. Ele oferece janela de contexto de 1M tokens, saída máxima de 128K, pensamento adaptativo, novo nível de esforço xhigh, orçamentos de tarefas, visão de alta resolução (3.75 MP) e suporte ao uso de ferramentas. Este artigo mostra como configurar a API, autenticar, e usar cada recurso com exemplos práticos em Python, TypeScript e cURL.
Começando
Obtenha sua Chave de API
- Cadastre-se em console.anthropic.com
- Acesse API Keys no painel
- Clique em Criar Chave e copie a chave gerada
- Armazene como variável de ambiente:
export ANTHROPIC_API_KEY="sk-ant-your-key-here"
Instale o SDK
Python:
pip install anthropic
TypeScript/Node.js:
npm install @anthropic-ai/sdk
Endpoint da API
Todas as solicitações usam:
POST https://api.anthropic.com/v1/messages
Cabeçalhos obrigatórios:
x-api-key: YOUR_API_KEY
anthropic-version: 2023-06-01
content-type: application/json
Solicitação de Texto Básica
Envie uma mensagem e receba a resposta.
Python:
import anthropic
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
messages=[
{"role": "user", "content": "Explique como funciona HTTP/2 server push em três frases."}
]
)
print(message.content[0].text)
TypeScript:
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const message = await client.messages.create({
model: "claude-opus-4-7",
max_tokens: 1024,
messages: [
{ role: "user", content: "Explique como funciona HTTP/2 server push em três frases." }
],
});
console.log(message.content[0].text);
cURL:
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-opus-4-7",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Explique como funciona HTTP/2 server push em três frases."}
]
}'
Pensamento Adaptativo
O Opus 4.7 suporta apenas pensamento adaptativo, que deve ser ativado.
Python:
message = client.messages.create(
model="claude-opus-4-7",
max_tokens=16384,
thinking={
"type": "adaptive",
"display": "summarized" # opcional: mostra o pensamento na resposta
},
messages=[
{"role": "user", "content": "Analise a complexidade de tempo desse algoritmo e sugira otimizações:\n\ndef find_pairs(arr, target):\n result = []\n for i in range(len(arr)):\n for j in range(i+1, len(arr)):\n if arr[i] + arr[j] == target:\n result.append((arr[i], arr[j]))\n return result"}
]
)
for block in message.content:
if block.type == "thinking":
print("Pensamento:", block.thinking)
elif block.type == "text":
print("Resposta:", block.text)
Pontos importantes:
-
"type": "adaptive"ativa o pensamento adaptativo. Não definabudget_tokens. -
"display": "summarized"exibe o pensamento na resposta. - Use o parâmetro
effortpara definir a profundidade do raciocínio.
Usando o Parâmetro Effort
message = client.messages.create(
model="claude-opus-4-7",
max_tokens=16384,
thinking={"type": "adaptive"},
output_config={"effort": "xhigh"}, # xhigh | high | medium | low
messages=[
{"role": "user", "content": "Faça uma revisão deste pull request para vulnerabilidades de segurança..."}
]
)
Níveis de esforço do Opus 4.7:
| Nível | Melhor para |
|---|---|
xhigh |
Codificação, agentes, raciocínio complexo |
high |
Tarefas sensíveis à inteligência |
medium |
Equilíbrio entre velocidade e qualidade |
low |
Tarefas simples, respostas rápidas |
Visão de Alta Resolução
Suporte para imagens até 2.576 pixels na borda longa (3.75MP).
Python — imagem por URL:
message = client.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "url",
"url": "https://example.com/architecture-diagram.png"
}
},
{
"type": "text",
"text": "Descreva este diagrama de arquitetura. Liste todos os serviços e conexões."
}
]
}
]
)
print(message.content[0].text)
Python — imagem local com base64:
import base64
with open("screenshot.png", "rb") as f:
image_data = base64.standard_b64encode(f.read()).decode("utf-8")
message = client.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image_data
}
},
{
"type": "text",
"text": "Quais bugs de UI você vê neste screenshot?"
}
]
}
]
)
Imagens maiores consomem mais tokens. Redimensione para economizar.
Uso de Ferramentas (Chamada de Função)
Claude pode chamar funções definidas por você.
Python:
import json
tools = [
{
"name": "get_weather",
"description": "Obtém o clima atual de uma cidade. Retorna temperatura, condições e umidade.",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Nome da cidade, ex: 'São Paulo'"
},
"units": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "Unidade de temperatura"
}
},
"required": ["city"]
}
}
]
messages = [
{"role": "user", "content": "Como está o clima em Tóquio agora?"}
]
# Primeira chamada — Claude solicita uma ferramenta
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
tools=tools,
messages=messages,
)
# Processa chamadas de ferramenta
if response.stop_reason == "tool_use":
messages.append({"role": "assistant", "content": response.content})
tool_results = []
for block in response.content:
if block.type == "tool_use":
# Execute sua função aqui
result = {"temperature": 22, "conditions": "Parcialmente nublado", "humidity": 65}
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": json.dumps(result)
})
messages.append({"role": "user", "content": tool_results})
# Segunda chamada — Claude usa resultado da ferramenta
final_response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
tools=tools,
messages=messages,
)
print(final_response.content[0].text)
Padrão de Loop Agente
def run_agent(system_prompt: str, tools: list, user_message: str) -> str:
messages = [{"role": "user", "content": user_message}]
while True:
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=16384,
system=system_prompt,
tools=tools,
thinking={"type": "adaptive"},
output_config={"effort": "xhigh"},
messages=messages,
)
messages.append({"role": "assistant", "content": response.content})
if response.stop_reason != "tool_use":
return "".join(
block.text for block in response.content
if hasattr(block, "text")
)
tool_results = []
for block in response.content:
if block.type == "tool_use":
result = execute_tool(block.name, block.input)
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result,
})
messages.append({"role": "user", "content": tool_results})
Orçamentos de Tarefas (Beta)
Defina um orçamento de tokens para o ciclo completo do agente.
response = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=128000,
output_config={
"effort": "high",
"task_budget": {"type": "tokens", "total": 128000},
},
messages=[
{"role": "user", "content": "Revise o código e proponha um plano de refatoração."}
],
betas=["task-budgets-2026-03-13"],
)
Restrições:
- Orçamento mínimo: 20.000 tokens
- Consultivo, não rígido — pode exceder
- Diferente de
max_tokens - Requer cabeçalho beta
task-budgets-2026-03-13
Streaming de Respostas
Receba a resposta em tempo real.
Python:
with client.messages.stream(
model="claude-opus-4-7",
max_tokens=4096,
messages=[
{"role": "user", "content": "Escreva uma função Python para ler arquivos CSV com tratamento de erros."}
]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
TypeScript:
const stream = await client.messages.stream({
model: "claude-opus-4-7",
max_tokens: 4096,
messages: [
{ role: "user", content: "Escreva uma função Python para ler arquivos CSV com tratamento de erros." }
],
});
for await (const event of stream) {
if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
process.stdout.write(event.delta.text);
}
}
Com display: "summarized", blocos de pensamento são transmitidos antes do texto. Sem isso, há uma pausa antes da resposta.
Cache de Prompts
Reduza custos cacheando prompts longos ou repetitivos.
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
system=[
{
"type": "text",
"text": "Você é um revisor sênior de código. Revise código por vulnerabilidades de segurança, performance e boas práticas...",
"cache_control": {"type": "ephemeral"}
}
],
messages=[
{"role": "user", "content": "Revise esta função:\n\ndef process_user_input(data):\n return eval(data)"}
]
)
Preços do cache para Opus 4.7:
| Operação | Custo |
|---|---|
| Escrita de cache 5 min | $6.25 / MTok (1.25x base) |
| Escrita de cache 1 hora | $10 / MTok (2x base) |
| Leitura/acerto de cache | $0.50 / MTok (0.1x base) |
Uma leitura de cache já compensa a escrita de 5 minutos; duas leituras compensam 1 hora.
Conversas Multi-Turno
Mantenha o contexto adicionando mensagens ao array.
messages = []
# Turno 1
messages.append({"role": "user", "content": "Preciso construir uma REST API para um app de tarefas."})
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
messages=messages,
)
messages.append({"role": "assistant", "content": response.content})
# Turno 2
messages.append({"role": "user", "content": "Adicione autenticação com tokens JWT."})
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
messages=messages,
)
Testando suas Chamadas de API com Apidog
Integrar com a API Claude envolve payloads complexos: mensagens multi-turno, ferramentas, imagens base64 e streaming. Uma ferramenta como Apidog facilita depuração e testes.
Como configurar:
- Crie um projeto no Apidog e adicione o endpoint da API Claude Messages
- Salve sua
ANTHROPIC_API_KEYcomo variável de ambiente - Defina os cabeçalhos obrigatórios (
x-api-key,anthropic-version,content-type)
Testando fluxos de ferramentas:
- Encadeie solicitações para simular um loop completo de uso de ferramentas: envie a mensagem, inspecione a chamada de ferramenta do Claude, envie o resultado e veja tudo visualmente.
Comparando modelos:
- Execute os mesmos prompts com
claude-opus-4-6eclaude-opus-4-7para comparar tokens, qualidade e latência. O executor de testes do Apidog facilita A/B testing.
Validação de esquemas:
- Defina esquemas JSON para respostas esperadas e o Apidog valida automaticamente se Claude responde no formato correto.
Erros Comuns e Soluções
| Erro | Causa | Solução |
|---|---|---|
400: thinking.budget_tokens not supported |
Usando sintaxe de pensamento antigo | Use thinking: {"type": "adaptive"}
|
400: temperature not supported |
Parâmetros de amostragem removidos | Remova temperature, top_p, top_k
|
400: max_tokens exceeded |
Novo tokenizador gera mais tokens | Aumente max_tokens (até 128.000) |
| 429: Rate limited | Muitas requisições | Implemente backoff exponencial, revise limites |
| Blocos de pensamento vazios | Display padrão é "omitted"
|
Adicione display: "summarized"
|
Referência de Preços
| Uso | Custo |
|---|---|
| Tokens de entrada | $5 / MTok |
| Tokens de saída | $25 / MTok |
| Entrada em lote | $2.50 / MTok |
| Saída em lote | $12.50 / MTok |
| Leituras de cache | $0.50 / MTok |
| Escritas de cache 5 min | $6.25 / MTok |
| Escritas de cache 1 hora | $10 / MTok |
O novo tokenizador do Opus 4.7 pode usar até 35% mais tokens para o mesmo texto que o Opus 4.6. Use
/v1/messages/count_tokenspara estimar custos antes de ir para produção.
Conclusão
O Claude Opus 4.7 é o modelo mais poderoso da Anthropic até agora. Apesar da compatibilidade com o Opus 4.6, as remoções de parâmetros exigem ajustes no código. As novas funções — pensamento adaptativo, esforço xhigh, orçamentos de tarefas e visão de alta resolução — dão mais controle sobre raciocínio e custos.
Comece pela solicitação básica, adicione pensamento adaptativo para tarefas complexas e evolua para uso de ferramentas e orçamentos conforme sua aplicação cresce. Teste e valide tudo com o Apidog para garantir integrações robustas e eficientes.

Top comments (0)