Esta camada de compatibilidade destina-se principalmente a testar e comparar capacidades de modelos, e não é considerada uma solução de longo prazo ou pronta para produção na maioria dos casos de uso. Embora a intenção seja que ela permaneça totalmente funcional e sem alterações que quebrem a compatibilidade, a prioridade é a confiabilidade e a eficácia da API do Claude.
Para mais informações sobre limitações de compatibilidade conhecidas, consulte Limitações importantes de compatibilidade com OpenAI.
Se você encontrar algum problema com o recurso de compatibilidade com o OpenAI SDK, compartilhe seu feedback por meio deste formulário de feedback de compatibilidade.
Para a melhor experiência e acesso ao conjunto completo de recursos da API do Claude (processamento de PDF, citações, pensamento estendido e cache de prompt), use a API do Claude nativa.
Para usar o recurso de compatibilidade com o OpenAI SDK, você precisará:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("ANTHROPIC_API_KEY"), # Your Claude API key
base_url="https://api.anthropic.com/v1/", # the Claude API endpoint
)
response = client.chat.completions.create(
model="claude-opus-4-8", # Claude model name
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who are you?"},
],
)
print(response.choices[0].message.content)Aqui estão as diferenças mais substanciais em relação ao uso da OpenAI:
strict para chamadas de função é ignorado, o que significa que não há garantia de que o JSON de uso de ferramentas siga o schema fornecido. Para conformidade garantida com o schema, use a API do Claude nativa com Structured Outputs.A maioria dos campos não suportados é ignorada silenciosamente em vez de produzir erros. Todos eles estão documentados abaixo.
Se você fez muitos ajustes no seu prompt, é provável que ele esteja bem otimizado especificamente para a OpenAI. Considere usar o aprimorador de prompts no Claude Console como um bom ponto de partida.
A maioria das entradas do OpenAI SDK mapeia claramente de forma direta para os parâmetros da API da Anthropic, mas uma diferença distinta é o tratamento de prompts de sistema / desenvolvedor. Esses dois tipos de prompt podem ser inseridos ao longo de uma conversa de chat via OpenAI. Como a Anthropic suporta apenas uma mensagem de sistema inicial, a API pega todas as mensagens de sistema/desenvolvedor e as concatena com uma única quebra de linha (\n) entre elas. Essa string completa é então fornecida como uma única mensagem de sistema no início das mensagens.
Você pode habilitar as capacidades de pensamento estendido adicionando o parâmetro thinking. Embora isso melhore o raciocínio do Claude para tarefas complexas, o OpenAI SDK não retorna o processo de pensamento detalhado do Claude. Para recursos completos de pensamento estendido, incluindo acesso à saída de raciocínio passo a passo do Claude, use a API do Claude nativa.
response = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "Who are you?"}],
extra_body={"thinking": {"type": "enabled", "budget_tokens": 2000}},
)Os limites de taxa seguem os limites padrão da Anthropic para o endpoint /v1/messages.
| Campo | Status de suporte |
|---|---|
model | Use nomes de modelos Claude |
max_tokens | Totalmente suportado |
max_completion_tokens | Totalmente suportado |
stream | Totalmente suportado |
stream_options | Totalmente suportado |
top_p | Totalmente suportado |
parallel_tool_calls | Totalmente suportado |
stop | Todas as sequências de parada que não sejam espaços em branco funcionam |
temperature | Entre 0 e 1 (inclusive). Valores maiores que 1 são limitados a 1. |
n | Deve ser exatamente 1 |
logprobs | Ignorado |
metadata | Ignorado |
response_format | Ignorado. Para saída JSON, use Structured Outputs com a API do Claude nativa |
prediction | Ignorado |
presence_penalty | Ignorado |
frequency_penalty | Ignorado |
seed | Ignorado |
service_tier | Ignorado |
audio | Ignorado |
logit_bias | Ignorado |
store | Ignorado |
user | Ignorado |
modalities | Ignorado |
top_logprobs | Ignorado |
reasoning_effort | Ignorado |
tools / functionsmessages| Campo | Status de suporte |
|---|---|
id | Totalmente suportado |
choices[] | Sempre terá comprimento 1 |
choices[].finish_reason | Totalmente suportado |
choices[].index | Totalmente suportado |
choices[].message.role | Totalmente suportado |
choices[].message.content | Totalmente suportado |
choices[].message.tool_calls | Totalmente suportado |
object | Totalmente suportado |
created | Totalmente suportado |
model | Totalmente suportado |
finish_reason | Totalmente suportado |
content | Totalmente suportado |
usage.completion_tokens | Totalmente suportado |
usage.prompt_tokens | Totalmente suportado |
usage.total_tokens | Totalmente suportado |
usage.completion_tokens_details | Sempre vazio |
usage.prompt_tokens_details | Sempre vazio |
choices[].message.refusal | Sempre vazio |
choices[].message.audio | Sempre vazio |
logprobs | Sempre vazio |
service_tier | Sempre vazio |
system_fingerprint | Sempre vazio |
A camada de compatibilidade mantém formatos de erro consistentes com a API da OpenAI. No entanto, as mensagens de erro detalhadas não serão equivalentes. Use as mensagens de erro apenas para registro em log e depuração.
Embora o OpenAI SDK gerencie cabeçalhos automaticamente, aqui está a lista completa de cabeçalhos suportados pela API do Claude para desenvolvedores que precisam trabalhar com eles diretamente.
| Cabeçalho | Status de suporte |
|---|---|
x-ratelimit-limit-requests | Totalmente suportado |
x-ratelimit-limit-tokens | Totalmente suportado |
x-ratelimit-remaining-requests | Totalmente suportado |
x-ratelimit-remaining-tokens | Totalmente suportado |
x-ratelimit-reset-requests | Totalmente suportado |
x-ratelimit-reset-tokens | Totalmente suportado |
retry-after | Totalmente suportado |
request-id | Totalmente suportado |
openai-version | Sempre 2020-10-01 |
authorization | Totalmente suportado |
openai-processing-ms | Sempre vazio |
Was this page helpful?