Compatibilidade com o SDK da OpenAI
A Anthropic fornece uma camada de compatibilidade que permite que você use o SDK da OpenAI para testar a Claude API. Com algumas alterações de código, você pode avaliar rapidamente as capacidades dos modelos da Anthropic.
Primeiros passos com o SDK da OpenAI
Para usar o recurso de compatibilidade com o SDK da OpenAI, você precisará:
- Usar um SDK oficial da OpenAI
- Alterar o seguinte
- Atualize sua URL base para apontar para a Claude API
- Substitua sua chave de API por uma chave de API do Claude
- Se sua chave for uma chave pessoal ou de conta de serviço com acesso a vários workspaces, envie também o cabeçalho
anthropic-workspace-idem cada requisição (por exemplo,default_headersno SDK Python oudefaultHeadersno TypeScript); consulte Selecionar um workspace - Atualize o nome do seu modelo para usar um modelo Claude
- Revisar as seções a seguir para saber quais recursos são suportados
Exemplo de início rápido
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-5", # Claude model name
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who are you?"},
],
)
print(response.choices[0].message.content)Limitações importantes de compatibilidade com a OpenAI
Comportamento da API
Aqui estão as diferenças mais substanciais em relação ao uso da OpenAI:
- O parâmetro
strictpara chamada de funções é ignorado, o que significa que não há garantia de que o JSON de uso de ferramentas siga o esquema fornecido. Para conformidade garantida com o esquema, use a Claude API nativa com Structured Outputs. - Entrada de áudio não é suportada; ela será ignorada e removida da entrada
- O "prompt caching" (cache de prompt) não é suportado, mas é suportado nos SDKs da Anthropic
- Mensagens de sistema/desenvolvedor são elevadas e concatenadas no início da conversa, já que a Anthropic suporta apenas uma única mensagem de sistema inicial.
A maioria dos campos não suportados é ignorada silenciosamente em vez de produzir erros. Todos eles estão documentados nas seções a seguir.
Considerações sobre a qualidade da saída
Se você fez muitos ajustes no seu prompt, é provável que ele esteja bem ajustado especificamente para a OpenAI. Considere reformulá-lo para o Claude usando o guia de melhores práticas de prompting.
Elevação de mensagens de sistema / desenvolvedor
A maioria das entradas do SDK da OpenAI mapeia claramente de forma direta para os parâmetros da API da Anthropic, mas uma diferença distinta é o tratamento dos prompts de sistema / desenvolvedor. Esses dois prompts podem ser colocados 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 um único prompt do sistema no início das mensagens.
Suporte a pensamento
Você pode habilitar o pensamento adicionando o parâmetro thinking. Nos modelos atuais, o pensamento é adaptativo, com o Claude decidindo quando e com que profundidade pensar, e nos modelos Claude 5 ele está ativado por padrão; o "extended thinking" (pensamento estendido) configurado manualmente é um modo legado. Embora o pensamento melhore o raciocínio do Claude em tarefas complexas, o SDK da OpenAI não retorna o processo de pensamento detalhado do Claude. Para recursos completos de pensamento, incluindo acesso à saída de raciocínio passo a passo do Claude, use a Claude API 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}},
)Limites de taxa
Os "rate limits" (limites de taxa) seguem os limites padrão da Anthropic para o endpoint /v1/messages.
Suporte detalhado à API compatível com a OpenAI
Campos de requisição
Campos simples
| 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 Claude API 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 |
Campos tools / functions
Campos tools[n].function
| Campo | Status de suporte |
|---|---|
name | Totalmente suportado |
description | Totalmente suportado |
parameters | Totalmente suportado |
strict | Ignorado. Use Structured Outputs com a Claude API nativa para validação estrita de esquema |
Campos do array messages
Campos para messages[n].role == "developer"
| Campo | Status de suporte |
|---|---|
content | Totalmente suportado, mas elevado |
name | Ignorado |
Campos de resposta
| 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 |
Compatibilidade de mensagens de erro
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 logging e depuração.
Compatibilidade de cabeçalhos
Embora o SDK da OpenAI gerencie os cabeçalhos automaticamente, aqui está a lista completa de cabeçalhos suportados pela Claude API 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?