Aller au contenu principal

Evaluation par code

L’evaluation par code verifie que le code genere par l’IA a une syntaxe valide et respecte le format attendu.

Fonctions de validation syntaxique

def validate_json(text):
    try:
        json.loads(text.strip())
        return 10
    except json.JSONDecodeError:
        return 0

def validate_python(text):
    try:
        ast.parse(text.strip())
        return 10
    except SyntaxError:
        return 0

def validate_regex(text):
    try:
        re.compile(text.strip())
        return 10
    except re.error:
        return 0

Chaque fonction tente de parser le texte dans le format correspondant. Succes = 10, echec = 0.

Format du jeu de donnees

Les cas de test doivent specifier le format attendu :

{
    "task": "Creer une fonction Python pour valider un username IAM AWS",
    "format": "python"
}

Ameliorer le prompt

Ajoutez des instructions claires sur le format :

* Reponds uniquement avec du Python, du JSON ou une Regex
* N'ajoute aucun commentaire ni explication

Utilisez aussi le pre-remplissage :

add_assistant_message(messages, "```code")

Combiner les scores

model_score = grade_by_model(test_case, output)["score"]
syntax_score = grade_syntax(output, test_case)

score = (model_score + syntax_score) / 2

Cette moyenne donne un poids egal a la qualite du contenu et a la correction technique. Ajustez les poids selon vos priorites.