Od doby, kdy jsme v srpnu 2024 poprvé publikovali SWE-bench Verified, jej odvětví široce používá k měření pokroku modelů v autonomních úlohách softwarového vývoje. Po svém vydání znamenal SWE-bench Verified silný signál pokroku ve schopnostech a stal se standardní metrikou uváděnou při vydáních špičkových modelů. Sledování a předpovídání pokroku těchto schopností je také důležitou součástí rámce připravenosti OpenAI. Když jsme původně vytvořili benchmark Verified, pokusili jsme se vyřešit problémy v původním hodnocení, které znemožňovaly splnit některé úlohy v datové sadě SWE-bench(otevře se v novém okně).
Po počátečním skokovém zlepšení se špičkový pokrok na SWE-bench Verified zpomalil a zlepšil se(otevře se v novém okně) ze 74,9 % na 80,9 % za posledních 6 měsíců. To vyvolává otázku: odrážejí zbývající selhání omezení modelu nebo vlastnosti samotné datové sady?
V nové analýze jsme objevili dva zásadní problémy se sadou Verified, které naznačují, že benchmark už není vhodný k měření pokroku v autonomních schopnostech softwarového vývoje pro uvedení na trh při dnešních úrovních výkonu:
- Testy odmítají správná řešení: Provedli jsme audit 27,6 % podmnožiny datové sady, kterou modely často nedokázaly vyřešit, a zjistili jsme, že navzdory našemu nejlepšímu úsilí o zlepšení při počátečním vytvoření SWE-bench Verified minimálně 59,4 % auditovaných úloh má chybné testovací případy, které odmítají funkčně správná odevzdání.
- Trénování na řešeních: Vzhledem k tomu, že se velké špičkové modely mohou ze svého tréninku naučit informace, je důležité, aby nikdy nebyly trénovány na problémech a řešeních, na kterých jsou hodnoceny. Je to podobné, jako kdybyste studentům před testem sdělili problémy a řešení k nadcházejícímu testu. Možná si odpověď nezapamatují, ale studenti, kteří už odpovědi viděli, si určitě povedou lépe než ti, kteří je neviděli. Problémy SWE-bench pocházejí z open-source úložišť, která mnoho poskytovatelů modelů používá pro účely trénování. V naší analýze jsme zjistili, že všechny testované špičkové modely byly schopny reprodukovat původní, lidsky napsanou opravu chyby použitou jako referenční bod, známý jako zlatá záplata, nebo doslovné specifikace problémového tvrzení pro určité úkoly, což naznačuje, že všechny se během trénování setkaly s alespoň některými problémy a jejich řešeními.
Také jsme zjistili, že modely, které se s problémy setkaly během trénování, mají větší šanci na úspěch, protože mají k dispozici dodatečné informace potřebné k úspěšnému absolvování nedostatečně specifikovaných testů.
To znamená, že zlepšení v testu SWE-bench Verified již neodrážejí smysluplná zlepšení schopností modelů vyvíjet software v reálném světě. Místo toho stále více odrážejí, jak moc byl model během trénování vystaven srovnávacímu testu. Proto jsme přestali uvádět skóre SWE-bench Verified a doporučujeme, aby to dělali také ostatní vývojáři modelů.
Vytváříme nová, nekontaminovaná hodnocení, abychom mohli lépe sledovali schopnosti v programování, a myslíme si, že je to důležitá oblast, na kterou by se měla zaměřit širší výzkumná komunita. Dokud je nebudeme mít, OpenAI doporučuje reportovat výsledky pro SWE-bench Pro.
Původní hodnocení SWE-bench(otevře se v novém okně) bylo vydáno v roce 2023. Každý problém pochází z vyřešeného problému na GitHubu v jednom z 12 open-source Python úložišť a je spárován s odpovídajícím pull requestem (PR). Chcete-li určit, zda je změna kódu vygenerovaná modelem správná, každý problém obsahuje dvě sady testů:
- Testy, které selžou na neupravené kódové základně, ale projdou, pokud je problém správně opraven
- Regresní testy, které projdou jak před, tak po opravě, aby se zajistilo, že nesouvisející funkce zůstane nedotčena.
Model nevidí testy. Musí vytvořit změnu kódu pouze na základě původního textu problému a stavu úložiště před opravou. Projde problémem pouze tehdy, pokud po aplikování změny kódu projdou všechny testy.
Zjistili jsme mnoho problémů s tímto hodnocením, které by mohly vést k podhodnocení schopností modelů.
- Některé jednotkové testy byly příliš konkrétní nebo nebyly v souladu s úkolem, takže správné opravy mohly být odmítnuty.
- Mnohá zadání úkolů byla nedostatečně specifikovaná, což mohlo vést k více platným interpretacím, zatímco testy pokrývaly jen jednu konkrétní.
- V závislosti na nastavení prostředí (například Linux vs Windows nebo verze pythonu) mohou některé testy falešně selhat
V roce 2024 jsme pro řešení těchto problémů vytvořili SWE-bench Verified. Spolupracovali jsme s odbornými vývojáři softwaru na revizi 1 699 problémů SWE-bench a odfiltrování problémů, které měly tyto potíže. Každý problém byl přezkoumán nezávisle třemi odborníky. Tento kontrolní proces vyústil v SWE-bench Verified, kurátorsky vybranou sadu 500 problémů.
Přestože SWE-bench Verified představuje velké zlepšení oproti původní verzi, přetrvávají zbytkové problémy. Provedli jsme audit 138 problémů s SWE-bench Verified, které OpenAI o3 nedokázal konzistentně vyřešit během 64 nezávislých spuštění. Každý případ byl nezávisle posouzen nejméně šesti zkušenými softwarovými inženýry. Pokud odborník označil problém, byl znovu ověřen dalším týmem.
Zjistili jsme, že 59,4 % ze 138 problémů obsahovalo závažné nedostatky v návrhu testu a/nebo v popisu problému, díky čemuž byly extrémně obtížné neboje nešlo vyřešit i tím ten nejschopnějším modelem nebo člověkem.
- 35,5 % auditovaných úloh má přísné testovací případy, které vynucují konkrétní detaily implementace, čímž zneplatňují mnoho funkčně správných odeslání, kterým říkáme úzké testovací případy.
- 18,8 % auditovaných úloh má testy, které kontrolují dodatečnou funkcionalitu, jež nebyla specifikována v popisu problému. Proto je nazýváme široké testovací případy.
- Zbývajících 5,1 % úkolů mělo různé problémy, které nebyly v rámci této taxonomie dobře seskupené.
Ilustrativním příkladem prvního režimu selhání je pylint-dev__pylint-4551(otevře se v novém okně), kde PR zavádí novou funkci `get_annotation` jako součást celkového řešení. Tento název funkce není uveden v popisu úlohy, ale je importován přímo testy. I když některé modely mohou intuitivně vytvořit takovou funkci, není striktně nutné implementovat funkci s tímto konkrétním názvem, aby se problém správně vyřešil. Mnoho platných řešení selže v testech kvůli chybám při importu.
Popis problému
Testovací úryvek PR
Selhání testů PR (zkráceno pro čitelnost)
Příkladem příliš širokých testovacích případů je sympy__sympy-18199(otevře se v novém okně). Tento úkol pocházel z PR, které řešilo tři samostatné problémy s funkcí `nthroot_mod`, konkrétně #17373(otevře se v novém okně), #17377(otevře se v novém okně) a #18212(otevře se v novém okně). Popis úlohy SWE-bench Verified však pokrývá pouze poslední problém #18212(otevře se v novém okně). To vytváří nesoulad: testy v PR pokrývají všechny tři problémy, zatímco popis podrobně uvádí pouze jeden. V našich bězích modely často správně implementují popsanou opravu a pak selžou v testech, které pokrývají implementaci dalších dvou problémů.
Původní popis PR (z GitHub PR)
Popis problému pro #18212
Popis problému pro úlohu SWE-bench Verified (pouze převzato z #18212):
SWE-bench Verified a úložiště (kódové základny a poznámky k vydání) jsou obojí open-source a široce používané a diskutované, což ztěžuje vyhnout se kontaminaci pro vývojáře modelů.
Nejprve jsme zaznamenali známky kontaminace v našich vlastních modelech. Například když GPT‑5.2 vyřešil 31 úloh, které jsme identifikovali jako téměř nemožné vyřešit. V django__django-14725(otevře se v novém okně) testy vyžadují konkrétní nový parametr `edit_only`, který není v zadání problému výslovně vyžadován. Při řešení problému GPT‑5.2 ve svém myšlenkovém řetězci ukazuje, že má informace o poznámkách k vydání, které podrobně popisují změny v kódové základně, a správně identifikuje, že parametr `edit_only` byl zaveden v Django 4.1.
GPT‑5.2 CoT
Abychom posoudili, jak významná je kontaminace v širším měřítku, vytvořili jsme automatizované nastavení pro red-teaming. U každé otázky SWE-bench Verified jsme pověřili GPT‑5, aby prověřil GPT‑5.2‑Chat, Claude Opus 4.5 a Gemini 3 Flash Preview pro kontaminaci. Tyto modely byly vybrány tak, aby vyloučily modely s uvažováním, ale uznáváme, že mezi nimi pravděpodobně existuje nezanedbatelná mezera ve schopnostech.
Aby se prověřila kontaminace, GPT‑5 obdržel ID, popis, referenční záplatu ch a PR testy úlohy SWE-bench Verified. Během více než 15 tahů jsme umožnili GPT‑5 měnit systémový/developerský prompt, uživatelský prompt, předvyplnění asistenta a různé strategie elicitation. Po každém tahu judge model označil, kolik nových informací specifických pro daný úkol se objevilo, a každá odpověď byla označena podle závažnosti kontaminace od „žádná“ po „silná“. GPT‑5 měl povoleno přizpůsobovat svou strategii na základě předchozích tahů, aby iterativně získal zpět detaily specifické pro daný úkol. U každého příkladu silné kontaminace jsme s dalším hodnotitelem ověřili, že GPT‑5 neuniklo do cílového modelu příliš mnoho informací. Nakonec jsme pak ručně zkontrolovali „silné“ příklady, které tvoří přepisy v tomto příspěvku.
Níže jsou uvedeny příklady silné kontaminace napříč různými poskytovateli modelů.
Na základě krátkého úryvku z popisu úlohy GPT‑5.2 vypíše přesnou opravu (gold patch). Zejména zná přesný název třídy a metody a novou podmínku pro předčasný návrat `if username is None or password is None`, která je zavedena.
Vyvolání kontaminace
Zlatá oprava
Opus je schopný si nejen vybavit přesnou čtyřřádkovou funkční změnu, kterou PR zavedlo, spolu s konkrétním názvem souboru a metodou, které se dotklo, ale také doslova cituje inline komentář, který byl součástí diffu.
Vyvolání kontaminace
Zlatá oprava
Gemini 3 Flash, pokud nedostane žádné další informace o úkolu kromě ID, dokáže doslovně vypsat podrobnosti z popisu úkolu a z referenčního patchu. To zahrnuje nový regulární výraz pro ověřování uživatelského jména a přesná čísla řádků pro tuto změnu.
Vyvolání kontaminace
Zlatá oprava
Z tohoto auditu SWE-bench Verified vidíme dvě širší poučení pro návrh evaluací. Nejprve, benchmarky pocházející z veřejně dostupných materiálů nesou riziko kontaminace, kdy vystavení trénovacím datům může tiše uměle navýšit skóre. Pokud se při konstrukci benchmarku používají veřejně procházená data, měli by vývojáři modelů provést dodatečné testy na kontaminaci. Srovnávací testy, a dokonce i jejich řešení, zveřejněné veřejně mohou skončit v trénovacích datech. Zvláštní pozornost by měla být věnována jak tomu, jak jsou datové sady zveřejňovány (tj. chráněno heslem) a filtrování trénovacích dat (tj. přísné dodržování kanárkových řetězců).
Za druhé, automatizované skórování je obtížné nastavit správně; dokonalé testovací případy by měly plně ověřit správnou funkčnost, být jak nezávislé na konkrétních nepodstatných detailech implementace, tak i robustní vůči zkratkovitým řešením. Tyto problémy jsou ze své podstaty složité a obtížně řešitelné. Odhalení těchto problémů vyžadovalo několik rozsáhlých kampaní lidského štítkování.
Tato zjištění jsme začlenili do našich nedávných hodnoticích aktivit. V posledních měsících jsme se rozhodli reportovat výsledky z veřejného rozdělení SWE-Bench Pro. Doporučujeme, aby ostatní vývojáři modelů postupovali stejně. SWE-bench Pro není dokonalý, ale empiricky se zdá, že trpí méně problémy s kontaminací. Náš pipeline pro detekci kontaminace našel některé případy kontaminace, ale tyto případy byly výrazně vzácnější a méně závažné než u SWE-bench Verified a žádný model nedokázal vytvořit kompletní doslovnou gold patch.
Budeme i nadále investovat do původních, soukromě vytvořených benchmarků a požádáme o pomoc průmysl i akademickou sféru, aby dělaly totéž. V GDPVal jsou úkoly soukromě vytvářeny odborníky v dané doméně, čímž se snižuje riziko vystavení, a řešení jsou hodnocena holisticky vyškolenými hodnotiteli. Tento přístup je náročný na zdroje, ale je stále nezbytnější pro měření skutečných zlepšení schopností.


