Intermédiaire 12 minOllama

Ollama Modelfile : créer et personnaliser son modèle

Ollama ne se limite pas à télécharger des modèles existants : avec un fichier texte de quelques lignes, vous fabriquez vos propres variantes. Un Modelfile, c'est l'équivalent d'un Dockerfile pour LLM — il fige un system prompt, des paramètres de sampling, un template de conversation. Ce guide montre comment personnaliser Ollama avec un Modelfile à travers trois cas concrets : un assistant en français strict, un coder Python, un traducteur sans bavardage.

Par Mohamed Meguedmi·Màj 2026-08-31·Testé sur Windows, macOS, Linux
i
En bref
Un Modelfile Ollama est l'équivalent d'un Dockerfile pour LLM : un fichier texte qui fige un comportement par-dessus un modèle existant, sans toucher à ses poids. · Trois directives suffisent pour l'essentiel : FROM (le modèle de base), SYSTEM (le prompt système persistant), et PARAMETER (température, contexte, etc.). · Une fois le fichier écrit, ollama create mon-modele -f ./Modelfile crée la variante, utilisable ensuite comme ollama run mon-modele. · Utile pour un assistant en français strict, un coder Python silencieux ou un traducteur sans bavardage.

#Pourquoi un Modelfile ?

Quand vous tapez ollama run qwen3.5:9b, vous obtenez un modèle générique. Il répond parfois en anglais à une question en français, il commente ses réponses code avec des introductions interminables, il négocie quand vous demandez une traduction littérale. Au lieu de répéter le même system prompt à chaque session, vous le figez une fois dans un Modelfile et vous obtenez une variante réutilisable.

Concrètement, un Modelfile permet trois choses : (1) attacher un system prompt persistant au modèle, (2) régler les paramètres de génération (température, contexte, stop tokens), (3) optionnellement remplacer le template de chat. La variante créée s'utilise comme n'importe quel modèle Ollama : ollama run mon-assistant.

i
Ce n'est pas du fine-tuning
Un Modelfile ne modifie pas les poids du modèle. Il configure son comportement par-dessus. Pour vraiment apprendre un style ou un domaine au modèle, il faut un fine-tune (LoRA, QLoRA) — ce qui dépasse le cadre d'Ollama seul.

#Prérequis

Le kit IA Locale

Tu sais personnaliser un modèle avec un Modelfile. Le kit IA Locale l'installe dans un vrai ChatGPT privé pour toute la maison, avec Ollama et Open WebUI (ch. 6), et t'aide à choisir le modèle de base adapté à ta machine (ch. 3).

  • Espace en ligne à vie
  • PDF + fichiers
  • Mises à jour à vie
Ollama installé
Version 0.3+ recommandée. Vérifiez avec ollama --version. Le daemon doit tourner sur http://localhost:11434.
Un modèle de base déjà tiré
Par exemple ollama pull qwen3.5:9b ou ollama pull qwen3-coder:30b. Le Modelfile hérite de ce modèle.
Un éditeur de texte
VSCode, Notepad++, vim — n'importe lequel. Le fichier n'a pas d'extension obligatoire, on l'appelle généralement Modelfile par convention.
Environ 5 minutes
Le temps de créer le fichier et de lancer ollama create. Aucun téléchargement supplémentaire : on réutilise un modèle déjà présent.

#1. Syntaxe du Modelfile

Un Modelfile est un fichier texte avec des instructions en majuscules, une par bloc. L'ordre n'a pas d'importance, mais la convention place FROM en premier.

Squelette minimal
FROM qwen3.5:9b

SYSTEM """
Tu es un assistant utile et concis.
"""

PARAMETER temperature 0.7
PARAMETER num_ctx 4096

Les instructions principales :

FROM
Modèle de base. Obligatoire. Accepte un nom Ollama (qwen3.5:9b, qwen3.8:27b) ou un chemin local vers un GGUF.
SYSTEM
Le system prompt qui sera injecté à chaque conversation. Utilisez les guillemets triples pour les textes multilignes.
PARAMETER
Réglages de sampling et de contexte. Une instruction par paramètre. Les plus utiles : temperature, top_p, top_k, num_ctx, repeat_penalty, num_predict, stop.
TEMPLATE
Format de prompt complet (rare). À ne toucher que si vous savez ce que vous faites — chaque famille de modèle a son template.
MESSAGE
Exemples few-shot. Préfixés par MESSAGE user ou MESSAGE assistant. Utile pour ancrer un style.
ADAPTER
Chemin vers un LoRA GGUF à appliquer par-dessus FROM. Pour les utilisateurs avancés.
LICENSE
Texte libre, pour la traçabilité. N'affecte pas l'exécution.
→
Les paramètres qui comptent vraiment
Pour 90% des cas, vous n'aurez besoin que de SYSTEM + temperature + num_ctx. Inutile de tout configurer : Ollama applique des valeurs par défaut sensées (temperature 0.8, num_ctx 2048, repeat_penalty 1.1).

#2. Créer son premier modèle

Le workflow est toujours le même : on écrit un Modelfile, on lance ollama create, on teste avec ollama run.

  1. 01
    Créer le fichier
    Dans un dossier de travail, créez un fichier nommé Modelfile (sans extension). Mettez-y la définition de votre variante.
  2. 02
    Lancer la création
    Depuis le même dossier : ollama create mon-modele -f ./Modelfile. Ollama valide la syntaxe, hérite des poids du modèle FROM et enregistre une nouvelle entrée. C'est instantané, il ne re-télécharge rien.
  3. 03
    Vérifier
    ollama list montre votre nouveau modèle aux côtés des autres. La taille affichée est identique à celle du modèle de base — c'est une référence, pas une copie.
  4. 04
    Tester
    ollama run mon-modele. Le system prompt et les paramètres sont déjà appliqués. Vous pouvez aussi pointer une interface (Open WebUI, LM Studio) sur cette variante via l'API.
Cycle complet
# Dans le dossier qui contient le Modelfile
ollama create assistant-fr -f ./Modelfile
ollama list
ollama run assistant-fr
!
Le nom du modèle est définitif
Pour modifier un Modelfile, éditez le fichier puis relancez ollama create avec le MÊME nom — la variante est remplacée. Si vous changez de nom, vous accumulez des références. ollama rm <nom> nettoie une variante devenue inutile.

#3. Exemple : assistant français concis

Objectif : un assistant qui répond systématiquement en français, sans préambule du type "Bien sûr, voici…", sans formules d'excuse, avec une longueur calibrée.

Modelfile-assistant-fr
FROM qwen3.5:9b

SYSTEM """
Tu es un assistant francophone précis et concis.

Règles strictes :
- Réponds toujours en français, jamais en anglais, même si l'utilisateur écrit en anglais.
- Pas de préambule ("Bien sûr", "Voici", "Absolument"). Va directement au fait.
- Pas d'excuses ni de disclaimers sauf si l'information est réellement incertaine.
- Réponses courtes par défaut (3-5 phrases). Détaille uniquement si on te le demande explicitement.
- Si tu ne sais pas, dis-le en une phrase. N'invente pas.
"""

PARAMETER temperature 0.6
PARAMETER top_p 0.9
PARAMETER num_ctx 8192
PARAMETER repeat_penalty 1.15

Création et test :

Terminal
ollama create assistant-fr -f ./Modelfile-assistant-fr
ollama run assistant-fr "Quels sont les avantages d'un LLM local ?"

Le repeat_penalty à 1.15 (au lieu du 1.1 par défaut) coupe court aux modèles qui radotent. Le num_ctx à 8192 permet de coller des documents un peu longs sans casser le contexte par défaut de 2048.

→
Tester l'effet du system prompt
Comparez côte à côte ollama run qwen3.5:9b et ollama run assistant-fr sur la même question. Sans Modelfile, Qwen 3.5 commence souvent par "Bien sûr,". Avec votre variante, il enchaîne directement sur la réponse. C'est la différence concrète.

#4. Exemple : coder Python silencieux

Objectif : un compagnon de code qui renvoie du Python prêt à coller, avec un minimum de prose autour. Idéal pour les workflows où on veut piper la sortie dans un éditeur ou un script.

Modelfile-coder-py
FROM qwen3-coder:30b

SYSTEM """
Tu es un assistant de code Python expert. Tu suis ces règles :

1. Réponds uniquement avec du code Python valide, dans un bloc fenced ```python.
2. Pas d'explication avant ou après le code, sauf si l'utilisateur demande explicitement une explication.
3. Le code doit être complet, exécutable, avec les imports nécessaires en haut.
4. Privilégie la stdlib quand c'est possible. Si une dépendance externe est nécessaire, mets un commentaire en tête : # pip install <package>.
5. Type hints quand c'est raisonnable (Python 3.10+).
6. Si la demande est ambiguë, choisis l'interprétation la plus probable et code-la, sans poser de questions.
"""

PARAMETER temperature 0.2
PARAMETER top_p 0.95
PARAMETER num_ctx 16384
PARAMETER stop "```\n\n"

Quelques choix techniques notables :

FROM qwen3-coder:30b
Modèle spécialisé code de 2026 (MoE 30B-A3B, seulement 3B de paramètres actifs, 256k de contexte, ~19 Go en Q4). Sur une carte 24 Go (RTX 4090) ou un Mac 32 Go, il tourne à 50-80 tokens/s grâce à ses 3B actifs. Si vous n'avez que 16 Go de VRAM, remplacez par gpt-oss:20b (14 Go) ou devstral:24b.
temperature 0.2
Basse pour le code. À 0.7 (défaut), le modèle improvise des noms de variables et invente parfois des API. Pour du code, on veut du déterminisme.
num_ctx 16384
Fenêtre étendue pour analyser des fichiers entiers. Attention : multiplie la VRAM consommée par le contexte.
stop
Le modèle s'arrête après le premier bloc de code. Évite les explications post-code qui polluent la sortie.
Exemple d'usage
ollama create coder-py -f ./Modelfile-coder-py
ollama run coder-py "Lire un CSV avec pandas et retourner la moyenne de la colonne 'prix'"
i
Ajuster pour vos besoins
Si vous voulez aussi des tests pytest générés systématiquement, ajoutez une règle dans le SYSTEM : "7. Produis également un bloc de tests pytest minimal après le code principal." Le modèle suivra l'instruction tant qu'elle est claire et non contradictoire.

#5. Exemple : traducteur strict EN→FR

Objectif : un traducteur qui renvoie UNIQUEMENT la traduction, sans guillemets, sans "Traduction :", sans variation stylistique. Le cas d'usage typique : intégration dans un pipeline n8n ou un script bash où la sortie sera consommée brute.

Modelfile-translator
FROM qwen3.5:9b

SYSTEM """
Tu es un traducteur professionnel anglais → français.

Règles ABSOLUES :
- Tu reçois un texte en anglais. Tu retournes UNIQUEMENT la traduction française.
- Pas de préfixe ("Traduction :", "Voici :"), pas de guillemets autour de ta réponse, pas de commentaire.
- Conserve la mise en forme exacte du texte source (sauts de ligne, listes, ponctuation).
- Conserve les noms propres, marques, URLs et identifiants techniques tels quels.
- Si le texte est déjà en français, renvoie-le inchangé.
- Si le texte est dans une autre langue que l'anglais, renvoie : ERREUR_LANGUE_NON_SUPPORTÉE
"""

PARAMETER temperature 0.3
PARAMETER num_ctx 4096
PARAMETER num_predict 2048

L'ajout de MESSAGE pour ancrer le format par few-shot rend le comportement encore plus prévisible :

Version renforcée avec few-shot
FROM qwen3.5:9b

SYSTEM """
Tu traduis de l'anglais vers le français. Tu renvoies UNIQUEMENT la traduction, sans préfixe ni guillemets.
"""

MESSAGE user "The meeting starts at 3 PM."
MESSAGE assistant "La réunion commence à 15 heures."

MESSAGE user "Please check the attached document."
MESSAGE assistant "Merci de consulter le document ci-joint."

PARAMETER temperature 0.3

Usage en pipeline :

Pipe shell
echo "The deployment is scheduled for tomorrow morning." | ollama run translator-en-fr
→
Appel direct via l'API
Pour intégrer dans un script, l'API HTTP est plus pratique : curl http://localhost:11434/api/generate -d '{"model":"translator-en-fr","prompt":"Your text here","stream":false}'. La réponse JSON contient la traduction dans le champ response.

#6. Gérer ses modèles personnalisés

Au fil du temps, vous allez accumuler plusieurs variantes. Quelques commandes utiles pour garder le contrôle :

Inventaire et nettoyage
# Lister tous les modèles (originaux + variantes)
ollama list

# Voir le Modelfile d'une variante (utile pour récupérer un Modelfile perdu)
ollama show --modelfile assistant-fr

# Voir les paramètres effectifs
ollama show --parameters assistant-fr

# Voir le system prompt seul
ollama show --system assistant-fr

# Supprimer une variante (libère uniquement l'entrée, pas les poids du modèle de base)
ollama rm assistant-fr
i
Versionner ses Modelfiles dans Git
Les Modelfiles sont du texte. Mettez-les dans un repo Git à part. Vous gardez l'historique des prompts qui marchent, et n'importe quelle machine avec Ollama et le bon modèle de base peut recréer toutes vos variantes en quelques secondes.

#7. Quel modèle de base choisir ?

Tout Modelfile commence par FROM : c'est le choix du modèle de base qui détermine 90 % du résultat final. Un system prompt parfait ne rattrapera jamais une base inadaptée à votre usage ou trop grosse pour votre VRAM.

Assistant généraliste
Un modèle récent de 8 à 14B (famille Qwen ou Gemma) en Q4 : réactif, bon en français, et il laisse de la marge pour le contexte.
Code
Un modèle spécialisé code — les MoE type Qwen3-Coder 30B-A3B sont très rapides dès 20 Go de mémoire ; en dessous, un 7-9B code reste pertinent.
Français soutenu / rédaction
Les modèles Mistral (Nemo, Magistral) gardent l’avantage sur la langue française à taille égale.
Petite config (8 Go de VRAM)
Restez sur du 4 à 9B en Q4 : un modèle qui déborde en RAM ruine la réactivité, quel que soit le Modelfile.

Pour comparer les bases par VRAM, licence et usage, le catalogue QuelLLM filtre les modèles compatibles avec votre machine — chaque fiche donne la commande ollama run exacte à mettre dans votre FROM.

#Dépannage

Le modèle ignore le system prompt
Vérifiez que vous lancez bien votre variante (ollama run mon-modele) et pas le modèle de base. Confirmez avec ollama show --system mon-modele.
Réponses tronquées
Augmentez num_predict (défaut 128 dans certaines configs) à 2048 ou plus. Ou ajoutez PARAMETER num_predict -1 pour désactiver la limite.
Le modèle ne respecte pas une règle stricte
Reformulez la règle en majuscules, ajoutez "ABSOLUMENT" ou "JAMAIS", et ajoutez un exemple via MESSAGE. Les petits modèles (moins de ~10B) ont du mal avec les négations isolées.
Erreur "Error: invalid model reference"
Le modèle FROM n'est pas installé localement. Lancez ollama pull <modele> avant le ollama create.
VRAM saturée après création
Le num_ctx élevé multiplie la consommation. Si vous passez de 2048 à 16384, comptez +1 à +3 Go de VRAM selon la taille du modèle. Repassez à 8192 si ça serre.

#Pour aller plus loin

Le Modelfile est la brique de base pour spécialiser Ollama sans toucher aux poids. Trois directions naturelles à creuser ensuite :

Maîtriser les system prompts plus en profondeur
Le guide sur les system prompts détaille comment structurer rôles, contraintes et exemples pour des comportements vraiment fiables — utile dès que vous dépassez les 5 lignes de SYSTEM.
Régler température, top-p et top-k
Avant de toucher au modèle, savoir précisément ce que change chaque paramètre de sampling évite beaucoup d'allers-retours. Le guide dédié couvre tous les réglages utiles.
Exposer vos variantes via Open WebUI
Une fois vos modèles personnalisés créés, Open WebUI les liste automatiquement. Vous pouvez basculer entre assistant-fr, coder-py et translator-en-fr d'un clic depuis l'interface.
Questions fréquentes sur les modèles Ollama
Comment lister les modèles Ollama installés ?+
ollama list affiche tous les modèles présents sur le disque (nom, tag, taille, date). ollama ps montre ceux actuellement chargés en mémoire, avec la répartition CPU/GPU — c'est le premier réflexe quand une réponse semble anormalement lente.
Où sont stockés les modèles Ollama ?+
Dans ~/.ollama/models sur macOS et Linux, et dans C:\Users\<vous>\.ollama\models sous Windows. Pour les déplacer (par exemple vers un autre disque), définissez la variable d'environnement OLLAMA_MODELS avant de démarrer le daemon.
Comment supprimer un modèle pour libérer de la place ?+
ollama rm nom:tag supprime la référence. Les poids eux-mêmes (blobs) ne sont réellement effacés que si aucun autre modèle ne les partage — supprimer un modèle personnalisé bâti sur une base conservée ne libère donc que quelques kilo-octets.
Un modèle personnalisé prend-il le double de place sur le disque ?+
Non. Ollama stocke les poids en blobs adressés par contenu : votre modèle personnalisé référence les mêmes blobs que sa base. Seuls le Modelfile, le system prompt et les paramètres sont ajoutés — créez autant de variantes que vous voulez, le coût disque est négligeable.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.