Documentation
API d’Ollama compatible avec OpenAI
Ollama fournit une API compatible avec OpenAI pour les modèles locaux. Voici comment l’appeler avec le SDK OpenAI — et comment le même code peut accéder à Claude et GPT hébergés en ne modifiant que base_url et model.
Ollama exécute des modèles ouverts sur votre propre machine et les expose via une API compatible avec OpenAI à http://localhost:11434/v1. Comme le format de communication correspond à celui d’OpenAI, le SDK officiel OpenAI fonctionne avec Ollama sans modification — et le même code peut accéder à des modèles hébergés de pointe en ne modifiant que l’URL de base.
http://localhost:11434/v1. Définissez le base_url du client OpenAI sur cette adresse et utilisez n’importe quelle api_key fictive. Pour utiliser Claude/GPT hébergés, remplacez base_url par https://api.kunavo.com/v1 et changez l’identifiant du modèle — rien d’autre.Présentation de l’API Ollama compatible avec OpenAI
Ollama est un projet open source distinct qui permet d’exécuter localement des modèles comme Llama, Qwen et Mistral. En plus de son API native, il propose une interface compatible avec OpenAI : les outils conçus pour OpenAI fonctionnent donc sans réécriture. Il implémente les points de terminaison utilisés par la plupart des applications :
| Point de terminaison | Objectif |
|---|---|
POST /v1/ | Conversations — le point de terminaison utilisé par la plupart des applications |
POST /v1/ | Complétions de texte héritées |
POST /v1/ | Embeddings pour les modèles locaux |
GET /v1/models | Répertorier les modèles téléchargés localement |
L’API prend en charge les conversations, les complétions et les embeddings (ainsi que l’entrée visuelle sur les modèles locaux multimodaux). Elle ne génère ni images, ni vidéo, ni audio. Kunavo implémente le même contrat /v1/chat/completions — cette référence décrit chaque paramètre, la structure des deltas en diffusion en continu et l’objet usage, et comprend un tableau de parité détaillé avec l’interface v1 d’Ollama.
Appeler Ollama avec le SDK OpenAI
Pointez base_url vers http://localhost:11434/v1. Le SDK exige un api_key, mais Ollama en local ignore sa valeur : transmettez n’importe quelle chaîne. Définissez model sur un modèle que vous avez téléchargé (par exemple 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)Ou avec curl :
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.2",
"messages": [{"role": "user", "content": "Hello, Ollama"}]
}'Le même code, avec des modèles de pointe hébergés
Ollama convient parfaitement au développement hors ligne et aux tâches sensibles à la confidentialité, mais les modèles locaux restent en retrait par rapport aux modèles de pointe en raisonnement complexe, en programmation et en contexte long. Comme Kunavo est également compatible avec OpenAI, le passage à un modèle hébergé ne demande que deux modifications — base_url et l’identifiant du modèle :
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 (local) | Kunavo (hébergé) | |
|---|---|---|
| URL de base | localhost: | api. |
| Fonctionne sur | Votre machine | API gérée |
| Modèles | Modèles ouverts locaux | Claude, GPT, Veo, Suno |
| Modalités | Texte + embeddings | Texte, image, vidéo, audio |
| Coûts | Votre matériel / électricité | Par jeton, au tarif catalogue |
| Idéal pour | Développement hors ligne, confidentialité | Qualité de pointe en production |
Basculer selon l’environnement
Une approche courante consiste à utiliser Ollama pour le développement local et des modèles hébergés en production, avec une sélection pilotée par une variable d’environnement. Le client et le code de requête restent identiques ; seuls base_url et le modèle changent :
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 propose-t-il une API compatible avec OpenAI ?
Oui. Ollama expose une API REST compatible avec OpenAI à l’adresse http://localhost:11434/v1, avec /chat/completions, /completions, /embeddings et /models. Configurez le base_url du SDK OpenAI officiel sur cette adresse, transmettez n’importe quelle chaîne comme api_key (Ollama l’ignore en local) et définissez model sur un modèle téléchargé, comme llama3.2. Les formats des requêtes et des réponses correspondent à ceux d’OpenAI.
Quelle URL de base utilise l’API OpenAI d’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.
Comment passer d’Ollama à un modèle hébergé ?
Comme les deux sont compatibles avec OpenAI, vous ne modifiez que base_url et model. Remplacez http://localhost:11434/v1 par https://api.kunavo.com/v1, utilisez une véritable clé sk-kn- et définissez model sur un identifiant de modèle hébergé, comme claude-sonnet-5 ou claude-haiku-4-5. Aucun autre changement de code n’est nécessaire.
L’API OpenAI d’Ollama prend-elle en charge les images ou la vidéo ?
L’interface compatible avec OpenAI d’Ollama prend en charge les conversations, les complétions et les embeddings, ainsi que l’entrée visuelle sur les modèles locaux multimodaux. Elle ne génère ni images, ni vidéo, ni audio. Pour générer des images, des vidéos et de l’audio hébergés via la même API de style OpenAI, utilisez les points de terminaison Kunavo /v1/images, /v1/video et /v1/audio.