Benchmark · agentic
SWE-rebench
SWE-rebench est une variante continuellement actualisée du benchmark de programmation SWE-bench, qui tire ses tâches d'issues GitHub récentes afin de réduire le risque qu'un modèle les ait déjà vues pendant l'entraînement. Il indique le pourcentage de tâches d'ingénierie logicielle que le modèle résout (% resolved).
En savoir plus
- Exemple
- Un item typique fournit au modèle un vrai rapport de bug ou une demande de fonctionnalité issue d'un dépôt GitHub, et il doit modifier le code du projet pour résoudre ce problème.
- Notation
- La métrique est le % resolved : le nombre de tâches que le modèle corrige divisé par le nombre total de tâches, exprimé en pourcentage.
- Vérification
- Une solution est acceptée automatiquement lorsque la suite de tests du dépôt passe sur le code corrigé — le correctif doit faire passer au vert les tests qui échouaient sans casser les autres.
- Pourquoi c'est important
- Comme ses tâches sont renouvelées à partir d'issues récentes, il offre une mesure plus fiable de la véritable compétence en programmation, plus difficile à gonfler en mémorisant d'anciennes données de benchmark publiques.
Exemple résolu
Tâche
Instance SWE-rebench construite à partir d'un vrai dépôt Python de GitHub (
python-slugify), figé sur un commit de base. Problème : slugify('Hello, World!') renvoie 'hello--world' — des séparateurs consécutifs produisent un double trait d'union au lieu d'un seul, alors que le slug attendu est 'hello-world'. Livrable : un patch git-diff appliqué à l'instantané du dépôt qui fait passer le test FAIL_TO_PASS tout en gardant au vert tous les tests PASS_TO_PASS.Solution
--- a/slugify/slugify.py
+++ b/slugify/slugify.py
@@ def slugify(text):
text = re.sub(r"[^\w\s-]", "", text).strip().lower()
- return re.sub(r"[\s]+", "-", text)
+ text = re.sub(r"[\s]+", "-", text)
+ return re.sub(r"-{2,}", "-", text)
Explication
Le générateur de slug réduit les espaces à
- mais ne déduplique jamais les traits d'union répétés, si bien que plusieurs séparateurs passent au travers ; ajouter re.sub(r'-{2,}', '-', text) les normalise en un seul -. SWE-rebench évalue par exécution : il applique le patch dans le conteneur du dépôt et ne marque l'instance résolue que si le test FAIL_TO_PASS passe désormais et que tous les tests PASS_TO_PASS passent toujours (classement = % résolues).