Notation par modele
Les evaluateurs fournissent des signaux objectifs sur la qualite des sorties. Un evaluateur prend la sortie du modele et renvoie un retour mesurable, generalement un nombre entre 1 et 10.
Types d’evaluateurs
Trois approches principales pour noter les sorties :
| Type | Principe | Ideal pour |
|---|---|---|
| Evaluateur code | Logique programmatique personnalisee | Longueur, mots-cles, validation syntaxique |
| Evaluateur modele | Un autre modele IA evalue la qualite | Qualite, respect des instructions, completude |
| Evaluateur humain | Revue manuelle par des personnes | Qualite generale, profondeur, pertinence |
Definir les criteres d’evaluation
Avant d’implementer un evaluateur, definissez des criteres clairs. Pour un prompt de generation de code :
- Format : renvoyer uniquement du Python, JSON ou Regex sans explication
- Syntaxe valide : le code produit doit avoir une syntaxe correcte
- Respect de la tache : la reponse doit traiter directement la tache de l’utilisateur
Les deux premiers criteres conviennent aux evaluateurs code. Le troisieme est mieux adapte aux evaluateurs modele grace a leur flexibilite.
Implementer un evaluateur modele
def grade_by_model(test_case, output):
eval_prompt = """
Vous etes un expert en revue de code. Evaluez cette solution generee par l'IA.
Tache : {task}
Solution : {solution}
Fournissez votre evaluation sous forme d'objet JSON structure avec :
- "strengths" : tableau de 1 a 3 points forts
- "weaknesses" : tableau de 1 a 3 points a ameliorer
- "reasoning" : explication concise de votre evaluation
- "score" : un nombre entre 1 et 10
"""
messages = []
add_user_message(messages, eval_prompt)
add_assistant_message(messages, "```json")
eval_text = chat(messages, stop_sequences=["```"])
return json.loads(eval_text)
Point cle : demandez des forces, faiblesses et un raisonnement en plus du score. Sans ce contexte, les modeles tendent a donner des scores mediocres autour de 6.
Integrer l’evaluateur
def run_test_case(test_case):
output = run_prompt(test_case)
model_grade = grade_by_model(test_case, output)
score = model_grade["score"]
reasoning = model_grade["reasoning"]
return {
"output": output,
"test_case": test_case,
"score": score,
"reasoning": reasoning
}
Calculer le score moyen
from statistics import mean
def run_eval(dataset):
results = []
for test_case in dataset:
result = run_test_case(test_case)
results.append(result)
average_score = mean([result["score"] for result in results])
print(f"Score moyen : {average_score}")
return results
Ce score moyen est votre metrique concrete et objective pour suivre la performance des prompts au fil du temps.