Aller au contenu principal

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 :

TypePrincipeIdeal pour
Evaluateur codeLogique programmatique personnaliseeLongueur, mots-cles, validation syntaxique
Evaluateur modeleUn autre modele IA evalue la qualiteQualite, respect des instructions, completude
Evaluateur humainRevue manuelle par des personnesQualite 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.