Ollama — LLMs locaux avec une CLI et une API OpenAI
Ollama permet d’exécuter des grands modèles de langage en local sur sa machine, sans clé API, sans dépendance cloud. La CLI gère le cycle de vie des modèles et expose un serveur HTTP compatible OpenAI à l’adresse http://localhost:11434/v1. Idéal pour prototyper, chiffrer des données sensibles, ou simplement comprendre ce que fait un modèle sans engagement financier.
Installation
Linux / macOS — Script officiel
curl -fsSL https://ollama.com/install.sh | shVérification :
ollama --version
# ollama version 0.x.xLe service est lancé automatiquement au démarrage. Vérifier son état :
systemctl status ollamaDocker (alternative)
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollamaL’image expose le même port 11434. Les modèles sont persistés dans le volume ollama.
Piège : sur Docker, le conteneur n’a pas accès aux GPU par défaut. Pour activer CUDA, ajouter
--gpus allau run et installernvidia-container-toolkitau préalable.
Commandes CLI essentielles
Tirer un modèle
ollama pull llama3.2
ollama pull mistral
ollama pull gemma2:2b
ollama pull qwen2.5:7bLes modèles sont téléchargés dans ~/.ollama/models/. L’extension :2b, :7b, :14b indique la taille approximative du paramétrage.
Lancer une conversation interactive
ollama run llama3.2La session accepte le multi-lignes. Entrer /bye ou Ctrl+C pour quitter.
Aide stdin
Pour un usage scriptable (pipeline, preview) :
echo "Résume ce code en trois lignes" | ollama run llama3.2
echo "Traduis en anglais : Le déploiement est bloqué par un lock docker." | ollama run llama3.2Usage pratique : pipe depuis
catouhermes agentpour générer un résumé sans ouvrir l’interpréteur.
Gérer les modèles
# Lister les modèles installés avec leur taille
ollama list
# Supprimer un modèle pour libérer de l'espace disque
ollama rm llama3.2
# Copier un modèle (aliasing rapide)
ollama cp llama3.2 mon-assistantServir en arrière-plan
# Démarrer explicitement le serveur (inutile après l'install, mais utile pour debug)
ollama serve
# Rediriger sur un port autre que 11434
OLLAMA_HOST=0.0.0.0:8080 ollama serveAPI compatible OpenAI
Ollama expose son API sur http://localhost:11434/v1. La signature est identique à OpenAI, ce qui permet de remplacer l’endpoint dans n’importe quel client existant.
Python
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama", # clé arbitraire acceptée par Ollama
)
response = client.chat.completions.create(
model="llama3.2",
messages=[
{"role": "system", "content": "Tu es un assistant technique."},
{"role": "user", "content": "Explique l'injection de dépendances en Python."},
],
temperature=0.7,
)
print(response.choices[0].message.content)Le seul changement par rapport à un appel cloud : base_url et une api_key quelconque. Le reste du code (schema de messages, stream, tool calling) reste valide.
Node.js
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "http://localhost:11434/v1",
apiKey: "ollama",
});
const response = await client.chat.completions.create({
model: "llama3.2",
messages: [
{ role: "system", content: "Tu es un assistant technique." },
{ role: "user", content: "Explique l'injection de dépendances en Python." },
],
temperature: 0.7,
});
console.log(response.choices[0].message.content);Différence clé : pas de comptabilisation de tokens facturés. Le champ
usagerenvoyé par Ollama est théorique (estimation locale) et ne doit pas être utilisé pour du suivi de coûts.
Streaming local
stream = client.chat.completions.create(
model="llama3.2",
messages=[{"role": "user", "content": "Écris un poème sur les microservices."}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta
if delta.content:
print(delta.content, end="", flush=True)
print()Modèles populaires — guide de sélection
Le choix d’un modèle local dépend quasi exclusivement de la vRAM disponible sur la machine. Voici les modèles les plus utilisés et leurs exigences.
| Modèle | Taille param. | vRAM minimale | Usage recommandé |
|---|---|---|---|
| Gemma 2 2B | 2,6 G | 4 Go | Chat rapide, QCM, tests unitaires |
| Qwen 2.5 3B | 3,4 G | 4 Go | Chat multilingue (bon en français) |
| Llama 3.2 3B | 3,6 G | 4 Go | Code, chat, extraction JSON |
| Mistral 7B | 7,3 G | 8 Go | Code, tool calling, fiable |
| Llama 3.1 8B | 8,0 G | 8 Go | Généraliste, bon équilibre |
| Qwen 2.5 14B | 15 G | 16 Go | Analyse longue, multi-outils |
| Llama 3.1 70B | 70 G | 48 Go | Haute qualité, nécessite un GPU dédié |
Règle pratique : un modèle de 7B tourne correctement avec 8 Go de vRAM en Q4 (quantification 4-bit). Au-dessus de 13B, prévoir 16 Go minimum. En dessous de 4 Go, rester sur les modèles 2-3B ou choisir une version quantifiée via le tag :
ollama pull llama3.2:q2_K.
Vérifier la vRAM disponible
# NVIDIA
nvidia-smi --query-gpu=name,memory.total --format=csv,noheader
# AMD
rocminfo | grep -i "gpu" | head -5
# macOS (Apple Silicon)
system_profiler SPDisplaysDataType | grep "VRAM"Liaisons
- Outils & Workflow — Choix de modèle, SDK & feedback loop
- API LLM — Patterns Python, streaming, retry
Référence : Documentation Ollama , API OpenAI compatible