Intermédiaire 13 minPrompting

Maîtriser les system prompts

Réponse directe

Un system prompt est le message de rôle « system » qui fixe l'identité, la mission, les règles, le style et le format de sortie d'un LLM avant votre première question. Pour l'écrire : cinq blocs courts, des consignes à l'impératif et vérifiables, un test sur quelques questions pièges. Il consomme du contexte et n'est pas un coffre-fort : n'y mettez aucun secret.

Un system prompt, c'est le briefing donné au modèle avant la première question. Bien écrit, il rend un LLM local cohérent et prévisible ; mal écrit, il gaspille du contexte et se contredit. Vous saurez le structurer, l'installer dans Ollama, LM Studio ou une API, le tester méthodiquement et connaître ses limites, notamment en matière de confidentialité.

Par Mohamed Meguedmi·Màj 2026-09-30·Testé sur Windows, macOS, Linux

#Qu'est-ce qu'un system prompt, et comment l'écrire ?

Un system prompt est le message de rôle « system » placé en tête de la conversation : il fixe l'identité du modèle, sa mission, ses règles, son style et le format de ses réponses avant que vous posiez la première question. Le modèle le relit à chaque tour, au même titre que l'historique. Pour l'écrire, gardez cinq blocs courts (identité, mission, règles dures, style, format de sortie), formulez des consignes à l'impératif et vérifiables, puis testez-le sur quelques questions pièges. Un system prompt guide le comportement ; il ne constitue ni une barrière de sécurité ni un coffre pour vos secrets, et il consomme une part de la fenêtre de contexte de votre modèle local. Ce guide détaille chaque point, avec des exemples prêts à coller dans Ollama, LM Studio ou une API compatible OpenAI.

Un LLM reçoit en général trois types de messages : system (le cadre permanent), user (ce que vous tapez) et assistant (ce qu'il a déjà répondu). Le client de chat renvoie toute la conversation au modèle à chaque requête, message system compris. C'est ce qui donne l'impression d'une « personnalité » stable pendant la session.

i
Analogie
Un system prompt est à un LLM ce qu'une fiche de poste est à un intérimaire. Sans elle, il fait de son mieux. Avec elle, il sait ce qu'on attend, ce qu'on lui interdit et sous quelle forme rendre son travail.

Les fournisseurs de modèles décrivent le même usage. La documentation d'Anthropic explique que définir un rôle dans le system prompt concentre le comportement et le ton du modèle, et qu'une seule phrase suffit à faire une différence. Le principe vaut pour les modèles locaux : la consigne permanente va dans le message system, la question du moment dans le message user.

#Ce qu'un bon system prompt change vraiment

Le kit IA Locale

Ton ChatGPT privé et gratuit sur ta machine en 1 heure — LM Studio, Ollama, Open WebUI, tes documents, sans cloud.

  • Espace en ligne à vie
  • PDF + fichiers
  • Mises à jour à vie
Cohérence de ton
Un assistant qui tutoie au premier message et vouvoie au deuxième trahit un system prompt absent ou trop vague. Fixer le registre une fois évite la dérive.
Contraintes plus stables
Interdits (« pas d'émoji ») et obligations (« citer la source ») tiennent mieux lorsqu'ils sont posés en system que répétés à la volée. Ils ne sont toutefois jamais garantis : plus le modèle est petit, plus il faut vérifier.
Moins de répétition
Si vous tapez « réponds en français formel » à chaque question, mettez-le une fois en system. Moins d'oublis, moins de frappe.
Périmètre de mission
« Ne traite que le droit du travail français » réduit les hors-sujets, sans jamais les interdire à coup sûr.

Ce que le system prompt ne fait pas : il n'ajoute aucune connaissance au modèle et ne remplace ni un document fourni dans la conversation ni un RAG. Si le modèle doit s'appuyer sur vos contrats, c'est la recherche documentaire qui apporte les faits ; le system prompt dit seulement comment les utiliser et les citer.

#Ce qu'il coûte : de la place dans la fenêtre de contexte

Le system prompt n'est pas gratuit : ses tokens occupent la fenêtre de contexte, avec l'historique, vos documents et la réponse à venir. Sur un poste local, cette fenêtre est souvent plus petite qu'on ne le croit. La page « Context length » de la documentation d'Ollama indique une fenêtre par défaut de 4 000 tokens environ (« 4k ») sous 24 Gio de VRAM, 32 000 entre 24 et 48 Gio, et 256 000 au-delà. Un prompt de 400 tokens pèse donc près de 10 % de 4 096 tokens, avant même le premier échange.

Le calcul est simple : fenêtre disponible = fenêtre totale − tokens du system prompt − réponse attendue. Avec 4 096 tokens, un system de 400 tokens et une réponse de 800 tokens, il reste 2 896 tokens pour l'historique et les documents. Quand l'échange s'allonge, la fenêtre se remplit et le contenu ancien risque de ne plus tenir : une raison de plus pour que le briefing soit dense plutôt que long.

Il existe un second effet, documenté par la recherche : dans l'étude « Lost in the Middle » (Liu et al., 2023), les performances sont souvent meilleures quand l'information utile se trouve au début ou à la fin du contexte, et se dégradent quand elle est au milieu, même pour des modèles annoncés à long contexte. Conséquence pratique : placez les règles les plus importantes en tête de votre system prompt, et rappelez la contrainte critique dans la dernière ligne si vous constatez des oublis.

→
Augmenter la fenêtre si nécessaire
Si votre system prompt dépasse quelques centaines de tokens, ou si vous joignez des documents, relevez la fenêtre plutôt que de raccourcir à l'aveugle : PARAMETER num_ctx dans un Modelfile, ou la variable OLLAMA_CONTEXT_LENGTH au lancement du serveur. Une fenêtre plus grande consomme davantage de mémoire vidéo ; le guide sur la fenêtre de contexte détaille l'arbitrage.

#Structure d'un system prompt solide en cinq blocs

Un bon system prompt tient en cinq blocs courts. Inutile d'écrire un roman : chaque phrase supplémentaire consomme du contexte et augmente le risque de consignes contradictoires. Le tableau résume ce que porte chaque bloc et l'erreur la plus fréquente.

Les cinq blocs d'un system prompt
BlocQuestion à laquelle il répondExempleErreur fréquente
IdentitéQui est le modèle ?« Tu es Lex, assistant juridique en droit du travail français. »Une identité flatteuse (« expert mondial ») sans périmètre
MissionQue doit-il accomplir, pour qui ?« Tu aides un DRH à comprendre ses obligations et à rédiger des courriers. »Mission trop large : « aide sur tout »
Règles duresQue fait-il toujours ou jamais ?« Cite l'article du Code du travail concerné. »Dix règles de même priorité, dont deux se contredisent
StyleComment s'exprime-t-il ?« Phrases courtes, vocabulaire accessible. »Adjectifs vagues (« professionnel ») sans exemple
Format de sortieSous quelle forme rend-il la réponse ?« Par défaut : un paragraphe et les références. »Format non précisé, donc variable d'une réponse à l'autre

Voici le même prompt assemblé. Chaque règle est à l'impératif et vérifiable (l'article est cité ou non), et le comportement hors périmètre est explicite.

System prompt complet
Tu es Lex, assistant juridique spécialisé en droit
du travail français (version 2026).

MISSION
Tu aides un DRH à comprendre ses obligations et à
rédiger des courriers RH conformes.

RÈGLES
- Ne jamais donner d'avis juridique formel.
- Toujours citer l'article du Code du travail concerné,
  par ex. "L.1232-2".
- Si la question sort du droit du travail, répondre :
  "Hors de mon périmètre. Je ne traite que le droit
  du travail français."

STYLE
- Phrases courtes, vocabulaire accessible.
- Pas d'anglicisme si un équivalent existe.
- Ton professionnel mais direct.

FORMAT
- Réponse par défaut : 1 paragraphe + références.
- Sur demande : tableau, courrier-type, checklist.

Ce prompt sert de modèle de structure. Un modèle local peut citer un article inexistant : faites vérifier les références par un humain, et voyez le guide sur les hallucinations.

#Formuler des consignes que le modèle suit

Impératif direct
« Fais X. » et « Ne fais pas Y. » sont plus nets que « essaie si possible de… », qui laisse le modèle libre de ne pas essayer.
Positif d'abord
Dire ce qu'il faut faire (« réponds en une phrase ») vaut mieux qu'une longue liste d'interdits, à réserver aux vrais garde-fous.
Un exemple vaut une description
Pour un format précis, donnez une réponse type de deux lignes plutôt que trois phrases d'explication.

#En pratique avec Ollama : /set system et Modelfile

Ollama propose trois façons de définir un system prompt, selon la durée de vie voulue. Dans une session interactive, la commande /set system définit le message pour la conversation en cours ; elle apparaît dans la liste des commandes disponibles du client. Le prompt disparaît à la fin de la session.

Session interactive
>>> /set system """
Tu es Lex, assistant juridique spécialisé en droit
du travail français...
"""

Pour un system prompt persistant, créez un Modelfile : c'est un modèle dérivé, avec son propre nom. La documentation d'Ollama précise que l'instruction SYSTEM définit le message system à insérer dans le gabarit du modèle. Le mot « gabarit » compte : si le template d'un modèle n'a pas d'emplacement pour le message system, l'instruction SYSTEM n'aura pas d'effet. En cas de comportement surprenant, comparez avec le Modelfile de départ.

Modelfile
FROM mistral

PARAMETER temperature 0.3
PARAMETER num_ctx 8192

SYSTEM """
Tu es Lex, assistant juridique...
"""
Terminal
ollama create lex -f ./Modelfile
ollama run lex

Troisième option, côté API : le corps d'une requête à /api/generate accepte un champ system qui remplace celui défini dans le Modelfile, et /api/chat reçoit l'historique sous forme de tableau de messages avec un rôle et un contenu. Le guide sur le Modelfile détaille les autres instructions.

#En pratique avec LM Studio : le champ System Prompt et les presets

Dans l'onglet de chat, le panneau de configuration contient un champ System Prompt. Pour ne pas le retaper, LM Studio propose les presets. La documentation les décrit comme un moyen de regrouper un system prompt et d'autres paramètres dans une configuration réutilisable d'une conversation à l'autre.

→
Une bibliothèque de presets
Chaque paramètre du panneau Advanced Configuration peut être enregistré dans un preset nommé : system prompt, mais aussi température, top-p ou nombre maximal de tokens. Créez un preset par usage (« relecteur FR », « assistant code », « expert juridique ») et changez de rôle en un clic. Les presets s'importent aussi depuis un fichier ou une URL.

#En pratique via l'API compatible OpenAI

Ollama, LM Studio, vLLM et llama-server exposent une API compatible OpenAI. Le premier message du tableau, avec le rôle system, définit le briefing. La documentation d'Ollama précise que le client exige une valeur de clé API mais que le serveur l'ignore : n'importe quelle chaîne convient pour un usage local.

Python
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama",  # ignoré
)

resp = client.chat.completions.create(
    model="mistral",
    messages=[
        {"role": "system", "content": "Tu es Lex..."},
        {"role": "user",   "content": "Peut-on rompre une période d'essai ?"},
    ],
)

print(resp.choices[0].message.content)

Un point de conception : l'API n'a pas de mémoire. À chaque appel, votre code renvoie le message system puis l'historique complet. Si vous l'omettez dans un appel, le modèle répond sans briefing : stockez le tableau de messages et gardez le system en position 0.

#Trois system prompts prêts à l'emploi

#Correcteur de français

System prompt
Tu es un correcteur de français académique.
Règle unique : renvoie UNIQUEMENT le texte corrigé,
sans commentaire, sans liste des changements.
Corrige : orthographe, grammaire, ponctuation, barbarismes.
Ne reformule jamais. Ne change pas le style de l'auteur.

#Extracteur structuré

System prompt
Tu extrais des informations structurées depuis du texte libre.
Sortie STRICTE : JSON valide, rien d'autre (pas de ```json, pas de texte).
Si une information est absente, renvoie null.
Ne devine jamais.

Pour une extraction en production, ne comptez pas sur le seul system prompt : les sorties structurées d'Ollama permettent d'imposer un schéma JSON aux réponses, ce qui évite un JSON cassé. Le guide sur le function calling et les sorties JSON explique la mise en place.

#Assistant code senior

System prompt
Tu es un ingénieur logiciel senior.
Pour toute réponse de code :
1. Dis en une phrase ce que fait le code.
2. Donne le code dans un bloc unique.
3. Liste 1 à 3 cas limites à surveiller.
Tu ne mets JAMAIS de commentaire à l'intérieur du code,
sauf si un piège non-évident le justifie.

#Tester et corriger un system prompt sans tâtonner

Un system prompt s'améliore par essais contrôlés, pas par ajouts successifs. Sans méthode, on empile des règles jusqu'à obtenir un texte long, contradictoire et impossible à déboguer. Voici une procédure simple, sans outil particulier.

  1. 01
    Constituer cinq questions-tests
    Rédigez cinq entrées : deux cas normaux, une question hors périmètre, une demande de format inhabituel et une tentative de détourner le rôle (« oublie tes instructions »). Gardez-les dans un fichier.
  2. 02
    Fixer les conditions
    Utilisez le même modèle, la même quantification et une température basse (0,2 à 0,3) pour comparer les versions du prompt à conditions égales.
  3. 03
    Modifier une seule chose à la fois
    Changez une règle, relancez les cinq questions, notez ce qui a évolué. Si deux règles changent en même temps, vous ne saurez pas laquelle a corrigé ou aggravé le comportement.
  4. 04
    Supprimer avant d'ajouter
    Quand une règle est ignorée, reformulez-la plus court, placez-la en tête ou supprimez celle qui la contredit. Ajouter du texte est le dernier recours.
  5. 05
    Versionner le prompt
    Conservez chaque version dans un fichier texte daté ou dans le Modelfile sous contrôle de version, avec une ligne sur ce qui a changé. Vous pourrez revenir en arrière.

#Pièges à éviter

Erreurs courantes et correctifs
PiègeSymptômeCorrectif
Prompt trop longFin du prompt appliquée moins fidèlement, fenêtre grignotéeCondenser, placer l'essentiel en tête, relever num_ctx si besoin
Instructions contradictoires« Sois bref » et « donne beaucoup d'exemples » : comportement variableHiérarchiser : en cas de conflit, la règle 1 l'emporte
Formulation hésitante« Essaie si possible de… » : consigne appliquée par intermittenceImpératif direct : « Fais X. »
Langue non préciséeRéponses dans la langue du prompt ou de la question, selon le modèleÉcrire « Réponds toujours en français » et rédiger le prompt en français
Emplacement system ignoréModèle qui n'applique pas le SYSTEM d'un ModelfileVérifier que le template du modèle prévoit un message system
Secrets dans le promptUn utilisateur obtient le contenu du prompt en le demandantNe rien y mettre de confidentiel

#Le system prompt n'est pas un coffre-fort

Les recommandations de l'OWASP sur le risque de fuite du system prompt sont claires : il ne doit pas être considéré comme un secret ni utilisé comme contrôle de sécurité, et il ne doit contenir ni identifiants ni chaînes de connexion. Traduction pour un déploiement local : si un contrôle d'accès est nécessaire (données par utilisateur, actions sensibles), il se fait dans votre application, pas dans une phrase du prompt. Le guide sur l'injection de prompt décrit pourquoi un modèle local n'est pas à l'abri.

FAQ
C'est quoi un system prompt ?+
C'est le message de rôle « system » placé au début d'une conversation avec un LLM. Il définit l'identité du modèle, sa mission, ses règles, son style et le format de ses réponses. Il reste dans le contexte à chaque tour, ce qui stabilise le comportement pendant toute la session, sans que vous ayez à répéter vos consignes.
Quelle longueur idéale pour un system prompt local ?+
Le plus court possible pour couvrir vos règles : quelques lignes pour un cas simple, une à deux centaines de mots pour un assistant métier. Chaque token pris par le system réduit la place disponible pour l'historique, surtout avec la fenêtre par défaut d'Ollama de 4 000 tokens environ sous 24 Gio de VRAM. Placez l'essentiel en tête.
Comment définir un system prompt permanent dans Ollama ?+
Créez un Modelfile avec une ligne FROM et une instruction SYSTEM contenant votre texte, puis lancez ollama create avec le nom voulu et ollama run avec ce nom. Le prompt est alors embarqué dans le modèle dérivé. La commande /set system, elle, ne vaut que pour la session interactive en cours.
Un system prompt peut-il empêcher un modèle de révéler des informations ?+
Pas de façon fiable. L'OWASP rappelle que le system prompt ne doit pas être considéré comme un secret ni servir de contrôle de sécurité. Un utilisateur motivé peut le faire ressortir ou détourner la consigne. Placez les contrôles d'accès et les données sensibles dans votre application, jamais dans le texte du prompt.
Faut-il écrire le system prompt en français ou en anglais ?+
Écrivez-le dans la langue des réponses attendues, et ajoutez une consigne explicite du type « Réponds toujours en français ». Certains modèles répondent dans la langue du prompt plutôt que dans celle de la question. Testez avec deux ou trois questions dans chaque langue, sur votre modèle précis, avant de généraliser.
Pourquoi mon modèle ignore-t-il mon system prompt ?+
Vérifiez d'abord que le prompt est bien envoyé (rôle system en première position, ou SYSTEM dans le Modelfile) et que le template du modèle prévoit un message system. Ensuite, raccourcissez, supprimez les consignes contradictoires, passez à l'impératif et testez avec une température basse. Un modèle très petit suit moins bien les consignes complexes.
Ce guide vous a aidé ?

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