Benchmark · coding

CRUXEval

0 résultats 0 modèles

CRUXEval (Code Reasoning, Understanding, and eXecution Evaluation) mesure la capacité d'un modèle à raisonner sur l'exécution de code à travers 800 courtes fonctions Python, via deux tâches — prédire une entrée produisant une sortie donnée, et prédire la sortie pour une entrée donnée — notées par la correction fonctionnelle pass@1.

En savoir plus
Exemple
Une fonction Python courte et autonome est présentée. En prédiction de sortie, le modèle reçoit une entrée précise et doit indiquer la valeur exacte que la fonction renvoie ; en prédiction d'entrée, on lui donne la sortie et il doit fournir n'importe quelle entrée qui la reproduit.
Notation
La métrique est pass@1 (pass@k est aussi rapporté via l'estimateur non biaisé standard) : le modèle génère une ou plusieurs réponses par problème, chacune est vérifiée en exécutant la fonction, et le score est la proportion des 800 problèmes résolus, séparément pour CRUXEval-I (entrée) et CRUXEval-O (sortie).
Vérification
Chaque prédiction est vérifiée par exécution, pas par correspondance de chaînes. Une réponse de sortie n'est acceptée que si elle égale la vraie valeur de retour de la fonction ; une réponse d'entrée n'est acceptée que si, passée à la fonction, elle produit effectivement la sortie cible, donc toute entrée valide convient, pas seulement l'originale.
Pourquoi c'est important
Prédire le comportement d'exécution sépare le raisonnement sur le code de son écriture — un modèle peut générer du code plausible sans suivre ce qu'il fait réellement. Les fonctions sont simples et autonomes, ce qui fait de CRUXEval une sonde propre de cette compétence, et les deux directions testent le raisonnement vers l'avant (sortie) et vers l'arrière (entrée).
Exemple résolu
Tâche
def f(nums): result = [] for n in nums: result.append(n * 2) return result assert f([1, 2, 3]) == ?? CRUXEval-O (prédiction de sortie) : remplacez ?? par la valeur que f renvoie.
Solution
[2, 4, 6]
Explication
La boucle double chaque élément de [1, 2, 3], produisant [2, 4, 6]. La notation exécute assert f([1, 2, 3]) == [2, 4, 6] et n'accepte la réponse que si cette assertion réussit.

Aucun score vérifié pour ce benchmark à ce jour.