Workflow typique d'évaluation
Sur cette page
Sans évaluation, améliorer un prompt relève de l’impression : on modifie une phrase, on relit une réponse, on trouve que « ça a l’air mieux ». On n’a testé qu’un cas, souvent celui qui posait problème, sans savoir si les autres se sont dégradés. Cette leçon déroule le workflow type d’une évaluation, en cinq étapes, sur un petit exemple chiffré.
Les cinq étapes
- Rédiger un premier prompt, qui servira de référence.
- Constituer un jeu d’évaluation : des entrées représentatives de ce que le prompt recevra. Trois dans l’exemple ; des dizaines, des centaines ou des milliers en pratique, écrites à la main ou générées par Claude (leçon suivante).
- Faire passer chaque entrée par Claude, après l’avoir insérée dans le prompt.
- Noter chaque réponse avec un notateur qui voit la question et la réponse, ici sur une échelle de 1 à 10.
- Modifier le prompt et recommencer, sur le même jeu, avec le même notateur.
Le cours officiel l’illustre avec la consigne « Please answer the user’s question » et trois questions : combien font 2 + 2, comment faire du porridge, à quelle distance est la Lune. Le notateur donne 10, 4 et 9, soit une moyenne de 7,67 ; en ajoutant « réponds avec force détails », la moyenne monte à 8,7. Nous refaisons la démarche en français.
L’exemple pas à pas
Le prompt et le jeu de test
from anthropic import Anthropic
client = Anthropic()
model = "claude-sonnet-5-5"
PROMPT_V1 = "Tu es un assistant pédagogique. Réponds aux questions de façon claire et concise."
dataset = [
{"question": "Combien font 15 % de 200 ?", "domain": "mathématiques"},
{"question": "À quelle température faire lever une pâte à pain ?", "domain": "cuisine"},
{"question": "Quelle est la planète la plus proche du Soleil ?", "domain": "astronomie"},
]
Chaque cas porte sa question et son domaine, qui permettra de lire les résultats par catégorie.
Faire passer chaque question
def run_prompt(question, system):
message = client.messages.create(
model=model,
max_tokens=4096,
system=system,
messages=[{"role": "user", "content": question}],
)
return "".join(block.text for block in message.content if block.type == "text")
reponses_v1 = [run_prompt(cas["question"], PROMPT_V1) for cas in dataset]
Noter, puis modifier et recommencer
Pour l’instant, la note est donnée à la main ; les leçons 20 et 21 l’automatisent.
scores_v1 = [8, 7, 7] # mathématiques, cuisine, astronomie
moyenne_v1 = sum(scores_v1) / len(scores_v1)
print(f"Score moyen V1 : {moyenne_v1:.2f}") # 7.33
PROMPT_V2 = """Tu es un assistant pédagogique expert.
Pour chaque question :
- donne d'abord la réponse directe ;
- puis une explication courte, deux ou trois phrases au plus ;
- pour un calcul, montre les étapes."""
reponses_v2 = [run_prompt(cas["question"], PROMPT_V2) for cas in dataset]
scores_v2 = [10, 8, 8]
moyenne_v2 = sum(scores_v2) / len(scores_v2)
print(f"Score moyen V2 : {moyenne_v2:.2f}") # 8.67
print(f"Amélioration : {moyenne_v2 - moyenne_v1:+.2f}") # +1.33
Lire au-delà de la moyenne
La moyenne cache toujours quelque chose. Un prompt qui passe de 6 à 7 peut avoir gagné trois points sur une catégorie et perdu un point sur deux autres : une régression déguisée en progrès. C’est pourquoi chaque cas porte un domaine.
for cas, s1, s2 in zip(dataset, scores_v1, scores_v2):
print(f"{cas['domain']:15s} | V1 : {s1} | V2 : {s2} | écart : {s2 - s1:+d}")
mathématiques | V1 : 8 | V2 : 10 | écart : +2
cuisine | V1 : 7 | V2 : 8 | écart : +1
astronomie | V1 : 7 | V2 : 8 | écart : +1
Le gain est plus fort en mathématiques, grâce à « montre les étapes » : c’est ce qui guide l’itération suivante. Le score ne mesure pas la qualité d’un prompt dans l’absolu, il mesure son comportement sur ce jeu de test ; jeu et notateur doivent donc rester constants d’une version à l’autre, seul le prompt change.
Les limites de l’exemple
Trois cas notés à la main suffisent à montrer la mécanique, pas à décider. Une évaluation fiable demande :
- des dizaines de cas au moins, qui ressemblent aux vraies entrées, cas limites compris ;
- une notation automatisée, par du code ou par un modèle, pour passer à l’échelle ;
- plusieurs exécutions par cas : la même requête ne donne pas toujours la même réponse, et l’on ne peut plus fixer
temperatureà 0 ; on compare des moyennes et leur dispersion.
Les leçons suivantes traitent exactement ces points.
À vous de jouer
Votre première évaluation. Reprenez ce code avec trois questions de votre domaine, notez les réponses V1 à la main, écrivez une V2 qui corrige le défaut le plus visible, et notez de nouveau. Tenez le tableau par question.
Mesurer le bruit. Faites passer trois fois la V1 sur la même question et notez les trois réponses. L’écart entre elles est-il plus petit que l’écart entre V1 et V2 ? Si non, votre comparaison ne prouve rien encore.
Sources officielles : A typical eval workflow (Claude Academy) · Define success criteria and build evaluations (documentation Claude)
Points clés à retenir
- Cinq étapes : prompt, jeu d’évaluation, passage par Claude, notation, modification et nouvelle mesure.
- Jeu de test et notateur restent constants ; seul le prompt change.
- La moyenne se lit par catégorie : une régression peut se cacher derrière un progrès.
- Plusieurs exécutions par cas, et des dizaines de cas, avant de conclure.