Compatibilidade com o SDK da OpenAI
A Anthropic fornece uma camada de compatibilidade que permite usar o SDK da OpenAI para testar a Claude API. Com algumas alterações no código, você pode avaliar 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ê precisa:
- 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 do Claude Console.
- Se sua chave for uma chave pessoal ou de conta de serviço que não esteja vinculada a um workspace, envie também o cabeçalho
anthropic-workspace-idem cada requisição (por exemplo,default_headersno SDK Python oudefaultHeadersem TypeScript); consulte Selecionar um workspace. - Atualize o nome do seu modelo para usar um modelo Claude.
- Revise 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-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 schema fornecido. Para conformidade garantida com o schema, use a Claude API nativa com saídas estruturadas. - Entrada de áudio não é suportada; ela é ignorada e removida da entrada.
- O cache de prompt não é suportado, mas é suportado nos SDKs da Anthropic.
- Mensagens de sistema/desenvolvedor são elevadas e concatenadas no campo
systemde nível superior, onde quer que apareçam na conversa. Para adicionar instruções de sistema no meio de uma conversa, use mensagens de sistema no meio da conversa na Claude API nativa.
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ê ajustou seu prompt extensivamente, é 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 e diretamente para os parâmetros da Claude API, 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 na API da OpenAI. A camada de compatibilidade 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 o campo system de nível superior, antes de todas as mensagens.
Suporte a pensamento
Você pode habilitar o pensamento adicionando o parâmetro thinking. Nos modelos atuais, o pensamento é adaptativo, com o Claude determinando quando e com que profundidade pensar, e nos modelos Claude 5 ele vem 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 pensamento do Claude. Para recursos completos de pensamento, incluindo o pensamento resumido, 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 | Repassado ao modelo. Os modelos Claude 4.7 e posteriores e o Claude Mythos Preview retornam um erro 400 para qualquer valor diferente de 0.99, o padrão, portanto omita-o. Uma requisição que define tanto temperature quanto top_p também retorna um erro 400. Consulte Trabalhando com mensagens. |
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. Nos modelos Claude 4.7 e posteriores e no Claude Mythos Preview, qualquer valor abaixo de 1 retorna um erro 400, portanto omita-o. Consulte Trabalhando com mensagens. |
n | Deve ser exatamente 1 |
logprobs | Ignorado |
metadata | Ignorado |
response_format | Ignorado. Para saída em JSON, use saídas estruturadas 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 saídas estruturadas com a Claude API nativa para validação estrita de schema. |
Campos functions[n]
| Campo | Status de suporte |
|---|---|
name | Totalmente suportado |
description | Totalmente suportado |
parameters | Totalmente suportado |
strict | Ignorado. Use saídas estruturadas com a Claude API nativa para validação estrita de schema. |
Campos do array messages
Campos para messages[n].role == "developer"
| Campo | Status de suporte |
|---|---|
content | Totalmente suportado, mas elevado |
name | Ignorado |
Campos para messages[n].role == "system"
| Campo | Status de suporte |
|---|---|
content | Totalmente suportado, mas elevado |
name | Ignorado |
Campos para messages[n].role == "user"
| Campo | Variante | Subcampo | Status de suporte |
|---|---|---|---|
content | string | Totalmente suportado | |
array, type == "text" | Totalmente suportado | ||
array, type == "image_url" | url | Totalmente suportado | |
detail | Ignorado | ||
array, type == "input_audio" | Ignorado | ||
array, type == "file" | Ignorado | ||
name | Ignorado |
Campos para messages[n].role == "assistant"
| Campo | Variante | Status de suporte |
|---|---|---|
content | string | Totalmente suportado |
array, type == "text" | Totalmente suportado | |
array, type == "refusal" | Ignorado | |
tool_calls | Totalmente suportado | |
function_call | Totalmente suportado | |
audio | Ignorado | |
refusal | Ignorado |
Campos para messages[n].role == "tool"
| Campo | Variante | Status de suporte |
|---|---|---|
content | string | Totalmente suportado |
array, type == "text" | Totalmente suportado | |
tool_call_id | Totalmente suportado | |
tool_choice | Suportado. Os valores "required" e de função nomeada forçam uma chamada de ferramenta; Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1 e Claude Mythos 5.1 não suportam uso de ferramentas forçado e retornam um erro, portanto use "auto" nesses modelos. Consulte Forçando o uso de ferramentas. | |
name | Ignorado |
Campos para messages[n].role == "function"
| Campo | Variante | Status de suporte |
|---|---|---|
content | string | Totalmente suportado |
array, type == "text" | Totalmente suportado | |
tool_choice | Suportado. Os valores "required" e de função nomeada forçam uma chamada de ferramenta; Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1 e Claude Mythos 5.1 não suportam uso de ferramentas forçado e retornam um erro, portanto use "auto" nesses modelos. Consulte Forçando o uso de ferramentas. | |
name | Ignorado |
Campos de resposta
| Campo | Status de suporte |
|---|---|
id | Totalmente suportado |
choices[] | Sempre tem 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 sã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?