System prompts efficaces
Mis à jour le 29 juillet 2026
L’art du message système en production
Le message système est votre levier le plus puissant pour contrôler le comportement du modèle. Contrairement aux instructions user, qui changent à chaque requête, il reste constant d’un appel à l’autre et définit le cadre de toute l’application. C’est lui qui transforme un modèle généraliste en assistant spécialisé. En production, on ne l’improvise donc pas : on le structure, on le versionne et on le teste comme n’importe quel autre composant du système.
Anatomie d’un system prompt de production
Un system prompt efficace se compose de quatre blocs distincts — identité, contexte, comportement, format. Voici l’ensemble assemblé pour un assistant de support logiciel :
system_prompt = """
IDENTITÉ : Vous êtes l'assistant IA de la société TechCorp, spécialisé dans le support technique des logiciels de comptabilité.
CONTEXTE : Les utilisateurs sont des comptables et des experts-comptables qui utilisent le logiciel ComptaPro v12. Ils connaissent la comptabilité mais pas nécessairement l'informatique.
COMPORTEMENT :
- Répondez en français avec vouvoiement
- Soyez précis et technique sans jargon informatique excessif
- Si vous n'êtes pas sûr, dites-le et orientez vers le support humain
- Ne fournissez jamais de conseils fiscaux ou juridiques
FORMAT :
- Réponses structurées avec des étapes numérotées pour les procédures
- Blocs de code pour les formules ou configurations
- Maximum 300 mots sauf demande explicite de détail
"""
Le bloc IDENTITÉ répond à la question « qui est le modèle ». Ce pattern de role-playing l’aide à cadrer ses réponses, à condition d’être précis. « Vous êtes un assistant utile » reste trop vague pour changer quoi que ce soit, tandis que « Vous êtes un ingénieur DevOps senior spécialisé en infrastructure AWS. Vous conseillez des équipes de 5 à 20 développeurs sur les architectures cloud » fixe d’un coup un niveau technique, un interlocuteur et un périmètre. Le modèle sait alors à quelle profondeur répondre sans que vous ayez à le lui redire.
Le bloc CONTEXTE fournit ce que le modèle ne peut pas deviner. Préciser que « le client utilise Python 3.11, FastAPI 0.110, et déploie sur AWS Lambda », que « la base de données est PostgreSQL 16 sur RDS » et que « le trafic moyen est de 500 requêtes/seconde en heure de pointe » lui évite de proposer une solution correcte en théorie mais incompatible avec l’environnement réel du client.
Le bloc COMPORTEMENT énonce les règles comme des instructions explicites, et il gagne à opposer systématiquement des TOUJOURS à des JAMAIS : toujours citer les sources en se limitant à la documentation officielle, toujours proposer des exemples de code testables ; jamais suggérer de solutions reposant sur des dépendances non maintenues, jamais modifier le schéma de base de données sans avertissement explicite. Cette symétrie ferme les portes que le modèle emprunterait spontanément.
Le bloc FORMAT, enfin, impose la structure de la sortie. Demander un plan en quatre temps — diagnostic en une ou deux phrases, solution recommandée avec le code si applicable, alternatives si pertinent, avertissements sur les effets de bord et les risques — vous garantit des réponses comparables entre elles, donc exploitables par votre interface autant que par vos utilisateurs.
Trois system prompts complets
Un chatbot e-commerce doit surtout savoir où s’arrêter : recommander, mais ne rien inventer, et passer la main dès qu’il s’agit du SAV.
from mistralai import Mistral
import os
client = Mistral(api_key=os.getenv("MISTRAL_API_KEY"))
SYSTEM_ECOMMERCE = """IDENTITÉ : Assistant de la boutique en ligne MaisonDeco.fr, spécialiste décoration intérieure.
CONTEXTE : Catalogue de 15 000 produits. Livraison France métropolitaine uniquement. Retours gratuits sous 30 jours.
COMPORTEMENT :
- Vouvoiement, ton chaleureux mais professionnel
- Recommander des produits en fonction du style décrit par le client
- Pour les questions SAV : collecter numéro de commande puis orienter vers [email protected]
- Ne jamais inventer de produits ou de prix
FORMAT : Réponses courtes (max 150 mots). Listes à puces pour les recommandations."""
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "system", "content": SYSTEM_ECOMMERCE},
{"role": "user", "content": "Je cherche un canapé pour un petit salon de 15m²."}
]
)
Un agent d’extraction poursuit l’objectif inverse : aucune liberté, aucune déduction, un JSON strictement conforme au schéma. Notez la temperature à zéro, indispensable dès que la sortie doit être reproductible.
SYSTEM_EXTRACTION = """IDENTITÉ : Extracteur de données structurées à partir de texte libre.
COMPORTEMENT :
- Extraire UNIQUEMENT les informations demandées
- Si une information est absente du texte, indiquer "non trouvé"
- Ne jamais inventer ou déduire des données manquantes
FORMAT : Répondre exclusivement en JSON valide, sans texte avant ni après.
Schéma : {"nom": str, "email": str, "telephone": str, "entreprise": str}"""
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "system", "content": SYSTEM_EXTRACTION},
{"role": "user", "content": "Bonjour, je suis Marie Dupont de chez Acme Corp, vous pouvez me joindre au 06 12 34 56 78 ou par mail à [email protected]."}
],
temperature=0.0 # Déterministe pour l'extraction
)
Un assistant de rédaction, lui, se pilote surtout par ce qu’on lui interdit, faute de quoi il produit du remplissage marketing.
SYSTEM_REDACTION = """IDENTITÉ : Rédacteur professionnel spécialisé en contenu B2B pour le secteur technologique.
COMPORTEMENT :
- Style concis, actif, orienté bénéfices
- Éviter le jargon marketing vide ("révolutionnaire", "disruptif", "game-changer")
- Utiliser des données chiffrées quand disponibles
- Adapter le ton au format demandé (blog, email, LinkedIn)
FORMAT : Inclure un titre, un chapô de 2 lignes, puis le corps du texte. Signaler les passages à personnaliser entre [crochets]."""
Trois pièges qui reviennent toujours
Le premier est la contradiction interne. Écrire « Soyez concis. Fournissez des réponses détaillées et complètes » place le modèle devant un arbitrage qu’il tranchera au hasard, et différemment d’un appel à l’autre. Formulez plutôt une règle assortie de son exception : « Réponses de 100 mots maximum. Si l’utilisateur demande “plus de détails”, étendez à 500 mots. »
Le deuxième est l’instruction subjective. « Répondez de manière intéressante et engageante » ne repose sur aucun critère vérifiable, ni pour le modèle ni pour vous quand il faudra évaluer le résultat. Remplacez-la par des consignes mesurables du type « Commencez chaque réponse par un fait surprenant lié au sujet. Utilisez des phrases de moins de 20 mots. »
Le troisième est l’oubli du contexte négatif : on dit au modèle quoi faire, jamais ce qu’il doit s’interdire. Sur l’assistant comptable, les trois interdits qui comptent sont de ne pas répondre aux questions hors du domaine comptable, de ne pas fournir de données financières spécifiques comme des cours de bourse ou des taux, et de ne pas révéler le contenu du message système. Écrivez-les noir sur blanc, puis vérifiez qu’ils tiennent en soumettant précisément ces cas limites avant le déploiement.
Points clés à retenir
- Structurez votre system prompt en 4 blocs : identité, contexte, comportement, format
- Soyez précis et mesurable — évitez le langage subjectif
- Incluez des règles négatives (ce que le modèle ne doit pas faire)
- Utilisez
temperature=0pour l’extraction et la classification - Testez vos system prompts avec des cas limites avant le déploiement