Documentazione
API di Ollama compatibile con OpenAI
Ollama espone un’API compatibile con OpenAI per i modelli locali. Ecco come chiamarla con l’SDK OpenAI e come usare lo stesso codice per accedere a Claude e GPT ospitati modificando solo base_url e model.
Ollama esegue modelli open sul tuo computer e li rende disponibili tramite un’API compatibile con OpenAI all’indirizzo http://localhost:11434/v1. Poiché il formato di comunicazione corrisponde a quello di OpenAI, l’SDK ufficiale OpenAI funziona con Ollama senza modifiche; lo stesso codice consente di accedere ai modelli frontier ospitati modificando solo l’URL di base.
http://localhost:11434/v1. Imposta base_url del client OpenAI su questo valore e usa un api_key segnaposto qualsiasi. Per passare a Claude/GPT ospitati, modifica base_url con https://api.kunavo.com/v1 e cambia lo slug del modello: nient’altro.Cos’è l’API di Ollama compatibile con OpenAI
Ollama è un progetto open source indipendente per eseguire localmente modelli come Llama, Qwen e Mistral. Oltre alla sua API nativa, offre un’interfaccia compatibile con OpenAI, così gli strumenti creati per OpenAI funzionano senza riscritture. Implementa gli endpoint usati dalla maggior parte delle app:
| Endpoint | Scopo |
|---|---|
POST /v1/ | Chat — l’endpoint usato dalla maggior parte delle app |
POST /v1/ | Completamenti di testo legacy |
POST /v1/ | Embedding per modelli locali |
GET /v1/models | Elenco dei modelli scaricati in locale |
Supporta chat, completamenti ed embedding (oltre all’input visivo sui modelli locali multimodali). Non genera immagini, video o audio. Kunavo implementa lo stesso contratto /v1/chat/completions — quel riferimento documenta ogni parametro, la struttura dei delta nello streaming e l’oggetto usage, e include una tabella di corrispondenza riga per riga con l’interfaccia v1 di Ollama.
Chiama Ollama con l’SDK OpenAI
Imposta base_url su http://localhost:11434/v1. L’SDK richiede un api_key, ma Ollama in locale ne ignora il valore: passa una stringa qualsiasi. Imposta model su un modello che hai scaricato (ad es. ollama pull llama3.2).
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1", # Ollama's OpenAI-compatible API
api_key="ollama", # required by the SDK, ignored by local Ollama
)
resp = client.chat.completions.create(
model="llama3.2",
messages=[{"role": "user", "content": "Explain quicksort in one paragraph."}],
)
print(resp.choices[0].message.content)Oppure con curl:
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.2",
"messages": [{"role": "user", "content": "Hello, Ollama"}]
}'Lo stesso codice, con modelli frontier ospitati
Ollama è ideale per lo sviluppo offline e per le attività sensibili alla privacy, ma sui compiti più complessi di ragionamento, programmazione e gestione di contesti lunghi i modelli locali sono inferiori ai modelli frontier. Poiché anche Kunavo è compatibile con OpenAI, spostare una chiamata a un modello ospitato richiede due modifiche: base_url e lo slug del modello:
from openai import OpenAI
client = OpenAI(
base_url="https://api.kunavo.com/v1", # only this line changes
api_key="sk-kn-...", # a real key now
)
resp = client.chat.completions.create(
model="claude-sonnet-5", # a hosted frontier model
messages=[{"role": "user", "content": "Explain quicksort in one paragraph."}],
)
print(resp.choices[0].message.content)| Ollama (locale) | Kunavo (ospitato) | |
|---|---|---|
| URL di base | localhost: | api. |
| Esecuzione su | Il tuo computer | API gestita |
| Modelli | Modelli open locali | Claude, GPT, Veo, Suno |
| Modalità | Testo + embedding | Testo, immagini, video, audio |
| Costi | Il tuo hardware / l’elettricità | Per token, sotto i prezzi di listino |
| Ideale per | Sviluppo offline, privacy | Qualità frontier per la produzione |
Scegli in base all’ambiente
Un approccio comune consiste nell’usare Ollama per lo sviluppo locale e modelli ospitati in produzione, selezionandoli tramite una variabile d’ambiente. Il client e il codice della richiesta sono identici: cambiano solo base_url e il modello:
import os
from openai import OpenAI
# One client, switched by environment. Local for dev, hosted for prod.
if os.getenv("APP_ENV") == "production":
client = OpenAI(base_url="https://api.kunavo.com/v1",
api_key=os.environ["KUNAVO_API_KEY"])
MODEL = "claude-haiku-4-5"
else:
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
MODEL = "llama3.2"
resp = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": "ping"}],
)
print(resp.choices[0].message.content)FAQ
Ollama ha un’API compatibile con OpenAI?
Sì. Ollama espone un’API REST compatibile con OpenAI su http://localhost:11434/v1, con gli endpoint /chat/completions, /completions, /embeddings e /models. Indirizza l’SDK OpenAI ufficiale a questo base_url, passa una stringa qualsiasi come api_key (Ollama la ignora in locale) e imposta model su un modello scaricato, come llama3.2. I formati di richiesta e risposta corrispondono a quelli di OpenAI.
Qual è l’URL di base dell’API OpenAI di Ollama?
http://localhost:11434/v1 by default. Set the OpenAI client base_url to that value. If Ollama runs on another host or port, substitute it — the /v1 suffix stays.
Come posso passare da Ollama a un modello ospitato?
Poiché entrambi sono compatibili con OpenAI, devi modificare solo base_url e model. Sostituisci http://localhost:11434/v1 con https://api.kunavo.com/v1, usa una chiave sk-kn- valida e imposta model su uno slug ospitato, come claude-sonnet-5 o claude-haiku-4-5. Non servono altre modifiche al codice.
L’API OpenAI di Ollama supporta immagini o video?
L’interfaccia compatibile con OpenAI di Ollama supporta chat, completamenti ed embedding, oltre all’input visivo sui modelli locali multimodali. Non genera immagini, video o audio. Per generare immagini, video e audio ospitati tramite la stessa API in stile OpenAI, usa gli endpoint /v1/images, /v1/video e /v1/audio di Kunavo.