Aller au contenu principal

Exécuter l'évaluation

Mis à jour le 30 juillet 2026

Le jeu de données est prêt ; il est temps de construire le pipeline d’évaluation lui-même. Le processus : prendre chaque cas de test, le fusionner avec le prompt, l’envoyer à Claude, puis noter les résultats. Trois petites fonctions suffisent, chacune avec une responsabilité nette — et cette architecture en couches nous servira jusqu’à la fin de la section.

Les trois fonctions du pipeline

run_prompt : exécution d’un prompt

Cette fonction prend un cas de test et le fusionne avec le modèle de prompt :

def run_prompt(test_case):
    """Fusionne le prompt et l'entrée du cas de test, puis renvoie le résultat"""
    prompt = f"""
Veuillez resoudre la tache suivante :

{test_case["task"]}
"""

    messages = []
    add_user_message(messages, prompt)
    output = chat(messages)
    return output

C’est la seule fonction qui connaisse le contenu du prompt — si vous voulez tester une nouvelle version, c’est ici et seulement ici qu’on la modifie. Le prompt est volontairement minimaliste pour l’instant : sans instructions de formatage, Claude renverra probablement des sorties plus verbeuses que nécessaire — et c’est très bien ainsi, puisque le but est justement de mesurer ce point de départ avant de l’améliorer.

run_test_case : orchestration d’un cas

Cette fonction orchestre l’exécution d’un seul cas de test et la notation du résultat :

def run_test_case(test_case):
    """Appelle run_prompt, puis note le résultat"""
    output = run_prompt(test_case)

    # TODO - Notation
    score = 10

    return {
        "output": output,
        "test_case": test_case,
        "score": score
    }

Le score est fixé à 10 pour l’instant — un bouchon assumé : la logique de notation sera développée dans les leçons suivantes, et l’architecture lui réserve déjà sa place. Remarquez la valeur de retour : un enregistrement complet qui conserve l’entrée, la sortie et le score ensemble — c’est ce format qui rendra les rapports d’évaluation exploitables.

run_eval : orchestrateur principal

Cette fonction traite l’ensemble du jeu de données :

def run_eval(dataset):
    """Charge le jeu de données et appelle run_test_case pour chaque cas"""
    results = []

    for test_case in dataset:
        result = run_test_case(test_case)
        results.append(result)

    return results

Une boucle sans mystère — et c’est sa qualité : chaque étage du pipeline reste simple parce qu’il ne fait qu’une chose. Prompt, cas, jeu de données : trois niveaux, trois fonctions.

Lancer l’évaluation

with open("dataset.json", "r") as f:
    dataset = json.load(f)

results = run_eval(dataset)
print(json.dumps(results, indent=2))

La première exécution prend du temps : même avec Claude Haiku, traiter un jeu de données complet peut nécessiter 30 secondes ou plus — chaque cas de test est un appel API séquentiel. Gardez ce coût en tête : il explique pourquoi on choisit souvent un modèle rapide pour les évaluations, et pourquoi les jeux de données de développement restent de taille raisonnable.

Ce que nous avons accompli

À ce stade, le pipeline de base fonctionne de bout en bout :

  • Prendre des cas de test du jeu de données
  • Les fusionner avec des modèles de prompts
  • Obtenir des réponses de Claude
  • Collecter et organiser tous les résultats

La pièce manquante est la notation intelligente — ce score = 10 provisoire qui ne mesure encore rien. C’est là que la sophistication des systèmes d’évaluation entre en jeu : les prochaines leçons construisent les évaluateurs, par modèle puis par code.

Points clés à retenir

  • Trois fonctions, trois responsabilités : run_prompt (le prompt), run_test_case (un cas), run_eval (le jeu complet)
  • Le prompt de départ est volontairement minimal : on mesure la base avant de l’améliorer
  • Chaque résultat conserve entrée + sortie + score — le format des futurs rapports
  • Une évaluation coûte du temps et des appels API : modèle rapide et jeu de données raisonnable en développement
  • Le score fixe est un bouchon : la notation réelle arrive dans les prochaines leçons