L’optimisation de prompts est le processus d’amélioration d’un prompt par rapport à un objectif défini : de meilleures réponses, moins de tokens, une latence plus faible ou un format plus cohérent. Ce qui la distingue du bricolage, c’est la mesure. Vous décidez de ce que « mieux » veut dire, vous changez une chose et vous vérifiez.
Décidez ce que vous optimisez
Un prompt peut être optimisé selon plusieurs axes, qui tirent dans des sens opposés.
| Objectif | Mesuré par | Coûte souvent |
|---|---|---|
| Qualité | Taux de réussite sur un jeu de tests | Des tokens |
| Cohérence | Même entrée, même forme de sortie | De la flexibilité |
| Coût | Tokens d’entrée et de sortie par appel | Du contexte, des exemples |
| Latence | Temps jusqu’au premier et au dernier token | De la profondeur de raisonnement |
| Sécurité | Résistance à l’injection et aux fuites | Un peu d’utilité |
Choisissez un objectif principal et une limite pour les autres, par exemple « augmenter le taux de réussite sans dépasser 800 tokens d’entrée ».
La boucle d’optimisation
1. Corrigez d’abord les problèmes statiques
Certains défauts n’ont pas besoin de modèle pour être trouvés : pas d’objectif, mots vagues, tailles sans chiffres, instructions contradictoires, pas de format de sortie, phrases répétées, variables non délimitées. Éliminez-les avant de dépenser des appels de modèle. L’analyseur de prompts PromptFlowEngine les liste, chacun avec une correction suggérée.
2. Constituez un jeu de tests
Réunissez de 20 à 50 entrées représentatives de l’usage réel. Incluez :
- Les cas typiques.
- Les cas limites : vides, très longs, multilingues, mal formés.
- Les cas adverses : du texte qui cherche à modifier les instructions.
- Les échecs passés. Chaque bogue devient un test.
Pour chaque entrée, notez ce qu’une sortie correcte doit contenir ou satisfaire.
3. Établissez une référence
Exécutez le prompt actuel sur chaque entrée et consignez les résultats. Ce chiffre sert de comparaison à chaque changement. Sans lui, vous ne distinguez pas une amélioration du bruit.
4. Lisez les échecs
Regroupez-les. Dix échecs ont généralement deux ou trois causes. Cherchez le motif : sont-ce toujours les entrées longues, toujours une catégorie, toujours le même champ manquant ?
5. Formulez une hypothèse et faites un changement
« Le modèle ajoute des commentaires parce que le prompt ne dit pas de renvoyer uniquement du JSON. » Faites ce changement et rien d’autre.
6. Relancez tout le jeu
Vérifiez que les échecs sont corrigés et, tout aussi important, que rien de ce qui passait avant n’échoue maintenant. Une correction pour un cas qui en casse deux autres est une régression.
7. Gardez ou annulez, puis recommencez
Consignez ce que vous avez changé et pourquoi. Voir la gestion des prompts pour le versionnement.
Gestes de raffinement qui fonctionnent généralement
| Symptôme | Raffinement |
|---|---|
| La sortie varie en longueur | Remplacez les mots de taille par des nombres |
| La sortie varie en forme | Ajoutez un format explicite ou un schéma |
| Ignore une règle | Sortez-la d’un paragraphe vers une liste ; supprimez les conflits |
| Trop générique | Ajoutez le contexte de public et de domaine |
| Faux sur les cas limites | Ajoutez une règle ou un exemple pour ce cas |
| Invente des faits | Fournissez des sources et exigez « non indiqué » en leur absence |
| Verbeux | Donnez une limite de mots et dites quoi omettre |
Gestes de raffinement qui ne fonctionnent généralement pas
- Ajouter de l’emphase (majuscules, « très important ») à chaque ligne.
- Répéter la même instruction à plusieurs endroits.
- Ajouter une nouvelle règle de cas particulier pour chaque échec sans vérifier les conflits.
- Changer la formulation de quelque chose qui n’était pas la cause.
Optimiser les tokens
Une fois la qualité acceptable, réduisez le coût sans changer le comportement :
- Retirez salutations, politesse et remplissage.
- Supprimez les phrases répétées et quasi répétées.
- Coupez le contexte qui ne change aucune réponse du jeu de tests.
- Réduisez le nombre d’exemples et retestez.
- Placez d’abord la partie stable du prompt pour que le cache du fournisseur s’applique.
Les étapes 1 et 2 sont mécaniques et peuvent être automatisées sans risque. L’optimiseur de prompts PromptFlowEngine les réalise puis vérifie que chaque phrase d’origine, chaque exigence et chaque segment protégé est toujours présent, de sorte que le prompt plus court demande exactement ce que demandait le plus long. Détails dans l’optimisation des tokens.
Optimisation automatisée
Il existe des outils qui cherchent automatiquement de meilleurs prompts, en faisant proposer des variantes par un modèle et en les notant sur votre jeu de tests. Ils peuvent trouver des améliorations que les humains manquent. Ils ont besoin de trois choses pour fonctionner : un bon jeu de tests, une fonction de notation fiable et une relecture du prompt gagnant, car un optimiseur exploitera toute faiblesse de la métrique.
Une mise en garde voisine vaut pour demander à un modèle de chat d’« améliorer ce prompt ». Il produira quelque chose qui se lit mieux. Il peut aussi omettre une contrainte ou ajouter une hypothèse. Comparez le résultat à l’original et confirmez que chaque exigence a survécu.
Quand s’arrêter
Arrêtez-vous lorsque le prompt atteint l’objectif sur le jeu de tests et que d’autres changements font bouger les résultats dans le bruit. Au-delà, les gains viendront d’un meilleur contexte, d’une autre technique comme l’enchaînement de prompts ou d’un autre modèle.
Ce qu’un score à base de règles peut et ne peut pas vous dire
Un score de qualité statique, comme celui de l’évaluation de prompts, mesure le prompt tel qu’il est écrit : clarté, exhaustivité, cohérence et sécurité. Il est rapide et reproductible, il convient donc à chaque modification et à chaque commit. Il ne mesure pas ce qu’un modèle fait du prompt. Utilisez-le pour garder le prompt sain, et un jeu de tests pour confirmer la sortie. Les deux sont traités dans le test et l’évaluation de prompts.