Guide
Appeler un LLM local depuis son code : API Ollama et autres
Brancher un programme sur un modèle local : API native d'Ollama, interface compatible, adresses et ports d'Ollama, LM Studio, llama.cpp et vLLM.
Mis à jour le
Un modèle local s'appelle depuis votre code comme un service en ligne : une requête HTTP vers une adresse locale. Les quatre outils courants, Ollama, LM Studio, llama.cpp et vLLM, exposent tous une interface compatible avec celle d'OpenAI. Vous pouvez donc utiliser une bibliothèque cliente répandue en changeant seulement l'adresse de base. Ollama propose en plus sa propre interface, sur http://localhost:11434/api. Faits tirés de la documentation de chaque outil, lue le 15/11/2026.
Les adresses à connaître
| Serveur | Adresse de base compatible OpenAI | Clé |
|---|---|---|
| Ollama | http://localhost:11434/v1/ |
exigée par le client, ignorée par Ollama |
| LM Studio | http://localhost:1234/v1 (port de ses exemples) |
— |
| llama.cpp | http://localhost:9931/v1 |
aucune par défaut ; --api-key pour en exiger une |
| vLLM | http://localhost:8000/v1 |
--api-key ou VLLM_API_KEY |
Exemple en Python, avec Ollama
D'après la documentation de compatibilité, avec un modèle déjà téléchargé :
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1/",
api_key="ollama", # exigée par le client, ignorée par Ollama
)
reponse = client.chat.completions.create(
model="gemma4",
messages=[{"role": "user", "content": "Rédige un accusé de réception en deux phrases."}],
)
print(reponse.choices[0].message.content)
Pour vLLM, changez base_url en http://localhost:8000/v1 et mettez la clé définie au lancement ; la documentation de vLLM montre exactement ce schéma. Pour LM Studio, http://localhost:1234/v1.
Ce que l'interface compatible d'Ollama accepte, et ce qu'elle refuse
Points d'accès pris en charge d'après la documentation : /v1/chat/completions, /v1/completions, /v1/models, /v1/embeddings, /v1/responses (sans état seulement) et des points d'accès audio.
Limites à connaître avant de migrer un programme existant :
- Discussion : pas de
logprobs, pas d'images par adresse web (les images en base64 fonctionnent), pas detool_choice,logit_bias,usernin. - Plongements : pas d'entrées sous forme de tableaux de jetons.
- Responses : pas de requêtes avec état (
previous_response_id,conversation). - Contexte : l'interface d'OpenAI n'a pas de réglage de taille de contexte. La documentation conseille un Modelfile :
FROM gemma4
PARAMETER num_ctx 16384
puis ollama create mon-modele et model="mon-modele" dans vos requêtes. Sans cela, vous restez sur la fenêtre par défaut, qui dépend de la mémoire vidéo (voir Commandes Ollama).
L'interface native d'Ollama
Ollama a sa propre interface sur http://localhost:11434/api. D'après l'introduction de l'API, pour l'inférence locale, on appelle http://localhost:11434/api/chat avec un modèle téléchargé, sans en-tête d'autorisation :
curl http://localhost:11434/api/chat -d '{
"model": "gemma4",
"messages": [{"role": "user", "content": "Bonjour"}],
"stream": false
}'
Pour les plongements (les vecteurs qui servent à la recherche par le sens), la documentation décrit POST /api/embed avec les champs model et input (une chaîne, ou une liste de chaînes pour traiter plusieurs textes d'un coup). Les vecteurs renvoyés sont normalisés, et la page recommande d'utiliser le même modèle pour indexer et pour interroger.
L'interface native expose aussi des réglages propres à Ollama, comme keep_alive, qui garde le modèle en mémoire plus ou moins longtemps (5 minutes par défaut d'après la FAQ). L'interface compatible OpenAI, elle, permet de passer d'un serveur à l'autre sans réécrire le code.
Natif ou compatible : que choisir ?
| Vous voulez… | Choisissez |
|---|---|
| pouvoir changer de serveur (Ollama, vLLM, service en ligne) sans réécrire | l'interface compatible OpenAI |
| régler finement le chargement et le contexte d'Ollama à chaque requête | l'interface native |
| des plongements pour un moteur de recherche interne | l'une ou l'autre, avec le même modèle pour indexer et pour interroger |
Avant de mettre en production
- Clé et réseau. Un serveur local sans clé est ouvert à quiconque l'atteint : laissez-le écouter sur
127.0.0.1, ou exigez une clé (llama.cpp, vLLM) et placez un proxy devant (voir Ollama sur un serveur). - Délais. Chez Ollama, un modèle inutilisé est déchargé après 5 minutes par défaut et doit être rechargé à l'appel suivant : prévoyez un délai d'attente généreux côté client, ou allongez
keep_alive. - Tests. Vérifiez sur des exemples réels que le modèle choisi respecte les formats de sortie dont votre programme a besoin.
Pour les bases d'un appel à une interface de modèle (en-têtes, corps de la requête, réponse), voir la page Premier appel à une API de LLM du site consacré aux interfaces de programmation.
Questions fréquentes
Quelle clé d'API mettre pour Ollama en local ?
N'importe quelle valeur : la documentation d'Ollama indique que le client OpenAI exige une clé, mais qu'Ollama l'ignore en local.
Comment régler la taille du contexte via l'interface compatible OpenAI d'Ollama ?
Cette interface n'a pas de réglage de contexte. La documentation conseille de créer un modèle avec un Modelfile contenant PARAMETER num_ctx, puis d'appeler ce modèle.
Sur quel port écoutent les serveurs locaux ?
D'après leur documentation lue le 15/11/2026 : Ollama 11434, LM Studio 1234 dans ses exemples, llama.cpp 9931, vLLM 8000.
Sources
Pages consultées pour écrire cet article :
- https://docs.ollama.com/api/introduction
- https://docs.ollama.com/api/openai-compatibility
- https://docs.ollama.com/faq
- https://docs.ollama.com/capabilities/embeddings
- https://lmstudio.ai/docs/developer/openai-compat
- https://raw.githubusercontent.com/ggml-org/llama.cpp/master/tools/server/README.md
- https://docs.vllm.ai/en/latest/getting_started/quickstart.html
- https://docs.vllm.ai/en/latest/serving/online_serving/openai_compatible_server/