"Compatibile con OpenAI" significa che un'API parla lo stesso formato di trasmissione di OpenAI /v1/chat/completions — quindi qualsiasi SDK o strumento OpenAI funziona modificando solo base_url. Ollama espone un endpoint compatibile con OpenAI per i modelli eseguiti localmente sulla tua macchina. Kunavo ne espone uno per i modelli frontier ospitati — Claude, GPT e modelli di immagini, video e audio — dietro un unico bearer token. Questa guida mostra il modello e come passare dall'uno all'altro senza riscrivere il codice.
Cosa significa "compatibile con OpenAI"
Il formato OpenAI Chat Completions è diventato lo standard de facto: un array messages in ingresso, un choices[].message in uscita, Server-Sent Events per lo streaming, tools per le chiamate di funzione. Qualsiasi endpoint che rispetti questo contratto è "compatibile con OpenAI" e gli SDK ufficiali openai (Python, Node e ogni porting della community) lo utilizzano impostando base_url.
Il modello Ollama (locale)
Ollama esegue modelli open localmente e li rende disponibili su http://localhost:11434/v1:
from openai import OpenAI
# Ollama exposes an OpenAI-compatible endpoint on localhost
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
resp = client.chat.completions.create(
model="llama3.1",
messages=[{"role": "user", "content": "Summarize this changelog."}],
)
print(resp.choices[0].message.content)Stesso codice, modelli frontier ospitati (Kunavo)
Indirizza lo stesso identico SDK a Kunavo e scegli un modello frontier. Cambiano solo base_url, api_key e model — la chiamata è identica byte per byte:
import os
from openai import OpenAI
# Same SDK, same call shape — only base_url, api_key and model change
client = OpenAI(
base_url="https://api.kunavo.com/v1",
api_key=os.environ["KUNAVO_API_KEY"],
)
resp = client.chat.completions.create(
model="claude-sonnet-5", # or claude-haiku-4-5, gpt-5-5, gpt-5-6-terra...
messages=[{"role": "user", "content": "Summarize this changelog."}],
)
print(resp.choices[0].message.content)Ottieni una chiave su /app/keys; la guida rapida include esempi per Node e curl.
Locale o ospitato: quale usare
| Ollama (locale) | Kunavo (ospitato) | |
|---|---|---|
| Qualità del modello | Modelli open (Llama, Qwen, Mistral) | Modelli di frontiera: Claude, GPT |
| Hardware | La tua GPU / RAM | Nessuno — completamente ospitato |
| Costi | Gratuito (la tua elettricità) | A consumo, inferiore al listino |
| Privacy | Completamente offline | Ospitato negli Stati Uniti e inoltrato al fornitore del modello, la cui politica di conservazione si applica; nessun DPA o ZDR |
| Multimodale | Limitato | Immagini, video e audio con un'unica chiave |
Una configurazione comune: Ollama su localhost per lo sviluppo offline, Kunavo per la qualità ospitata in produzione — una variabile d'ambiente li alterna. Per il contratto campo per campo implementato da entrambe le parti — parametri, delta dello streaming, tool_calls, l'oggetto usage e la tabella di parità con la superficie v1 di Ollama — consulta il riferimento /v1/chat/completions e la relativa sezione sulla compatibilità OpenAI di Ollama.
Scoprire i modelli a runtime
Come /api/tags di Ollama, Kunavo espone un catalogo con struttura OpenAI. Risolvi gli slug a runtime invece di codificarli:
# Discover every enabled model (OpenAI-shaped, like Ollama's /api/tags)
curl https://api.kunavo.com/v1/models \
-H "Authorization: Bearer $KUNAVO_API_KEY"Oltre la chat
La stessa chiave raggiunge gli endpoint per immagini (/v1/images/generations), video (/v1/video/generations) e audio — tutti con struttura OpenAI. Consulta la guida all'IA multimodale e il confronto con OpenRouter per capire in cosa Kunavo differisce dagli altri gateway.
Una superficie va oltre la definizione abituale di “compatibile” ed è importante conoscerla: POST /v1/responses. Codex CLI accetta un provider personalizzato solo tramite l'API Responses, motivo per cui la maggior parte dei gateway compatibili con OpenAI non può pilotarlo — quanto costa Codex per token illustra il funzionamento con un blocco di configurazione operativo. Per calcolare il prezzo di un carico GPT includendo l'input memorizzato nella cache, il calcolatore dei prezzi dell'API OpenAI usa i tuoi conteggi di token.
Domande frequenti
Cos'è un'API compatibile con OpenAI?
Un'API che parla lo stesso formato di trasmissione di /v1/chat/completions di OpenAI — stesso corpo della richiesta, stessa struttura della risposta, stesso streaming. Qualsiasi SDK o strumento OpenAI funziona modificando solo base_url e api_key. Ollama ne espone una per i modelli locali; Kunavo ne espone una per i modelli frontier ospitati.
Esiste un'API compatibile con OpenAI per modelli ospitati, come quella che Ollama offre per i modelli locali?
Sì. L'endpoint compatibile con OpenAI di Ollama esegue modelli locali sulla tua macchina; quello di Kunavo esegue Claude, GPT e modelli di immagini, video e audio ospitati dietro un unico base_url (https://api.kunavo.com/v1) e un unico bearer token. Il codice chiamante è identico.
Posso mantenere Ollama in locale e usare Kunavo in produzione?
Sì — è un modello comune. Poiché entrambi sono compatibili con OpenAI, cambi ambiente sostituendo base_url e modello: Ollama su localhost per lo sviluppo offline, Kunavo per la qualità frontier ospitata in produzione. Nessuna modifica all'SDK.
Quali modelli posso chiamare tramite l'endpoint compatibile con OpenAI?
Ogni modello abilitato — Claude, GPT e altri per la chat, oltre a immagini, video e audio sui rispettivi endpoint con struttura OpenAI. GET /v1/models restituisce l'elenco aggiornato; risolvi gli slug a runtime invece di codificarli. Esplora il catalogo dei modelli.
E i limiti di frequenza?
Ogni provider applica i propri limiti e un 429 significa che ne hai superato uno — consulta i limiti di frequenza dell'API OpenAI per capire quale limite è scattato e quale backoff lo risolve, e Errore 429 rate_limit_error dell'API Claude per l'equivalente Anthropic.