Compatibilità con l'SDK OpenAI
Anthropic fornisce un livello di compatibilità che ti consente di utilizzare l'SDK OpenAI per testare la Claude API. Con poche modifiche al codice, puoi valutare le capacità dei modelli Anthropic.
Iniziare con l'SDK OpenAI
Per utilizzare la funzionalità di compatibilità con l'SDK OpenAI, devi:
- Usare un SDK OpenAI ufficiale.
- Modificare quanto segue:
- Aggiorna il tuo URL di base in modo che punti alla Claude API.
- Sostituisci la tua chiave API con una chiave API di Claude dalla Claude Console.
- Se la tua chiave è una chiave personale o di account di servizio non associata a un workspace, invia anche l'header
anthropic-workspace-idin ogni richiesta (ad esempio,default_headersnell'SDK Python odefaultHeadersin TypeScript); consulta Selezionare un workspace. - Aggiorna il nome del modello per usare un modello Claude.
- Consultare le sezioni seguenti per scoprire quali funzionalità sono supportate.
Esempio di avvio rapido
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)Limitazioni importanti della compatibilità OpenAI
Comportamento dell'API
Ecco le differenze più sostanziali rispetto all'utilizzo di OpenAI:
- Il parametro
strictper il function calling viene ignorato, il che significa che il JSON dell'uso degli strumenti non è garantito che segua lo schema fornito. Per una conformità garantita allo schema, usa la Claude API nativa con output strutturati. - L'input audio non è supportato; viene ignorato e rimosso dall'input.
- La cache dei prompt non è supportata, ma è supportata negli SDK Anthropic.
- I messaggi system/developer vengono spostati in cima e concatenati nel campo
systemdi primo livello, ovunque compaiano nella conversazione. Per aggiungere istruzioni di sistema a metà di una conversazione, usa i messaggi di sistema a metà conversazione nella Claude API nativa.
La maggior parte dei campi non supportati viene ignorata silenziosamente anziché produrre errori. Sono tutti documentati nelle sezioni seguenti.
Considerazioni sulla qualità dell'output
Se hai modificato ampiamente il tuo prompt, è probabile che sia ottimizzato specificamente per OpenAI. Valuta di rielaborarlo per Claude utilizzando la guida sulle best practice per i prompt.
Spostamento dei messaggi system / developer
La maggior parte degli input dell'SDK OpenAI corrisponde direttamente ai parametri della Claude API, ma una differenza evidente è la gestione dei prompt di sistema / sviluppatore. Questi due tipi di prompt possono essere inseriti in qualsiasi punto di una conversazione chat nell'API OpenAI. Il livello di compatibilità prende tutti i messaggi di sistema/sviluppatore e li concatena con un singolo carattere di nuova riga (\n) tra di loro. Questa stringa completa viene quindi fornita come campo di primo livello system, prima di ogni messaggio.
Supporto al thinking
Puoi abilitare il ragionamento aggiungendo il parametro thinking. Sui modelli attuali il ragionamento è adattivo, con Claude che determina quando e quanto a fondo ragionare, e sui modelli Claude 5 è attivo per impostazione predefinita; il ragionamento esteso configurato manualmente è una modalità legacy. Sebbene il ragionamento migliori le capacità di Claude nei compiti complessi, l'SDK OpenAI non restituisce il ragionamento di Claude. Per le funzionalità complete di ragionamento, incluso il ragionamento riassunto, usa la 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}},
)Limiti di velocità
I "rate limits" (limiti di velocità) seguono i limiti standard di Anthropic per l'endpoint /v1/messages.
Supporto dettagliato dell'API compatibile con OpenAI
Campi della richiesta
Campi semplici
| Campo | Stato del supporto |
|---|---|
model | Usa i nomi dei modelli Claude |
max_tokens | Pienamente supportato |
max_completion_tokens | Pienamente supportato |
stream | Pienamente supportato |
stream_options | Pienamente supportato |
top_p | Passato al modello. I modelli Claude 4.7 e successivi e Claude Mythos Preview restituiscono un errore 400 per qualsiasi valore diverso da 0.99, il valore predefinito, quindi omettilo. Anche una richiesta che imposta sia temperature sia top_p restituisce un errore 400. Consulta Utilizzo della Messages API. |
parallel_tool_calls | Pienamente supportato |
stop | Tutte le sequenze di stop non composte da spazi bianchi funzionano |
temperature | Tra 0 e 1 (inclusi). I valori maggiori di 1 vengono limitati a 1. Sui modelli Claude 4.7 e successivi e su Claude Mythos Preview, qualsiasi valore inferiore a 1 restituisce un errore 400, quindi omettilo. Consulta Utilizzo della Messages API. |
n | Deve essere esattamente 1 |
logprobs | Ignorato |
metadata | Ignorato |
response_format | Ignorato. Per l'output JSON, usa gli output strutturati con la Claude API nativa. |
prediction | Ignorato |
presence_penalty | Ignorato |
frequency_penalty | Ignorato |
seed | Ignorato |
service_tier | Ignorato |
audio | Ignorato |
logit_bias | Ignorato |
store | Ignorato |
user | Ignorato |
modalities | Ignorato |
top_logprobs | Ignorato |
reasoning_effort | Ignorato |
Campi tools / functions
Campi tools[n].function
| Campo | Stato del supporto |
|---|---|
name | Pienamente supportato |
description | Pienamente supportato |
parameters | Pienamente supportato |
strict | Ignorato. Usa gli output strutturati con la Claude API nativa per una validazione rigorosa dello schema. |
Campi functions[n]
| Campo | Stato del supporto |
|---|---|
name | Pienamente supportato |
description | Pienamente supportato |
parameters | Pienamente supportato |
strict | Ignorato. Usa gli output strutturati con la Claude API nativa per una validazione rigorosa dello schema. |
Campi dell'array messages
Campi per messages[n].role == "developer"
| Campo | Stato del supporto |
|---|---|
content | Pienamente supportato, ma spostato |
name | Ignorato |
Campi per messages[n].role == "system"
| Campo | Stato del supporto |
|---|---|
content | Pienamente supportato, ma spostato |
name | Ignorato |
Campi per messages[n].role == "user"
| Campo | Variante | Sotto-campo | Stato del supporto |
|---|---|---|---|
content | string | Pienamente supportato | |
array, type == "text" | Pienamente supportato | ||
array, type == "image_url" | url | Pienamente supportato | |
detail | Ignorato | ||
array, type == "input_audio" | Ignorato | ||
array, type == "file" | Ignorato | ||
name | Ignorato |
Campi per messages[n].role == "assistant"
| Campo | Variante | Stato del supporto |
|---|---|---|
content | string | Pienamente supportato |
array, type == "text" | Pienamente supportato | |
array, type == "refusal" | Ignorato | |
tool_calls | Pienamente supportato | |
function_call | Pienamente supportato | |
audio | Ignorato | |
refusal | Ignorato |
Campi per messages[n].role == "tool"
| Campo | Variante | Stato del supporto |
|---|---|---|
content | string | Pienamente supportato |
array, type == "text" | Pienamente supportato | |
tool_call_id | Pienamente supportato | |
tool_choice | Supportato. I valori "required" e quelli con funzione nominata forzano una chiamata a uno strumento; Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1 e Claude Mythos 5.1 non supportano l'uso forzato degli strumenti e restituiscono un errore, quindi usa "auto" su questi modelli. Consulta Forzare l'uso degli strumenti. | |
name | Ignorato |
Campi per messages[n].role == "function"
| Campo | Variante | Stato del supporto |
|---|---|---|
content | string | Pienamente supportato |
array, type == "text" | Pienamente supportato | |
tool_choice | Supportato. I valori "required" e quelli con funzione nominata forzano una chiamata a uno strumento; Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1 e Claude Mythos 5.1 non supportano l'uso forzato degli strumenti e restituiscono un errore, quindi usa "auto" su questi modelli. Consulta Forzare l'uso degli strumenti. | |
name | Ignorato |
Campi della risposta
| Campo | Stato del supporto |
|---|---|
id | Pienamente supportato |
choices[] | Ha sempre lunghezza 1 |
choices[].finish_reason | Pienamente supportato |
choices[].index | Pienamente supportato |
choices[].message.role | Pienamente supportato |
choices[].message.content | Pienamente supportato |
choices[].message.tool_calls | Pienamente supportato |
object | Pienamente supportato |
created | Pienamente supportato |
model | Pienamente supportato |
finish_reason | Pienamente supportato |
content | Pienamente supportato |
usage.completion_tokens | Pienamente supportato |
usage.prompt_tokens | Pienamente supportato |
usage.total_tokens | Pienamente supportato |
usage.completion_tokens_details | Sempre vuoto |
usage.prompt_tokens_details | Sempre vuoto |
choices[].message.refusal | Sempre vuoto |
choices[].message.audio | Sempre vuoto |
logprobs | Sempre vuoto |
service_tier | Sempre vuoto |
system_fingerprint | Sempre vuoto |
Compatibilità dei messaggi di errore
Il livello di compatibilità mantiene formati di errore coerenti con l'API OpenAI. Tuttavia, i messaggi di errore dettagliati non sono equivalenti. Usa i messaggi di errore solo per il logging e il debug.
Compatibilità degli header
Sebbene l'SDK OpenAI gestisca automaticamente gli header, ecco l'elenco completo degli header supportati dalla Claude API per gli sviluppatori che devono lavorarci direttamente.
| Header | Stato del supporto |
|---|---|
x-ratelimit-limit-requests | Pienamente supportato |
x-ratelimit-limit-tokens | Pienamente supportato |
x-ratelimit-remaining-requests | Pienamente supportato |
x-ratelimit-remaining-tokens | Pienamente supportato |
x-ratelimit-reset-requests | Pienamente supportato |
x-ratelimit-reset-tokens | Pienamente supportato |
retry-after | Pienamente supportato |
request-id | Pienamente supportato |
openai-version | Sempre 2020-10-01 |
authorization | Pienamente supportato |
openai-processing-ms | Sempre vuoto |
Was this page helpful?