Source: https://aiprimetech.io/it/learn/openai-compatible-claude-api/ [Home](/it/) / [Impara](/it/learn/) / Usa Claude con l'SDK OpenAI: endpoint compatibile con OpenAI, streaming, strumenti e limiti # Usa Claude con l'SDK OpenAI: endpoint compatibile con OpenAI, streaming, strumenti e limiti Il codice scritto per l'SDK OpenAI può chiamare Claude senza essere riscritto: indirizza base_url al /v1del gateway, usa una chiave del gateway e un ID modello Claude. L'endpoint accetta richieste Chat Completions, trasmette in streaming nello stesso formato e supporta le chiamate di funzione. Alcune funzionalità di Claude sono disponibili solo nel formato nativo di Anthropic; l'ultima sezione spiega quando passare a quel formato. ## Informazioni sull'endpoint | Voce | Valore | URL di base | https://aiprimetech.io/v1 | Endpoint chat | POST https://aiprimetech.io/v1/chat/completions | Elenco dei modelli | GET https://aiprimetech.io/v1/models | Autenticazione | Authorization: Bearer ; x-api-key è anch'esso accettato | Modelli | ID Claude come claude-sonnet-5; ID GPT con una chiave del gruppo Codex ## Python terminaleCopia ``` pip install openai ``` app.pyCopia ``` import os from openai import OpenAI client = OpenAI(base_url="https://aiprimetech.io/v1", api_key=os.environ["AIPRIME_API_KEY"]) resp = client.chat.completions.create( model="claude-sonnet-5", max_tokens=1024, messages=[ {"role": "system", "content": "You are a concise assistant."}, {"role": "user", "content": "Explain idempotency keys in two sentences."}, ], ) print(resp.choices[0].message.content) print(resp.usage) ``` base_url deve terminare con /v1: l'SDK aggiunge /chat/completions a questo indirizzo. Senza /v1 la richiesta arriva al sito web e restituisce HTML; con /v1 ripetuto due volte restituisce 404 page not found. ## Node.js app.mjsCopia ``` import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://aiprimetech.io/v1", apiKey: process.env.AIPRIME_API_KEY }); const resp = await client.chat.completions.create({ model: "claude-sonnet-5", max_tokens: 1024, messages: [{ role: "user", content: "Write a haiku about retries." }], }); console.log(resp.choices[0].message.content); ``` ## Streaming stream.pyCopia ``` stream = client.chat.completions.create( model="claude-sonnet-5", max_tokens=2048, stream=True, stream_options={"include_usage": True}, messages=[{"role": "user", "content": "Outline a zero-downtime migration."}], ) for chunk in stream: if chunk.choices and chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="", flush=True) if chunk.usage: print("\n", chunk.usage) ``` Usa lo streaming per le risposte lunghe: una richiesta senza streaming deve completarsi entro il timeout del client, mentre uno stream no. include_usage aggiunge un blocco finale con il conteggio dei token. Per saperne di più sul perché è importante, consulta [streaming delle risposte degli LLM](/it/blog/streaming-api-guide/). ## Chiamata di funzioni tools.pyCopia ``` tools = [{ "type": "function", "function": { "name": "get_weather", "description": "Current weather for a city", "parameters": { "type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"], }, }, }] resp = client.chat.completions.create( model="claude-sonnet-5", max_tokens=512, tools=tools, messages=[{"role": "user", "content": "What is the weather in Paris?"}], ) call = resp.choices[0].message.tool_calls[0] print(call.function.name, call.function.arguments) # get_weather {"city": "Paris"} ``` La risposta viene restituita con finish_reason: "tool_calls" e, in stile OpenAI, tool_calls. Esegui la funzione, aggiungi un tool messaggio con il risultato e il corrispondente tool_call_id, quindi effettua un'altra chiamata, esattamente come con i modelli OpenAI. ## Ragionamento e thinking reasoning_effort corrisponde all'impostazione del livello di impegno di Claude e accetta low, medium, high, xhigh o max. Il valore none viene rifiutato. Quando il modello elabora il suo ragionamento, questo viene restituito in un campo reasoning_content separato, accanto a content, quindi il codice che legge message.content continua a funzionare senza modifiche. reasoning.pyCopia ``` resp = client.chat.completions.create( model="claude-opus-5-5", max_tokens=4096, reasoning_effort="high", messages=[{"role": "user", "content": "Find the bug in this function: ..."}], ) ``` ## Modelli | ID del modello | Usalo per | claude-sonnet-5 | Scelta predefinita per programmazione e attività degli agenti: veloce, potente, di fascia media. | claude-opus-5-5 | Ragionamenti più complessi, refactoring estesi, esecuzioni prolungate degli agenti. | claude-fable-5-1 | Il più capace e il più costoso; riservalo alle attività più difficili. | claude-haiku-4-5 | Economico e rapido: titoli, riepiloghi, classificazione, piccoli passaggi. Usa questi ID esattamente come riportati. I vecchi ID con data, come claude-3-5-sonnet-20241022 compaiono ancora in alcuni elenchi di modelli, ma non sono disponibili e restituiscono un errore di modello non supportato. ## Quando usare invece l'API nativa di Anthropic Il formato OpenAI supporta chat, streaming, strumenti e immagini. Usa il formato Messages di Anthropic, sullo stesso gateway, quando ti servono punti di interruzione espliciti per la cache dei prompt, blocchi di ragionamento da reinviare tra un turno e l'altro, documenti PDF o citazioni. La [guida all'SDK Python di Anthropic](/it/learn/anthropic-python-sdk/) e l'impostazione [guida a Vercel AI SDK](/it/learn/use-claude-api-with-vercel-ai-sdk/) illustra questo approccio. ## Risoluzione dei problemi | Che cosa vedi | Causa | Soluzione | Un errore di parsing di JSON, con una risposta che inizia con < | base_url senza /v1 | https://aiprimetech.io/v1 | 404 page not found | /v1 due volte | Esattamente un /v1 | 401 Invalid API key | Chiave mancante o errata nel processo | Controlla la variabile; una chiave appartiene a un solo gateway | Modello non supportato | ID del modello vecchio e con data, oppure scritto in modo errato | Usa un ID della tabella qui sopra | 'none' is not supported | reasoning_effort="none" | Usa low o superiore, oppure omettilo | 429 Concurrency limit exceeded for user | Troppe richieste in corso | Limita il parallelismo; consulta [limiti di frequenza e nuovi tentativi](/it/blog/rate-limits-and-retries/) | Timeout per le risposte lunghe | Richiesta lunga senza streaming | Usa lo streaming o aumenta il timeout del client ## Domande frequenti Posso usare Claude con l'SDK OpenAI? Sì, tramite un endpoint compatibile con OpenAI: imposta base_url su /v1 del gateway, usa una chiave API del gateway e un ID di modello Claude come claude-sonnet-5. Lo streaming e le chiamate di funzione funzionano nel formato OpenAI. Quale URL di base devo usare per Claude nell'SDK OpenAI? L'URL del gateway che termina con /v1, ad esempio https://aiprimetech.io/v1. L'SDK aggiunge /chat/completions. Le chiamate di funzione funzionano con Claude tramite il formato OpenAI? Sì. Passa tools nel formato OpenAI; Claude restituisce tool_calls con finish_reason impostato su tool_calls, e tu rispondi con messaggi tool come di consueto. Quando dovrei usare invece l'API nativa di Anthropic? Quando ti servono la memorizzazione esplicita dei prompt nella cache, blocchi di ragionamento tra i turni, input PDF o citazioni. Queste funzionalità fanno parte del formato Messages di Anthropic. Inizia a usare Claude in pochi minuti Ottieni una chiave API: non servono un account Anthropic né una lista d'attesa.[Ottieni la tua chiave API](/register) AI Prime Tech è un gateway API indipendente. Non è affiliato ad Anthropic, non è approvato da Anthropic e non è un suo rivenditore. Claude e i nomi dei modelli correlati sono marchi dei rispettivi proprietari. ## Altre guide all'API di Claude [Come ottenere una chiave API di Claude](/it/learn/how-to-get-a-claude-api-key/)[I prezzi dell'API Claude, spiegati](/it/learn/claude-api-pricing-explained/)[Il modo più economico per usare l'API Claude](/it/learn/cheapest-way-to-use-claude-api/)[Cursor illimitato con l'API Claude](/learn/use-claude-api-with-cursor/)[Accesso illimitato a Claude Code](/it/learn/use-claude-api-with-claude-code/)[Gateway API Claude e accesso diretto ad Anthropic a confronto](/it/learn/claude-api-vs-anthropic-direct/)[I modelli Claude spiegati: un confronto tra Claude Opus, Sonnet, Haiku e Fable — tutti i modelli API Claude, i nomi dei modelli Anthropic e i prezzi (2026)](/it/learn/claude-api-models-compared/)[Pagare l'API Claude con criptovalute](/it/learn/claude-api-with-crypto-payment/)[Accesso all'API Claude senza lista d'attesa](/it/learn/claude-api-without-waitlist/)[Come ridurre l'utilizzo dei token di Claude](/it/learn/how-to-reduce-claude-token-usage/)[Cline illimitato con l'API Claude](/it/learn/use-claude-api-with-cline/)[Roo Code illimitato con l'API Claude](/it/learn/use-claude-api-with-roo-code/)[Claude illimitato negli IDE JetBrains](/it/learn/use-claude-api-with-jetbrains/)[Aider con Claude tramite un gateway: ANTHROPIC_API_BASE, file di configurazione, modalità architect e soluzioni ai problemi](/it/learn/use-claude-api-with-aider/)[Claude illimitato in VS Code](/it/learn/use-claude-api-with-vscode/)[Configurazione di OpenCode per Claude: impostazione di opencode.json, modelli ed errori comuni](/it/learn/use-claude-api-with-opencode/)[Hermes Agent con Claude tramite un gateway: configurazione di un provider personalizzato, controllo dei costi e soluzioni ai problemi](/it/learn/run-hermes-agent-with-claude-api/)[Eseguire OpenClaw senza limiti con Claude](/it/learn/run-openclaw-with-claude-api/)[Cosa significa un'API compatibile con Anthropic](/it/learn/anthropic-compatible-api/)[Chiave API di Claude Code — ANTHROPIC_API_KEY: come ottenerla, configurarla e quando usare invece claude setup-token](/it/learn/claude-code-api-key-setup/)[Costi dell'API di Claude Code — Prezzi e come ridurli](/it/learn/claude-code-api-costs/)[Gli errori dell'API Claude spiegati: errore del server 500, sovraccarico 529, limite di frequenza 429, richiesta non valida 400 — e la soluzione per ciascuno](/it/learn/claude-api-errors-troubleshooting/)[Come acquistare crediti per l'API di Claude e perché un credito Claude conviene più di qualsiasi offerta per «acquistare un account Claude»](/it/learn/buy-claude-api-credits/)[API Claude gratuita: esiste una chiave API di Claude gratuita e che cosa è davvero gratuito nel 2026?](/it/learn/claude-api-free-trial/)[API Claude e abbonamento Claude Pro/Max a confronto — Quale scegliere](/it/learn/claude-api-vs-subscription/)[Codex CLI con un provider personalizzato: config.toml, modelli GPT e Claude, estensione IDE e soluzioni ai problemi](/it/learn/use-claude-api-with-codex/)[Collegare Claude a n8n](/it/learn/use-claude-api-with-n8n/)[Instradare LiteLLM verso Claude](/it/learn/use-claude-api-with-litellm/)[Usare Claude in Kilo Code](/it/learn/use-claude-api-with-kilo-code/)[GitHub Copilot Chat con Claude tramite un gateway: configurazione di Custom Endpoint, modalità agente e soluzioni ai problemi](/it/learn/use-claude-api-with-github-copilot/)[Collega Zed a Claude tramite il gateway](/it/learn/use-claude-api-with-zed/)[Collega Cherry Studio a Claude](/it/learn/use-claude-api-with-cherry-studio/)[ChatAnthropic in LangChain: importazione, base_url, streaming, strumenti ed errori](/it/learn/use-claude-api-with-langchain/)[SDK Python di Anthropic: installazione, configurazione di base_url, streaming e gestione degli errori](/it/learn/anthropic-python-sdk/)[Claude con Vercel AI SDK: baseURL di createAnthropic, streaming e soluzioni ai problemi](/it/learn/use-claude-api-with-vercel-ai-sdk/)[Esegui Factory Droid con Claude](/it/learn/use-claude-api-with-factory-droid/)[L'API di Claude Code spiegata](/it/learn/claude-code-api/)[Integrare l'API di Claude nella tua applicazione](/it/learn/claude-api-integration/)[Come ottenere un utilizzo illimitato di Claude e perché non esiste un «Claude Code craccato»](/it/learn/get-unlimited-claude-usage/)