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 rapidamente le capacità dei modelli Anthropic.
Iniziare con l'SDK OpenAI
Per utilizzare la funzionalità di compatibilità con l'SDK OpenAI, dovrai:
- Usare un SDK OpenAI ufficiale
- Modificare quanto segue
- Aggiorna il tuo URL di base in modo che punti alla Claude API
- Sostituisci la tua "API key" (chiave API) con una chiave API Claude
- Se la tua chiave è una chiave personale o di account di servizio con accesso a più 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 utilizzare un modello Claude
- Consultare le sezioni seguenti per sapere 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", # 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 non è garantito che il JSON del "tool use" (uso degli strumenti) segua lo schema fornito. Per una conformità garantita allo schema, usa la Claude API nativa con Structured Outputs. - L'input audio non è supportato; verrà ignorato e rimosso dall'input
- La cache dei prompt non è supportata, ma è supportata negli SDK Anthropic
- I messaggi system/developer vengono spostati e concatenati all'inizio della conversazione, poiché Anthropic supporta un solo messaggio di sistema iniziale.
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 apportato molte modifiche al tuo prompt, è probabile che sia ottimizzato specificamente per OpenAI. Valuta di rielaborarlo per Claude utilizzando la guida alle best practice di prompting.
Spostamento dei messaggi system / developer
La maggior parte degli input dell'SDK OpenAI corrisponde direttamente ai parametri dell'API di Anthropic, ma una differenza evidente è la gestione dei prompt system / developer. Tramite OpenAI, questi due prompt possono essere inseriti in qualsiasi punto di una conversazione chat. Poiché Anthropic supporta solo un "system prompt" (prompt di sistema) iniziale, l'API prende tutti i messaggi system/developer e li concatena insieme con un singolo carattere di nuova riga (\n) tra di essi. Questa stringa completa viene quindi fornita come un unico messaggio di sistema all'inizio dei messaggi.
Supporto al thinking
Puoi abilitare il thinking aggiungendo il parametro thinking. Sui modelli attuali il thinking è adattivo, con Claude che decide quando e quanto approfonditamente pensare, e sui modelli Claude 5 è attivo per impostazione predefinita; l'"extended thinking" (pensiero esteso) configurato manualmente è una modalità legacy. Sebbene il thinking migliori il ragionamento di Claude per compiti complessi, l'SDK OpenAI non restituisce il processo di pensiero dettagliato di Claude. Per le funzionalità complete di thinking, incluso l'accesso all'output di ragionamento passo dopo passo di Claude, 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 | Pienamente supportato |
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. |
n | Deve essere esattamente 1 |
logprobs | Ignorato |
metadata | Ignorato |
response_format | Ignorato. Per l'output JSON, usa Structured Outputs 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 Structured Outputs 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 della risposta
| Campo | Stato del supporto |
|---|---|
id | Pienamente supportato |
choices[] | Avrà sempre una lunghezza pari a 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 saranno equivalenti. Usa i messaggi di errore solo per il logging e il debugging.
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 hanno bisogno di 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?