Aller au contenu principal

Workflow typique d'evaluation

Les 5 etapes

Un pipeline d’evaluation suit toujours le meme schema :

  1. Rediger un prompt
  2. Creer un jeu de donnees de test
  3. Envoyer chaque cas de test a Claude
  4. Noter chaque reponse (score de 1 a 10)
  5. Modifier le prompt et recommencer

Voyons cela avec un exemple concret.

Exemple : evaluer un prompt de questions-reponses

Etape 1 : Le prompt

Imaginons un prompt simple pour un assistant qui repond a des questions de culture generale :

PROMPT_V1 = "Tu es un assistant pedagogique. Reponds aux questions de facon claire et concise."

Etape 2 : Le jeu de donnees

On cree un ensemble de questions couvrant differents domaines :

dataset = [
    {
        "question": "Combien font 15% de 200 ?",
        "expected": "30",
        "domain": "mathematiques"
    },
    {
        "question": "Quelle est la temperature ideale pour faire lever une pate a pain ?",
        "expected": "Entre 24 et 27 degres Celsius",
        "domain": "cuisine"
    },
    {
        "question": "Quelle est la plus grande etoile connue par son rayon ?",
        "expected": "UY Scuti ou Stephenson 2-18",
        "domain": "astronomie"
    }
]

Chaque cas contient : la question a poser, la reponse attendue (pour reference), et le domaine (pour analyser les forces/faiblesses).

Etape 3 : Envoyer a Claude

On fait tourner le prompt sur chaque question :

import anthropic

client = anthropic.Anthropic()

def run_prompt(question, system_prompt):
    response = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=300,
        system=system_prompt,
        messages=[{"role": "user", "content": question}]
    )
    return response.content[0].text
resultats = []
for cas in dataset:
    reponse = run_prompt(cas["question"], PROMPT_V1)
    resultats.append({
        "question": cas["question"],
        "expected": cas["expected"],
        "response": reponse,
        "domain": cas["domain"]
    })

Etape 4 : Noter les reponses

Pour l’instant, on utilise un notateur humain (on automatisera plus tard). On attribue un score de 1 a 10 :

# Notation manuelle pour l'exemple
scores_v1 = [8, 7, 7]  # math: 8, cuisine: 7, astronomie: 7

moyenne_v1 = sum(scores_v1) / len(scores_v1)
print(f"Score moyen V1 : {moyenne_v1:.2f}")
# -> Score moyen V1 : 7.33

Etape 5 : Modifier et comparer

On ameliore le prompt :

PROMPT_V2 = """Tu es un assistant pedagogique expert.
Pour chaque question :
- Donne d'abord la reponse directe
- Puis une explication courte (2-3 phrases max)
- Si c'est un calcul, montre les etapes"""

On relance l’evaluation :

resultats_v2 = []
for cas in dataset:
    reponse = run_prompt(cas["question"], PROMPT_V2)
    resultats_v2.append({
        "question": cas["question"],
        "expected": cas["expected"],
        "response": reponse,
        "domain": cas["domain"]
    })

# Notation V2
scores_v2 = [10, 8, 8]  # Amelioration sur les 3 domaines

moyenne_v2 = sum(scores_v2) / len(scores_v2)
print(f"Score moyen V2 : {moyenne_v2:.2f}")
# -> Score moyen V2 : 8.67

Comparer les versions

print(f"V1 : {moyenne_v1:.2f}")
print(f"V2 : {moyenne_v2:.2f}")
print(f"Amelioration : +{moyenne_v2 - moyenne_v1:.2f}")
V1 : 7.33
V2 : 8.67
Amelioration : +1.34

Le prompt V2 est objectivement meilleur sur ce jeu de test. Pas d’impression subjective, pas de “je trouve que ca semble mieux” — un chiffre mesurable.

L’analyse detaillee

Au-dela du score moyen, regardez les scores par domaine :

for i, cas in enumerate(dataset):
    print(f"{cas['domain']:15s} | V1: {scores_v1[i]} | V2: {scores_v2[i]} | Delta: {scores_v2[i] - scores_v1[i]:+d}")
mathematiques   | V1: 8 | V2: 10 | Delta: +2
cuisine         | V1: 7 | V2: 8  | Delta: +1
astronomie      | V1: 7 | V2: 8  | Delta: +1

L’amelioration est plus forte en maths (grace a l’instruction “montre les etapes”). Ce type d’analyse vous guide pour les iterations suivantes.

Les limites de cet exemple

Cet exemple a 3 cas de test est pedagogique, mais insuffisant en pratique. Pour une evaluation fiable :

  • Minimum 20-50 cas pour une evaluation significative
  • Notation automatisee (par modele AI) pour passer a l’echelle
  • Reproductibilite : temperature a 0 pour des resultats stables

Les prochaines lecons couvrent exactement ces points.

Resume du workflow

Prompt V1 → Dataset → Claude → Notation → Score 7.33

Prompt V2 → Dataset → Claude → Notation → Score 8.67 ✓

Prompt V3 → Dataset → Claude → Notation → Score ?

  ...jusqu'a satisfaction

Le jeu de donnees et le systeme de notation restent constants. Seul le prompt change. C’est ce qui rend la comparaison valide.