Aller au contenu principal

Evaluation par modele

Un evaluateur prend la sortie du modele et renvoie un retour mesurable, typiquement un score de 1 a 10.

Trois types d’evaluateurs

  • Evaluateurs par code : verification programmatique (longueur, syntaxe, mots interdits)
  • Evaluateurs par modele : un autre appel IA pour evaluer la qualite
  • Evaluateurs humains : revue manuelle (flexible mais lente et couteuse)

Criteres d’evaluation

Pour un prompt de generation de code, on pourrait evaluer :

  1. Format : la sortie ne contient que du Python, JSON ou Regex, sans explication
  2. Syntaxe valide : le code produit a une syntaxe correcte
  3. Suivi de la tache : la reponse correspond bien a la demande

Les deux premiers criteres conviennent aux evaluateurs par code, le troisieme aux evaluateurs par modele.

Implementation d’un evaluateur par modele

def grade_by_model(test_case, output):
    messages = []
    add_user_message(messages, eval_prompt)
    add_assistant_message(messages, "```json")
    eval_text = chat(messages, stop_sequences=["```"])
    return json.loads(eval_text)

Le prompt d’evaluation doit inclure : le role de l’evaluateur, la tache originale, la solution generee, et le format de sortie attendu. Demandez des forces, faiblesses et justifications en plus du score pour eviter les notes mediocres par defaut.

Integration dans le pipeline

def run_test_case(test_case):
    output = run_prompt(test_case)
    model_grade = grade_by_model(test_case, output)
    return {
        "output": output,
        "test_case": test_case,
        "score": model_grade["score"],
        "reasoning": model_grade["reasoning"]
    }

Calculez ensuite la moyenne des scores pour obtenir une metrique objective de la performance de votre prompt.