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

  1. Qu'est-ce qu'Ollama ?
  2. Installer Ollama
  3. Premiers pas : exécutez votre premier modèle
  4. Gestion des modèles : télécharger, basculer, supprimer
  5. API Ollama : intégration dans vos applications
  6. Cas pratiques : construire un assistant AI local
  7. Optimisation des performances et accélération GPU
  8. FAQ - Questions fréquentes
  9. 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

BASH
# 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

BASH
# 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

POWERSHELL
# 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

BASH
# 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

BASH
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

BASH
# 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

BASH
# 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 :

BASH
ollama run mistral:7b

Supprimer un modèle

BASH
# 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 :

DOCKERFILE
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é :

BASH
# 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.

BASH
# 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 :

BASH
# 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 :

PYTHON
# 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

PYTHON
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

JAVASCRIPT
// 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 :

PYTHON
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 :

BASH
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 :

PYTHON
# 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

PYTHON
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))