Écrire un prompt système qui tient six mois
PromptProductionMéthodeÉvaluation2024-01-168 min
Un prompt système bricolé tient trois semaines. Ce qui le fait tenir six mois n'est pas son écriture : c'est ce qu'on met autour.
Un prompt système est du code
Il détermine le comportement du système, il a des effets de bord, il casse quand on le modifie sans mesurer. Toutes les propriétés du code.
Pourtant il vit trop souvent dans un champ de configuration, sans historique, modifié directement en production par la dernière personne qui a eu une idée. C'est la principale cause de régression silencieuse que j'observe.

Les cinq règles que j'applique
- Il vit dans le dépôt, versionné avec le reste. Toute modification passe par une revue, comme une ligne de code.
- Une seule modification à la fois, mesurée sur le jeu de tests avant d'être conservée.
- Il énonce ce qu'il ne faut pas faire, explicitement : ne pas inventer de référence, ne pas répondre hors du corpus fourni, dire quand l'information manque.
- Il ne contient aucune donnée métier susceptible de changer : les seuils, les listes et les dates vont dans le contexte, pas dans le prompt.
- Il est court. Un prompt de trois pages est un aveu : on y a empilé des correctifs au lieu de traiter la cause.
L'erreur qui coûte le plus cher
Corriger un cas particulier en ajoutant une instruction au prompt système.
Le cas particulier est réglé, et deux cas généraux se dégradent, sans que personne ne le voie, parce que la vérification s'est arrêtée au cas qu'on voulait corriger. Répété dix fois sur six mois, ce mécanisme produit un prompt illisible dont plus personne n'ose retirer une ligne.
La bonne réponse à un cas particulier est presque toujours ailleurs : dans le découpage du corpus, dans la récupération, ou dans l'acceptation que ce cas relève de l'humain.
Le réglage qui rapporte le plus
Autoriser explicitement le système à ne pas répondre. Une phrase dans le prompt système, et les erreurs graves chutent. Les utilisateurs, eux, font davantage confiance à un système qui sait dire qu'il ne sait pas.
Ce qui le fait survivre à un changement de modèle
Un prompt écrit pour exploiter les particularités d'un modèle donné ne survit pas au suivant. Un prompt qui énonce des règles métier claires et un format de sortie strict s'y transpose presque sans retouche.
C'est la différence entre optimiser et spécifier. La première approche gagne quelques points sur le moment ; la seconde évite de tout refaire deux fois par an. Le sujet est développé dans migrer un agent sans régression.
Ce que le cache de contexte impose à la structure
Tout ce qui est stable doit être placé avant tout ce qui varie, sans exception, sous peine de payer plein tarif à chaque requête. Cette contrainte technique produit accessoirement un prompt mieux rangé.
Un seul élément variable en tête, la date du jour, le nom de l'utilisateur, un identifiant de session, casse le préfixe et annule toute réutilisation.
L'ordre qui fonctionne : consigne, règles, description des outils, exemples, puis seulement les extraits récupérés, l'historique et la question. Le mécanisme et son économie sont détaillés dans le contexte répété ne se paie qu'une fois.
Les règles à retirer, et comment le décider
Un prompt hérité contient des règles ajoutées après incident dont plus personne ne connaît la raison, et certaines se contredisent. Les retirer demande une mesure, pas une opinion.
La méthode : retirer une règle, relancer le jeu de tests, comparer le taux d'erreur. Si rien ne bouge, le retrait est acquis.
Le cas le plus fréquent est la contradiction, une règle demande de toujours citer la source, une autre ajoutée six mois plus tard demande d'être concis. Le modèle arbitre comme il peut, de façon instable. Le protocole complet figure dans construire un jeu de tests en une journée.
La règle qui masque un défaut ailleurs
« Si tu ne trouves pas l'information, cherche dans les documents connexes » est une instruction qui compense un problème de récupération et produit des réponses fondées sur des sources non pertinentes. C'est le motif le plus dommageable que je rencontre.
Ce type de règle apparaît toujours après un incident où le système n'avait pas trouvé. Elle traite le symptôme et aggrave la situation : le système répond désormais, mais mal, ce qui est pire qu'un refus.
La correction est en amont, dans la chaîne de récupération. Le diagnostic à mener figure dans reprendre un système d'IA construit par quelqu'un d'autre.
Questions fréquentes
- Qu'est-ce qui fait tenir un prompt dans le temps ?
Le jeu de tests qui l'entoure, pas son écriture. Sans mesure, chaque modification est un pari et le prompt grossit par accumulation de règles que personne n'ose retirer.
- Dans quel ordre écrire un prompt système ?
Le stable avant le variable : consigne, règles, outils, exemples, puis extraits, historique et question. Cet ordre permet la mise en cache du préfixe et rend le prompt lisible.
- Comment savoir si une règle peut être retirée ?
En la retirant et en relançant le jeu de tests. Si le taux d'erreur ne bouge pas, elle ne servait pas. Sans jeu de tests, la prudence conduit à ne jamais rien retirer.
- Quelle formulation faut-il éviter ?
Celles qui compensent un défaut amont, comme « cherche dans les documents connexes si tu ne trouves pas ». Elles transforment un refus légitime en réponse fondée sur une source non pertinente.
Le format que je livre en fin de mission
Un prompt versionné, commenté règle par règle, avec la date et le motif de chaque ajout : c'est ce qui permet à la personne suivante de le modifier sans casser. Cela ressemble à du code, et c'en est.
Chaque règle porte trois informations en commentaire : la date, l'incident qui l'a produite, et le cas du jeu de tests qui la couvre. Une règle sans cas associé est signalée comme candidate au retrait.
Ce format a un effet inattendu sur la discipline de l'équipe : il devient gênant d'ajouter une règle sans ajouter le cas correspondant, ce qui suffit à empêcher l'accumulation. C'est le meilleur garde-fou que j'aie trouvé contre la croissance silencieuse d'un prompt, et il rejoint la logique de la dette technique d'un système d'IA.