Benchmark · agentic
SWE-bench Pro
Une version plus difficile et résistante à la contamination de SWE-bench, signée Scale AI. Elle puise ~1 865 véritables issues GitHub dans des dépôts d'entreprises, de startups et open source mis de côté, sur lesquels les modèles n'ont pas été entraînés, et les correctifs s'étendent généralement sur plusieurs fichiers.
En savoir plus
- Exemple
- À partir d'une issue réelle et de l'intégralité du dépôt, l'agent doit produire un correctif — touchant souvent plusieurs fichiers — afin que la suite de tests cachée du projet réussisse. Les problèmes proviennent de dépôts privés et commerciaux, précisément pour éviter toute fuite de données d'entraînement.
- Notation
- % d'issues résolues, rapporté en pass@1 (une seule tentative). Plus le score est élevé, mieux c'est. Les scores sont plus bas que sur SWE-bench Verified, car les tâches sont plus difficiles et jamais vues auparavant.
- Vérification
- Entièrement automatique et hors échantillon : le correctif généré est appliqué et les véritables tests unitaires cachés du dépôt sont exécutés dans un environnement isolé. Une tâche n'est comptabilisée que si tous les tests visés réussissent et que rien d'autre ne régresse.
- Pourquoi c'est important
- Conçu pour résister à la contamination et à la saturation qui gonflent les scores sur SWE-bench Verified, il constitue donc un signal plus net de la véritable compétence, généralisable, d'un agent de codage sur du code que le modèle n'a jamais vu.
Exemple résolu
Tâche
Dépôt
acme/payments sur un commit de base fixe. Issue : Money('0.05').allocate([1, 1, 1]) perd un centime — les trois parts totalisent $0.04, et non $0.05. Produisez un correctif pour qu'une répartition redonne toujours le montant d'origine.Solution
--- a/payments/money.py
+++ b/payments/money.py
@@ def allocate(self, ratios):
- total = sum(ratios)
- return [self._from_minor(self.minor * r // total) for r in ratios]
+ total = sum(ratios)
+ shares = [self.minor * r // total for r in ratios]
+ remainder = self.minor - sum(shares)
+ for i in range(remainder):
+ shares[i] += 1
+ return [self._from_minor(s) for s in shares]
Explication
La division entière tronque, si bien que les unités mineures restantes (les centimes) étaient silencieusement perdues. Le correctif calcule chaque part, puis distribue le reste une unité à la fois aux premières parts, garantissant que les parts réparties totalisent toujours le montant total. Les tests cachés vérifient
sum(m.allocate(ratios)) == m pour plusieurs montants et ratios.| Date | Modèle | Score | Source |
|---|---|---|---|
| 2026-07-08 | Grok 4.5 | 64.7% | xAI lance Grok 4.5 à faible coût avec des performances de benchmark mitigées |
| 2026-04-23 | GPT-5.5 | 58.6% | OpenAI lance GPT-5.5 et GPT-5.5 Pro via l'API |
| 2026-04-23 | GPT-5.5 | 58.6% | OpenAI lance GPT-5.5 avec des capacités agentic et un doublement du prix de l'API |
| 2026-04-23 | Claude Opus 4.7 | 64.3% | OpenAI lance GPT-5.5 avec des capacités agentic et un doublement du prix de l'API |
| 2025-12-11 | GPT-5.2 Thinking | 55.6% | OpenAI présente GPT-5.2 avec des capacités de codage, de contexte long et de raisonnement améliorées |
| 2025-12-11 | GPT-5.2 Thinking | 55.6% | OpenAI lance GPT-5.2, surpassant Gemini 3 dans les benchmarks de codage et de raisonnement |