DEV Community

Cover image for Como Usar a API Claude Opus 4.7?
Lucas
Lucas

Posted on • Originally published at apidog.com

Como Usar a API Claude Opus 4.7?

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.

Experimente o Apidog hoje

Começando

Obtenha sua Chave de API

  1. Cadastre-se em console.anthropic.com
  2. Acesse API Keys no painel
  3. Clique em Criar Chave e copie a chave gerada
  4. Armazene como variável de ambiente:
export ANTHROPIC_API_KEY="sk-ant-your-key-here"
Enter fullscreen mode Exit fullscreen mode

Instale o SDK

Python:

pip install anthropic
Enter fullscreen mode Exit fullscreen mode

TypeScript/Node.js:

npm install @anthropic-ai/sdk
Enter fullscreen mode Exit fullscreen mode

Endpoint da API

Todas as solicitações usam:

POST https://api.anthropic.com/v1/messages
Enter fullscreen mode Exit fullscreen mode

Cabeçalhos obrigatórios:

x-api-key: YOUR_API_KEY
anthropic-version: 2023-06-01
content-type: application/json
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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);
Enter fullscreen mode Exit fullscreen mode

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."}
    ]
  }'
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

Pontos importantes:

  • "type": "adaptive" ativa o pensamento adaptativo. Não defina budget_tokens.
  • "display": "summarized" exibe o pensamento na resposta.
  • Use o parâmetro effort para 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..."}
    ]
)
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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?"
                }
            ]
        }
    ]
)
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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})
Enter fullscreen mode Exit fullscreen mode

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"],
)
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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);
  }
}
Enter fullscreen mode Exit fullscreen mode

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)"}
    ]
)
Enter fullscreen mode Exit fullscreen mode

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,
)
Enter fullscreen mode Exit fullscreen mode

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.

Apidog interface

Como configurar:

  1. Crie um projeto no Apidog e adicione o endpoint da API Claude Messages
  2. Salve sua ANTHROPIC_API_KEY como variável de ambiente
  3. 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-6 e claude-opus-4-7 para 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_tokens para 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)