Que fait Améliorateur de prompt automatique et à état persistant ?
POINTS DE DÉCISION
ÉVALUATION DU PROMPT :
├── Question/commande simple (quoi, quand, comment)
│ └── Ignorer l'optimisation → Répondre directement
├── Tâche complexe (multi-étapes, raisonnement, technique)
│ ├── Budget token < 1000
│ │ └── APE : 3-5 itérations
│ ├── Budget token 1000-5000
│ │ └── OPRO : 5-10 itérations
│ └── Budget token > 5000
│ └── Compilation DSPy : 10-20 itérations
└── Modèle réutilisable / prompt système
└── Optimisation complète avec récupération historique
SÉLECTION DE LA TECHNIQUE D'OPTIMISATION :
├── Réécriture d'instructions nécessaire
│ └── Utiliser APE (Automatic Prompt Engineer)
├── Réglage de paramètres avec contraintes
│ └── Utiliser OPRO (Optimization by PROmpting)
├── Pipeline complexe avec plusieurs modules
│ └── Utiliser les modèles de compilation DSPy
└── Domaine inconnu / exploratoire
└── Cascade hybride APE → OPRO → DSPy
CONTRÔLE DES ITÉRATIONS :
├── Amélioration < 1% pendant 3 tours → ARRÊT
├── Score de qualité > 0.95 → ARRÊT
├── Nombre maximal d'itérations atteint → ARRÊT
├── Satisfaction utilisateur confirmée → ARRÊT
└── Continuer → Itération suivante
INTÉGRATION DU RETOUR :
├── Tâche réussie (utilisateur confirme / métriques bonnes)
│ └── Enregistrer retour positif + embed pour récupération
├── Tâche échouée / mauvaise qualité
│ └── Enregistrer retour négatif + analyser le mode d'échec
└── Résultat peu clair
└── Demander un retour explicite à l'utilisateur avant l'enregistrement
MODES D'ÉCHEC
Spirale de sur-optimisation
- SYMPTÔME : Le prompt atteint 500+ tokens avec de nombreuses contraintes imbriquées
- DIAGNOSTIC : Recherche de rendements décroissants au lieu de s'arrêter au "suffisant"
- SOLUTION : Appliquer la règle des 80/20 - si l'amélioration tombe en dessous de 5% par itération, arrêter
Obsession du modèle
- SYMPTÔME : Passer des itérations sur la mise en forme / structure plutôt que sur la clarté de la tâche
- DIAGNOSTIC : Confondre présentation et performance
- SOLUTION : Mesurer le succès réel de la tâche, pas la conformité au modèle
Surapprentissage historique
- SYMPTÔME : Le prompt optimisé fonctionne sur des exemples passés mais échoue sur de nouvelles entrées
- DIAGNOSTIC : Entraînement sur un ensemble de données trop restreint issu de la récupération
- SOLUTION : Inclure des exemples diversifiés dans l'optimisation, tester sur des cas non vus
Mauvais jugement des capacités
- SYMPTÔME : Ajout d'échafaudages importants pour des tâches que le modèle gère nativement
- DIAGNOSTIC : Supposer des limitations du modèle sans les tester
- SOLUTION : Tester la capacité de base avant un prompt lourd
Aveuglement aux mesures
- SYMPTÔME : Plusieurs itérations sans métriques de succès claires
- DIAGNOSTIC : Optimiser sans savoir ce que signifie "mieux"
- SOLUTION : Définir des critères de succès mesurables dès la première étape
EXEMPLES TRAITÉS
Exemple 1 : Demande d'optimisation de code
Original : "Améliore ce code"
def process_data(data):
results = []
for item in data:
if item > 0:
results.append(item * 2)
return results
Navigation des points de décision :
- Évaluation : Tâche complexe (nécessite analyse de code) → Déclencher optimisation
- Sélection de technique : Revue de code + amélioration → APE avec 5 itérations
- Contexte récupéré : Instructions similaires d'optimisation de code dans l'historique
- Prompt optimisé : "Analyse cette fonction Python pour la performance, la lisibilité et les motifs pythoniques. Identifie les améliorations spécifiques : complexité algorithmique, utilisation mémoire, cas limites, et style. Fournis le code refactoré avec explications."
Ce que le novice manque : "Améliore ce code" vague ne spécifie pas de critères Ce que l'expert repère : Nécessité de dimensions explicites (performance, style, cas limites)
Résultat : Analyse claire de l'opportunité de liste en compréhension, gestion des cas limites, indications de type
Exemple 2 : Modèle de tâche de raisonnement
Original : "Aide-moi à réfléchir à cette décision"
Navigation des points de décision :
- Évaluation : Modèle réutilisable + tâche de raisonnement → Optimisation complète
- Récupération historique : Instructions de cadre décisionnel trouvées (similarité 0.87)
- Sélection de technique : Compilation DSPy (pipeline de raisonnement structuré)
- Stratégie d'itération : 10 tours, mesurant la qualité de la décision
Modèle optimisé :
Cadre d'analyse de décision :
1. SITUATION : Énoncer clairement la décision avec ses contraintes
2. PARTIES PRENANTES : Lister les parties affectées et leurs intérêts
3. OPTIONS : Générer 3 à 5 alternatives distinctes
4. CRITÈRES : Définir les métriques de succès et leur pondération
5. ARBITRAGES : Analyser chaque option par rapport aux critères
6. RECOMMANDATION : Sélectionner la meilleure option avec niveau de confiance
Portes qualité appliquées : Complétude du modèle, score de réutilisabilité, satisfaction utilisateur
Exemple 3 : Demande technique ambiguë
Original : "Mets en place la surveillance"
Navigation des points de décision :
- Évaluation : Sous-spécifié + technique → Déclencher optimisation
- Stratégie de clarification : OPRO avec élicitation de contraintes
- Contexte domaine : Modèles de configuration de surveillance récupérés
Prompt optimisé : "Conçois une configuration de surveillance en spécifiant : (1) Périmètre de l'infrastructure (serveurs, conteneurs, applications), (2) Métriques clés (performance, disponibilité, business), (3) Seuils d'alerte et escalade, (4) Contraintes de stack technologique, (5) Limites de budget / complexité. Fournis une feuille de route de mise en œuvre avec priorités."
Avant / Après - Arbitrages :
- Avant : Allers-retours de clarification sans fin
- Après : Recueil structuré des exigences en un seul échange
- Coût : Prompt initial plus long
- Bénéfice : Spécification complète en un tour
PORTES QUALITÉ
Liste de vérification avant exécution de l'optimisation :
- Score de complexité de la tâche > 3 (multi-étapes / raisonnement requis)
- Critères de succès clairs définis ou dérivables
- Budget token estimé et technique sélectionnée
- Contexte du domaine identifié pour la récupération
- Limite d'itération fixée en fonction de la complexité
Validation post-optimisation :
- Le prompt optimisé est spécifique et actionnable
- Les métriques de succès sont mesurables
- Cohérence des contraintes vérifiée (pas de contradictions)
- Efficacité token : l'amélioration justifie la longueur ajoutée
- Contexte historique intégré de manière appropriée
- Confirmation utilisateur obtenue pour les changements majeurs
Grille de notation qualité (0-100) :
- Clarté : Un utilisateur naïf peut-il comprendre les exigences ? (25 pts)
- Spécificité : Instructions concrètes vs abstraites ? (25 pts)
- Complétude : Couvre les cas limites et les contraintes ? (25 pts)
- Efficacité : Atteint les objectifs sans gonflement ? (25 pts)
LIMITES À NE PAS FRANCHIR
N'utilise PAS cette compétence pour :
- Questions factuelles simples → Répondre directement avec des connaissances
- Opérations fichier sans raisonnement → Utiliser la compétence de gestion de fichiers
- Exécution directe de commandes → Exécuter immédiatement
- Réponses conversationnelles → Répondre naturellement
- Prompts déjà optimisés → Vérifier d'abord l'historique pour éviter une ré-optimisation
- L'utilisateur dit explicitement "n'optimise pas" → Respecter la préférence utilisateur
Déléguer à la place :
- Pour les problèmes mathématiques → Utiliser les compétences axées sur le calcul
- Pour l'écriture créative → Utiliser la compétence d'écriture créative (sauf création de modèle)
- Pour l'analyse de données → Utiliser la compétence d'analyse de données (sauf raisonnement complexe nécessaire)
- Pour le débogage → Utiliser la compétence de débogage (sauf amélioration systématique nécessaire)
Zones grises nécessitant un jugement :
- Tâches de complexité moyenne (score 2-4) → Tester d'abord la performance de base
- Demandes d'expertise domaine → Optimiser uniquement si potentiel de modèle réutilisable
- Questions de suivi → Optimiser si l'expansion du périmètre est significative