Le prompt système qui pilote ton agent est aussi critique qu'une fonction métier. Pourtant il finit souvent en littérale dans un contrôleur, modifié à la main en prod, sans historique. Le jour où le comportement régresse, personne ne sait quel prompt tournait.

Naïf vs versionné

AspectString hardcodéePrompt versionné
HistoriqueAucunGit ou table dédiée
RollbackImpossibleTrivial
A/B testNonPar version
Lien réponse→promptPerduID de version loggé
Revue de changementAucunePR / diff
Le coût du versionnement est marginal, le coût de son absence se paie un soir d'incident.

Le minimum viable

  • Les prompts vivent dans des fichiers (prompts/extract_invoice.v3.txt) ou une table prompt(version, body, created_at), jamais en string inline.
  • Chaque appel LLM logge la version de prompt utilisée (cf. Logger un LLM sans dépendance). Sans ça, impossible de corréler une régression à un changement.
  • Changer un prompt = une PR avec diff lisible, pas un hotfix SSH.
  • Garder l'ancienne version active jusqu'à validation de la nouvelle (déploiement progressif).

Le piège du « petit changement »

« J'ai juste reformulé une phrase » est la cause n°1 de régression silencieuse en IA. Un mot changé dans un prompt peut faire chuter un taux d'extraction de 97 % à 80 % sans aucune erreur technique. Le versionnement + les évals (lancées à chaque changement de version) sont le seul filet réel.