Ingénierie de prompt
Mis à jour le 30 juillet 2026
Le pipeline d’évaluation est construit ; cette section s’en sert. L’ingénierie de prompt consiste à prendre un prompt existant et à l’améliorer pour obtenir des sorties plus fiables et de meilleure qualité — et le mot décisif est améliorer, au sens mesurable : chaque technique de cette section devra prouver sa valeur au score, sur le même fil rouge, du début à la fin.
Le processus itératif
Le cycle est clair : définir un objectif, écrire un prompt initial, l’évaluer, appliquer une technique d’ingénierie, puis ré-évaluer pour vérifier l’amélioration. Ce cycle se répète jusqu’à obtenir des résultats satisfaisants — et il protège dans les deux sens : une technique qui fait monter le score est adoptée, une technique qui le fait baisser est écartée, sans débat d’opinion.
Pour cette série de leçons, nous travaillons sur un exemple concret : créer un prompt qui génère des plans alimentaires d’une journée pour des athlètes, basés sur leur taille, poids, objectifs physiques et restrictions alimentaires — une tâche assez riche pour exercer toutes les techniques, assez délimitée pour être évaluée proprement.
Configurer le pipeline d’évaluation
L’évaluation utilise une version améliorée du pipeline des modules précédents, encapsulée dans une classe PromptEvaluator qui gère la génération de jeux de données et la notation par modèle :
evaluator = PromptEvaluator(max_concurrent_tasks=5)
La nouveauté est la concurrence : les cas de test s’exécutent en parallèle, ce qui accélère nettement chaque itération. Commencez avec une valeur basse (3) pour éviter les erreurs de limites de débit — vous l’augmenterez selon les quotas de votre compte Bedrock.
Générer les données de test
La méthode generate_dataset crée les cas de test. Spécifiez une description de la tâche, les entrées requises par le prompt, et le nombre de cas à générer :
dataset = evaluator.generate_dataset(
task_description="Écrire un plan alimentaire compact d'une journée pour un athlete",
prompt_inputs_spec={
"height": "Taille de l'athlete en cm",
"weight": "Poids de l'athlete en kg",
"goal": "Objectif de l'athlete",
"restrictions": "Restrictions alimentaires"
},
num_cases=3
)
Le prompt_inputs_spec mérite l’attention : chaque entrée du prompt y est décrite, et le générateur produira des combinaisons variées — tailles, objectifs et restrictions différents — pour que l’évaluation couvre la diversité des profils réels, pas un athlète unique.
Le prompt initial (baseline)
Commencez par un prompt simple et naïf pour établir une base de référence :
def run_prompt(prompt_inputs):
prompt = f"""
Que devrait manger cette personne ?
- Taille : {prompt_inputs["height"]}
- Poids : {prompt_inputs["weight"]}
- Objectif : {prompt_inputs["goal"]}
- Restrictions : {prompt_inputs["restrictions"]}
"""
messages = []
add_user_message(messages, prompt)
return chat(messages)
« Que devrait manger cette personne ? » — volontairement vague : ni format, ni exigences, ni niveau de détail. C’est la version que chaque technique des prochaines leçons viendra améliorer, mesure à l’appui.
Lancer l’évaluation
results = evaluator.run_evaluation(
run_prompt_function=run_prompt,
dataset_file="dataset.json",
extra_criteria="""
La sortie doit inclure :
- Total calorique journalier
- Repartition des macronutriments
- Repas avec aliments precis, portions et horaires
"""
)
Le paramètre extra_criteria est stratégique : il définit ce que « bon » signifie pour cette tâche, et l’évaluateur notera chaque sortie à l’aune de ces exigences. L’évaluation génère un fichier output.html avec les résultats détaillés — scores par cas, justifications, sorties complètes à relire. Un score initial bas (2,3/10) est normal : c’est votre point de départ pour itérer, pas un verdict.
Avec cette base établie, vous pouvez maintenant appliquer systématiquement les techniques d’ingénierie de prompt qui suivent — clarté, spécificité, structure XML, exemples — et regarder le score raconter leurs effets.
Points clés à retenir
- L’ingénierie de prompt est itérative et mesurée : chaque technique se valide (ou s’écarte) au score
- Fil rouge de la section : le plan alimentaire pour athlètes, évalué du début à la fin
PromptEvaluatorparallélise les cas de test — concurrence basse au départ (limites de débit)extra_criteriadéfinit opérationnellement ce que « bon » signifie pour votre tâche- Baseline volontairement naïve à 2,3/10 : le point de comparaison de toutes les leçons suivantes