Documentazione

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.

In breve — l’API OpenAI di Ollama è disponibile all’indirizzo 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:

EndpointScopo
POST /v1/chat/completionsChat — l’endpoint usato dalla maggior parte delle app
POST /v1/completionsCompletamenti di testo legacy
POST /v1/embeddingsEmbedding per modelli locali
GET /v1/modelsElenco 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 baselocalhost:11434/v1api.kunavo.com/v1
Esecuzione suIl tuo computerAPI gestita
ModelliModelli open localiClaude, GPT, Veo, Suno
ModalitàTesto + embeddingTesto, immagini, video, audio
CostiIl tuo hardware / l’elettricitàPer token, sotto i prezzi di listino
Ideale perSviluppo offline, privacyQualità frontier per la produzione
Una sola chiave Kunavo consente di accedere a tutti i modelli ospitati; la fatturazione avviene una volta tramite Stripe. Consulta la guida rapida per effettuare la tua prima chiamata.

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.

Prossimi passi