Source: https://aiprimetech.io/pt/learn/openai-compatible-claude-api/ [Início](/pt/) / [Aprenda](/pt/learn/) / Use o Claude com o SDK da OpenAI: endpoint compatível com OpenAI, streaming, ferramentas e limites # Use Claude com o SDK da OpenAI: endpoint compatível com OpenAI, streaming, ferramentas e limites O código escrito para o SDK da OpenAI pode chamar o Claude sem precisar ser reescrito: aponte base_url para o /v1do gateway, use uma chave do gateway e um ID de modelo Claude. O endpoint aceita solicitações Chat Completions, transmite em streaming no mesmo formato e oferece suporte a chamadas de funções. Alguns recursos do Claude só existem no formato nativo da Anthropic; a última seção explica quando mudar. ## Informações sobre o endpoint | Item | Valor | URL base | https://aiprimetech.io/v1 | Endpoint de chat | POST https://aiprimetech.io/v1/chat/completions | Lista de modelos | GET https://aiprimetech.io/v1/models | Autenticação | Authorization: Bearer ; x-api-key também é aceito | Modelos | IDs do Claude, como claude-sonnet-5; IDs do GPT com uma chave do grupo Codex ## Python terminalCopiar ``` pip install openai ``` app.pyCopiar ``` import os from openai import OpenAI client = OpenAI(base_url="https://aiprimetech.io/v1", api_key=os.environ["AIPRIME_API_KEY"]) resp = client.chat.completions.create( model="claude-sonnet-5", max_tokens=1024, messages=[ {"role": "system", "content": "You are a concise assistant."}, {"role": "user", "content": "Explain idempotency keys in two sentences."}, ], ) print(resp.choices[0].message.content) print(resp.usage) ``` base_url deve terminar em /v1: o SDK acrescenta /chat/completions ao final. Sem /v1 a solicitação chega ao site e retorna HTML; com /v1 duas vezes, retorna 404 page not found. ## Node.js app.mjsCopiar ``` import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://aiprimetech.io/v1", apiKey: process.env.AIPRIME_API_KEY }); const resp = await client.chat.completions.create({ model: "claude-sonnet-5", max_tokens: 1024, messages: [{ role: "user", content: "Write a haiku about retries." }], }); console.log(resp.choices[0].message.content); ``` ## Transmissão stream.pyCopiar ``` stream = client.chat.completions.create( model="claude-sonnet-5", max_tokens=2048, stream=True, stream_options={"include_usage": True}, messages=[{"role": "user", "content": "Outline a zero-downtime migration."}], ) for chunk in stream: if chunk.choices and chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="", flush=True) if chunk.usage: print("\n", chunk.usage) ``` Use streaming para respostas longas: uma solicitação sem streaming precisa terminar dentro do tempo limite do cliente; com streaming, isso não é necessário. include_usage adiciona um bloco final com a contagem de tokens. Saiba mais sobre por que isso importa em [respostas de LLM com streaming](/pt/blog/streaming-api-guide/). ## Chamada de funções tools.pyCopiar ``` tools = [{ "type": "function", "function": { "name": "get_weather", "description": "Current weather for a city", "parameters": { "type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"], }, }, }] resp = client.chat.completions.create( model="claude-sonnet-5", max_tokens=512, tools=tools, messages=[{"role": "user", "content": "What is the weather in Paris?"}], ) call = resp.choices[0].message.tool_calls[0] print(call.function.name, call.function.arguments) # get_weather {"city": "Paris"} ``` A resposta retorna com finish_reason: "tool_calls" e, no estilo OpenAI, tool_calls. Execute a função, acrescente uma mensagem tool com o resultado e o tool_call_idcorrespondente e faça outra chamada, exatamente como com os modelos da OpenAI. ## Raciocínio e pensamento reasoning_effort corresponde à configuração de esforço do Claude e aceita low, medium, high, xhigh ou max. O valor none é rejeitado. Quando o modelo pensa, seu raciocínio chega em um campo separado reasoning_content ao lado de content, de modo que o código que lê message.content continua funcionando sem alterações. reasoning.pyCopiar ``` resp = client.chat.completions.create( model="claude-opus-5-5", max_tokens=4096, reasoning_effort="high", messages=[{"role": "user", "content": "Find the bug in this function: ..."}], ) ``` ## Modelos | ID do modelo | Use para | claude-sonnet-5 | Padrão para programação e trabalho com agentes: rápido, eficiente e de preço intermediário. | claude-opus-5-5 | Raciocínio mais complexo, grandes refatorações e execuções longas de agentes. | claude-fable-5-1 | O mais capaz e mais caro; reserve-o para as tarefas mais difíceis. | claude-haiku-4-5 | Barato e rápido: títulos, resumos, classificação e pequenas etapas. Use estes IDs exatamente como estão. IDs antigos com data, como claude-3-5-sonnet-20241022 ainda aparecem em algumas listas de modelos, mas não são disponibilizados e retornam um erro de modelo não compatível. ## Quando usar a API nativa da Anthropic O formato da OpenAI abrange chat, streaming, ferramentas e imagens. Use o formato Messages da própria Anthropic, no mesmo gateway, quando precisar de pontos explícitos de delimitação do cache de prompts, blocos de pensamento que são reenviados entre turnos, documentos PDF ou citações. O [guia do SDK Python da Anthropic](/pt/learn/anthropic-python-sdk/) e a [guia do Vercel AI SDK](/pt/learn/use-claude-api-with-vercel-ai-sdk/) abordam essa opção. ## Solução de problemas | O que você vê | Causa | Correção | Um erro de análise de JSON, com a resposta começando por < | base_url sem /v1 | https://aiprimetech.io/v1 | 404 page not found | /v1 duas vezes | Exatamente um /v1 | 401 Invalid API key | Chave ausente ou incorreta no processo | Verifique a variável; cada chave pertence a um gateway | Modelo não compatível | ID de modelo antigo com data ou com erro de digitação | Use um ID da tabela acima | 'none' is not supported | reasoning_effort="none" | Use low ou superior, ou omita esse parâmetro | 429 Concurrency limit exceeded for user | Requisições demais em andamento | Limite o paralelismo; consulte [limites de requisições e novas tentativas](/pt/blog/rate-limits-and-retries/) | Tempo limite excedido em respostas longas | Solicitação longa sem streaming | Use streaming ou aumente o tempo limite do cliente ## Perguntas frequentes Posso usar o Claude com o SDK da OpenAI? Sim, por meio de um endpoint compatível com a OpenAI: defina base_url como o endereço /v1 do gateway, use uma chave de API do gateway e um ID de modelo Claude, como claude-sonnet-5. O streaming e as chamadas de função funcionam no formato da OpenAI. Qual URL base devo usar para o Claude no SDK da OpenAI? A URL do gateway terminada em /v1, por exemplo, https://aiprimetech.io/v1. O SDK acrescenta /chat/completions. As chamadas de função funcionam com o Claude por meio do formato da OpenAI? Sim. Envie tools no formato da OpenAI; o Claude retorna tool_calls com finish_reason definido como tool_calls, e você responde com mensagens de ferramenta, como de costume. Quando devo usar a API nativa da Anthropic? Quando precisar de cache explícito de prompts, blocos de pensamento entre turnos, entrada de PDF ou citações. Esses recursos fazem parte do formato Messages da Anthropic. Comece a usar o Claude em minutos Obtenha uma chave de API — sem precisar de conta na Anthropic nem de lista de espera.[Obtenha sua chave de API](/register) AI Prime Tech é um gateway de API independente. Não tem afiliação com a Anthropic, não é endossado por ela e não é seu revendedor. Claude e os nomes dos modelos relacionados são marcas comerciais de seus respectivos proprietários. ## Mais guias da API do Claude [Como obter uma chave de API do Claude](/pt/learn/how-to-get-a-claude-api-key/)[Preços da API Claude explicados](/pt/learn/claude-api-pricing-explained/)[A maneira mais barata de usar a API do Claude](/pt/learn/cheapest-way-to-use-claude-api/)[Cursor ilimitado com a API do Claude](/learn/use-claude-api-with-cursor/)[Acesso ilimitado ao Claude Code](/pt/learn/use-claude-api-with-claude-code/)[Gateway da API do Claude vs. acesso direto à Anthropic](/pt/learn/claude-api-vs-anthropic-direct/)[Modelos Claude explicados: uma comparação entre Claude Opus, Sonnet, Haiku e Fable — todos os modelos da API Claude, nomes e preços dos modelos Anthropic (2026)](/pt/learn/claude-api-models-compared/)[Pagamento da API do Claude com criptomoedas](/pt/learn/claude-api-with-crypto-payment/)[Acesso à API do Claude sem lista de espera](/pt/learn/claude-api-without-waitlist/)[Como reduzir o uso de tokens do Claude](/pt/learn/how-to-reduce-claude-token-usage/)[Cline ilimitado com a API do Claude](/pt/learn/use-claude-api-with-cline/)[Roo Code ilimitado com a API do Claude](/pt/learn/use-claude-api-with-roo-code/)[Claude ilimitado nas IDEs da JetBrains](/pt/learn/use-claude-api-with-jetbrains/)[Aider com Claude por meio de um gateway: ANTHROPIC_API_BASE, arquivos de configuração, modo arquiteto e correções](/pt/learn/use-claude-api-with-aider/)[Claude ilimitado no VS Code](/pt/learn/use-claude-api-with-vscode/)[Configuração do OpenCode para Claude: configuração do opencode.json, modelos e erros comuns](/pt/learn/use-claude-api-with-opencode/)[Hermes Agent com Claude por meio de um gateway: configuração de provedor personalizado, controles de custos e correções](/pt/learn/run-hermes-agent-with-claude-api/)[Executando OpenClaw ilimitado com Claude](/pt/learn/run-openclaw-with-claude-api/)[O que significa uma API compatível com a Anthropic](/pt/learn/anthropic-compatible-api/)[Chave de API do Claude Code — ANTHROPIC_API_KEY: como obtê-la, configurá-la e quando usar claude setup-token em seu lugar](/pt/learn/claude-code-api-key-setup/)[Custos da API do Claude Code — Preços e como reduzi-los](/pt/learn/claude-code-api-costs/)[Erros da API Claude explicados: erro de servidor 500, sobrecarga 529, limite de requisições 429, requisição inválida 400 — e a correção para cada um](/pt/learn/claude-api-errors-troubleshooting/)[Como comprar créditos da API do Claude — e por que um crédito do Claude é melhor do que qualquer oferta de "comprar conta do Claude"](/pt/learn/buy-claude-api-credits/)[API Claude gratuita: existe uma chave de API Claude gratuita e o que realmente é gratuito em 2026?](/pt/learn/claude-api-free-trial/)[API do Claude vs assinatura Claude Pro/Max — Qual escolher](/pt/learn/claude-api-vs-subscription/)[Codex CLI com um provedor personalizado: config.toml, modelos GPT e Claude, extensão para IDE e correções](/pt/learn/use-claude-api-with-codex/)[Conectando Claude ao n8n](/pt/learn/use-claude-api-with-n8n/)[Roteando LiteLLM para Claude](/pt/learn/use-claude-api-with-litellm/)[Usando Claude no Kilo Code](/pt/learn/use-claude-api-with-kilo-code/)[GitHub Copilot Chat com Claude por meio de um gateway: configuração de Custom Endpoint, modo agente e correções](/pt/learn/use-claude-api-with-github-copilot/)[Conecte o Zed ao Claude por meio do gateway](/pt/learn/use-claude-api-with-zed/)[Conecte o Cherry Studio ao Claude](/pt/learn/use-claude-api-with-cherry-studio/)[ChatAnthropic no LangChain: importação, base_url, streaming, ferramentas e erros](/pt/learn/use-claude-api-with-langchain/)[SDK de Python da Anthropic: instale, defina base_url, use streaming e trate erros](/pt/learn/anthropic-python-sdk/)[Claude com o Vercel AI SDK: baseURL de createAnthropic, streaming e correções](/pt/learn/use-claude-api-with-vercel-ai-sdk/)[Execute o Factory Droid com o Claude](/pt/learn/use-claude-api-with-factory-droid/)[A API do Claude Code, explicada](/pt/learn/claude-code-api/)[Como integrar a API do Claude à sua aplicação](/pt/learn/claude-api-integration/)[Como obter uso ilimitado do Claude — e por que não existe "Claude Code crackeado"](/pt/learn/get-unlimited-claude-usage/)