Qu'est-ce qu'Ollama ? Un outil open source pour exécuter des grands modèles de langage en local. Il vous permet de télécharger, d'exécuter et de gérer facilement des modèles AI open source comme Llama, Mistral ou Qwen sur votre PC personnel, sans cluster GPU ni API cloud.
Table des matières
- Qu'est-ce qu'Ollama ?
- Installer Ollama
- Premiers pas : exécutez votre premier modèle
- Gestion des modèles : télécharger, basculer, supprimer
- API Ollama : intégration dans vos applications
- Cas pratiques : construire un assistant AI local
- Optimisation des performances et accélération GPU
- FAQ - Questions fréquentes
- Conclusion
Qu'est-ce qu'Ollama ?
Ollama est un outil open source d'exécution de grands modèles de langage (LLM) en local, créé par Jeff Hancock, sous licence MIT. Son objectif principal est simple : permettre à quiconque d'exécuter facilement des modèles AI open source sur sa propre machine.
Fonctionnalités principales
| Fonctionnalité | Description |
|---|---|
| Exécution en un clic | ollama run llama3 suffit pour lancer un modèle |
| Bibliothèque de modèles | Des dizaines de modèles populaires intégrés, support des Modelfile personnalisés |
| API REST | Interface compatible OpenAI, facile à intégrer |
| Multiplateforme | macOS, Linux, Windows tous pris en charge |
| Accélération GPU | Détection et utilisation automatiques des GPU NVIDIA/AMD |
| Open source et gratuit | Licence MIT, utilisable commercialement |
Pourquoi choisir Ollama ?
Avant l'arrivée d'Ollama, exécuter un grand modèle de langage en local demandait une configuration complexe : télécharger manuellement les fichiers de poids, installer PyTorch, gérer les conflits de dépendances, écrire du code d'inférence. Ollama a simplifié tout cela en une seule ligne de commande.
Comparaison avec d'autres outils LLM locaux :
| Outil | Facilité d'utilisation | Nombre de modèles | Compatibilité API | Support GPU |
|---|---|---|---|---|
| Ollama | ⭐⭐⭐⭐⭐ | 50+ | Compatible OpenAI | NVIDIA/AMD/Apple Silicon |
| LM Studio | ⭐⭐⭐⭐ | 30+ | Compatible OpenAI | NVIDIA/AMD |
| GPT4All | ⭐⭐⭐ | 20+ | Personnalisée | NVIDIA/AMD |
| Déploiement manuel | ⭐ | Illimité | Personnalisée | Configuration manuelle requise |
L'avantage d'Ollama réside dans sa simplicité d'utilisation extrême et son écosystème riche de modèles. Il est particulièrement adapté aux développeurs pour le prototypage rapide et l'assistance au quotidien avec l'AI pour la programmation.
Installer Ollama
macOS
# Méthode 1 : installation en un clic (recommandée)
curl -fsSL https://ollama.com/install.sh | sh
# Méthode 2 : via Homebrew
brew install ollama
# Vérifier l'installation
ollama --version
La version macOS exploite automatiquement le GPU Metal d'Apple Silicon (M1/M2/M3/M4), avec d'excellentes performances.
Linux
# Installation en un clic (inclut le service systemd)
curl -fsSL https://ollama.com/install.sh | sh
# Installation manuelle (binaire)
curl -fsSL https://ollama.com/install.sh | OLLAMA_INSTALL=1 sh
# Gestion via systemd
sudo systemctl start ollama
sudo systemctl enable ollama
# Vérification
ollama --version
L'installation sous Linux détecte automatiquement les GPU NVIDIA et installe le support des pilotes CUDA.
Windows
# Télécharger le programme d'installation Windows
winget install Ollama.Ollama
# Ou télécharger depuis le site officiel
# https://ollama.com/download/OllamaSetup.exe
# Vérification
ollama --version
La version Windows prend en charge l'accélération GPU NVIDIA CUDA et AMD ROCm.
Déploiement avec Docker
# Récupérer l'image officielle
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
# Vérification
docker exec ollama ollama list
Le déploiement Docker est idéal pour les environnements serveur et les scénarios CI/CD.
Premiers pas : exécutez votre premier modèle
Lancer en une étape
ollama run llama3.2
C'est aussi simple que ça ! Ollama va automatiquement : 1. Vérifier si le modèle existe déjà en local 2. Sinon, le télécharger depuis la bibliothèque officielle 3. Lancer l'interface de conversation interactive
La première exécution téléchargera le modèle (environ 2 à 4 Go). Ensuite, le lancement ne prendra que quelques secondes.
Conversation interactive
Après avoir lancé un modèle, vous verrez une interface terminal interactive :
>>> Bonjour ! Présentez-vous brièvement.
Bonjour ! Je suis un assistant AI basé sur le modèle Llama 3.2. Je peux vous aider à répondre à des questions, écrire du code, traduire des textes, faire du brainstorming et bien plus. Comment puis-je vous aider ?
>>> Écris-moi un tri rapide en Python
Bien sûr ! Voici l'implémentation du tri rapide en Python :
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
# Test
print(quick_sort([3, 6, 8, 10, 1, 2, 1]))
# Résultat: [1, 1, 2, 3, 6, 8, 10]
Raccourcis clavier utiles
| Raccourci | Fonction |
|---|---|
Entrée |
Envoyer le message |
Ctrl+C |
Interrompre la réponse en cours |
Ctrl+D ou /bye |
Quitter la conversation |
Ctrl+R |
Régénérer la réponse |
/set parameter |
Modifier les paramètres de génération |
Gestion des modèles : télécharger, basculer, supprimer
Voir les modèles disponibles
# Voir les modèles installés localement
ollama list
# Exemple de résultat :
# NAME ID SIZE MODIFIED
# llama3.2:latest a1b2c3d4e5f6 2.0 GB 2 hours ago
# mistral:7b f6e5d4c3b2a1 4.1 GB 1 day ago
# qwen2.5:14b 1a2b3c4d5e6f 8.9 GB 3 days ago
Explorer la bibliothèque officielle
Visitez ollama.com/library pour voir tous les modèles disponibles. Voici les modèles les plus populaires en 2026 :
| Modèle | Paramètres | Taille | Cas d'usage |
|---|---|---|---|
| Llama 3.2 | 1B/3B/8B | 0,8-4,7 Go | Conversation générale, génération de code |
| Mistral 7B | 7B | 4,1 Go | Tâches générales, multilingue |
| Qwen 2.5 | 7B/14B/32B | 4-18 Go | Optimisé chinois, raisonnement mathématique |
| DeepSeek Coder V2 | 16B/236B | 9-133 Go | Génération de code, assistant programmation |
| Phi-4 | 14B | 8,4 Go | Léger, fort en raisonnement |
| Gemma 2 | 2B/9B/27B | 1,6-15 Go | Par Google, inférence efficace |
| Yi 1.5 | 6B/9B/34B | 3,5-20 Go | Optimisé bilingue chinois-anglais |
Télécharger un modèle
# Télécharger un modèle spécifique
ollama pull llama3.2
ollama pull mistral:7b
ollama pull qwen2.5:14b
# Télécharger une version spécifique
ollama pull llama3.2:3b
Basculer entre modèles
En conversation interactive :
>>> /model mistral:7b
Modèle basculé vers mistral:7b
Ou directement en ligne de commande :
ollama run mistral:7b
Supprimer un modèle
# Supprimer un modèle individuel
ollama rm llama3.2
# Voir l'espace occupé par chaque modèle
du -sh ~/.ollama/models/*
Modelfile personnalisé
Ollama permet de créer des configurations de modèles personnalisées. Créez un fichier Modelfile :
FROM llama3.2:3b
# Définir le prompt système
SYSTEM """
Tu es un développeur Python professionnel.
Dans tes réponses :
1. Donne toujours un exemple de code fonctionnel en priorité
2. Explique la logique clé du code
3. Signale les pièges potentiels et les points d'optimisation
"""
# Ajuster les paramètres de génération
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER num_ctx 4096
Ensuite, créez votre modèle personnalisé :
# Créer le modèle
ollama create my-python-assistant -f Modelfile
# Exécuter le modèle personnalisé
ollama run my-python-assistant
API Ollama : intégration dans vos applications
API REST de base
Ollama expose une API REST sur http://localhost:11434, compatible avec le format OpenAI.
# Génération de texte (non streamé)
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Écris un tri à bulles en Python",
"stream": false
}'
# Format Chat (conversation multi-tours)
curl http://localhost:11434/api/chat -d '{
"model": "llama3.2",
"messages": [
{"role": "system", "content": "Tu es un expert en code"},
{"role": "user", "content": "Explique async/await"}
],
"stream": false
}'
Interface compatible OpenAI
Ollama propose un endpoint compatible OpenAI, pratique pour migrer des applications existantes :
# Endpoint compatible OpenAI /v1/chat/completions
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ollama" \
-d '{
"model": "llama3.2",
"messages": [{"role": "user", "content": "Bonjour"}]
}'
Intégration Python
Avec la bibliothèque Python officielle ollama :
# Installation
# pip install ollama
import ollama
# Génération simple
response = ollama.generate(
model='llama3.2',
prompt='Explique l\'informatique quantique en une phrase'
)
print(response['response'])
# Format Chat
response = ollama.chat(
model='llama3.2',
messages=[
{'role': 'system', 'content': 'Tu es un expert en revue de code'},
{'role': 'user', 'content': 'Qu\'y a-t-il de problématique dans ce code ?\n\nfor i in range(len(arr)):\n if arr[i] == x: return i'}
]
)
print(response['message']['content'])
# Sortie streamée
stream = ollama.chat(
model='llama3.2',
messages=[{'role': 'user', 'content': 'Écris un poème sur la programmation'}],
stream=True
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
Appeler Ollama avec le SDK OpenAI
from openai import OpenAI
# Pointer vers l'endpoint local d'Ollama
client = OpenAI(
base_url='http://localhost:11434/v1',
api_key='ollama' # N'importe quelle valeur fonctionne
)
response = client.chat.completions.create(
model='llama3.2',
messages=[
{'role': 'user', 'content': 'Explique ce qu\'est le RAG'}
]
)
print(response.choices[0].message.content)
Intégration JavaScript/TypeScript
// npm install ollama
import { Ollama } from 'ollama';
const ollama = new Ollama();
// Génération simple
const response = await ollama.generate({
model: 'llama3.2',
prompt: 'Qu\'est-ce que Docker ?',
});
console.log(response.response);
// Format Chat
const chat = await ollama.chat({
model: 'llama3.2',
messages: [
{ role: 'user', content: 'Recommande 5 ressources pour apprendre Rust' }
],
});
console.log(chat.message.content);
Cas pratiques : construire un assistant AI local
Cas 1 : Assistant de revue de code local
Créez un assistant AI spécialisé dans la revue de code :
import ollama
import sys
def review_code(code: str, language: str = "Python"):
"""Revue de code locale"""
response = ollama.chat(
model='llama3.2',
messages=[
{'role': 'system', 'content': f'''Tu es un expert senior en revue de code {language}.
Analyse le code selon ces critères :
1. Style du code (PEP 8 / bonnes pratiques)
2. Bugs potentiels et cas limites
3. Problèmes de performance
4. Vulnérabilités de sécurité
5. Suggestions d'amélioration
Format de sortie :
- Niveau du problème : 🔴 Critique / 🟡 Avertissement / 🟢 Suggestion
- Description du problème
- Exemple de correction'''},
{'role': 'user', 'content': f'Revoie ce code :\n\n```{language}\n{code}\n```'}
]
)
return response['message']['content']
if __name__ == '__main__':
# Lire le code depuis un fichier
with open(sys.argv[1], 'r') as f:
code = f.read()
print(review_code(code))
Utilisation :
python review.py mon_script.py
Cas 2 : Base de connaissances RAG locale
Combinez une base de données vectorielle pour construire un système RAG local :
# pip install ollama chromadb sentence-transformers
import ollama
import chromadb
from chromadb.utils import embedding_functions
# Initialiser le client Chroma
chroma_client = chromadb.Client()
# Utiliser un modèle d'embedding local
embed_fn = embedding_functions.SentenceTransformerEmbeddingFunction(
model_name="all-MiniLM-L6-v2"
)
collection = chroma_client.get_or_create_collection(
name="knowledge_base",
embedding_function=embed_fn
)
# Ajouter un document
def add_document(text: str, metadata: dict = None):
collection.add(
documents=[text],
metadatas=[metadata or {}],
ids=[f"doc_{collection.count()}"]
)
# Rechercher des documents pertinents
def retrieve(query: str, n_results: int = 3):
results = collection.query(
query_texts=[query],
n_results=n_results
)
return results['documents'][0]
# Générer une réponse
def rag_answer(question: str) -> str:
# 1. Récupérer les documents pertinents
context_docs = retrieve(question)
context = "\n\n".join(context_docs)
# 2. Appeler Ollama pour générer la réponse
response = ollama.chat(
model='llama3.2',
messages=[
{'role': 'system', 'content': f'Réponds à la question en utilisant le contexte suivant :\n\n{context}'},
{'role': 'user', 'content': question}
]
)
return response['message']['content']
# Exemple d'utilisation
add_document("Ollama prend en charge les modèles open source Llama, Mistral, Qwen, etc.")
add_document("Ollama propose une API REST compatible OpenAI")
print(rag_answer("Quels modèles Ollama prend-il en charge ?"))
Cas 3 : Traitement de texte en masse
import ollama
import json
def extract_entities(text: str) -> dict:
"""Extraire des entités d'un texte"""
response = ollama.chat(
model='llama3.2',
messages=[{
'role': 'user',
'content': f'''Extrais les entités du texte suivant et retourne-les au format JSON :
{text}
Format attendu :
{{
"personnes": [],
"organisations": [],
"lieux": [],
"dates": [],
"événements": []
}}'''
}]
)
try:
return json.loads(response['message']['content'])
except json.JSONDecodeError:
return {}
# Traitement en masse
texts = [
"Le PDG d'Apple, Tim Cook, s'est rendu à Beijing en juin 2026",
"OpenAI a annoncé GPT-5 à San Francisco"
]
for text in texts:
entities = extract_entities(text)
print(json.dumps(entities, ensure_ascii=False, indent=2))