Zašto SWE-bench Verified više ne mjeri napredne sposobnosti kodiranja na razini najnaprednijih modela
SWE-bench Verified sve je kontaminiraniji. Preporučujemo SWE-bench Pro.
Otkad smo prvi put objavili SWE-bench Verified u kolovozu 2024., industrija ga je široko koristila za mjerenje napretka modela u autonomnim zadacima softverskog inženjerstva. Nakon objave, SWE-bench Verified pružao je snažan signal napretka sposobnosti i postao standardna metrika koja se navodila pri predstavljanju najnaprednijih modela. Praćenje i predviđanje napretka ovih sposobnosti također je važan dio OpenAI-jeva Okvira pripravnosti. Kad smo u početku razvijali referentni test Verified, nastojali smo otkloniti probleme u izvornoj evaluaciji zbog kojih je neke zadatke u skupu podataka SWE-bench(otvara se u novom prozoru) bilo nemoguće riješiti.
Nakon početnih skokova, napredak najboljih modela na referentnom testu SWE-bench Verified usporio je te se u posljednjih šest mjeseci poboljšao(otvara se u novom prozoru) s 74,9 % na 80,9 %. To otvara pitanje: odražavaju li preostali neuspjesi ograničenja modela ili karakteristike samog skupa podataka?
U novoj analizi utvrdili smo dva ključna problema sa skupom Verified koji upućuju na to da ovaj referentni test više nije prikladan za mjerenje napretka u autonomnim sposobnostima softverskog inženjerstva pri lansiranju najnaprednijih modela na današnjim razinama performansi:
- Testovi odbacuju ispravna rješenja: proveli smo reviziju 27,6 % skupa podataka, odnosno dijela zadataka koje modeli često nisu uspijevali riješiti, te utvrdili da najmanje 59,4 % revidiranih problema sadržava manjkave testne slučajeve koji odbacuju funkcionalno ispravne predaje, unatoč našim naporima da te nedostatke unaprijedimo pri izvornoj izradi SWE-bench Verified.
- Treniranje na rješenjima: budući da veliki najnapredniji modeli mogu usvajati informacije iz podataka za treniranje, ključno je da nikad ne budu trenirani na problemima i rješenjima na kojima se evaluiraju. To je slično situaciji u kojoj bi se učenicima prije ispita unaprijed podijelili zadaci i rješenja – možda neće doslovno zapamtiti odgovore, ali oni koji su ih već vidjeli zasigurno će imati prednost u odnosu na one koji nisu. SWE-bench zadaci potječu iz open-source repozitorija koje mnogi pružatelji modela koriste u svrhe treniranja. U našoj analizi utvrdili smo da su svi testirani najnapredniji modeli mogli reproducirati izvorni ispravak pogreške koji su izradili autori koda, poznat kao referentna zakrpa, poznat kao referentna zakrpa, ili doslovne pojedinosti iz opisa problema za određene zadatke, što upućuje na to da su svi tijekom treniranja bili izloženi barem nekim problemima i rješenjima.
Također smo utvrdili da su modeli koji su tijekom treniranja već bili izloženi tim zadacima vjerojatnije uspješni, jer raspolažu dodatnim informacijama potrebnima za prolazak nedovoljno precizno definiranih testova.
To znači da poboljšanja na referentnom testu SWE-bench Verified više ne odražavaju stvarni napredak u sposobnostima modela za razvoj softvera u realnim uvjetima. Umjesto toga, sve više odražavaju u kojoj je mjeri model bio izložen tom referentnom testu tijekom treniranja. Zbog toga smo prestali objavljivati rezultate za SWE-bench Verified i preporučujemo da isto učine i drugi razvojni inženjeri modela.
Radimo na novim, nekontaminiranim evaluacijama kako bismo pouzdanije pratili sposobnosti kodiranja te smatramo da je to važno područje na koje bi se šira istraživačka zajednica trebala usmjeriti. Dotad OpenAI preporučuje objavljivanje rezultata za SWE-bench Pro.
Izvorna SWE-bench(otvara se u novom prozoru) evaluacija objavljena je 2023. Svaki problem preuzet je iz riješene prijave problema na GitHubu u jednom od 12 open-source Python repozitorija i uparen s pripadajućim pull requestom (PR). Kako bi se utvrdilo je li promjena koda koju je generirao model ispravna, svaki problem dolazi s dva skupa testova:
- Testovi koji ne prolaze na neizmijenjenoj bazi koda, ali prolaze ako je problem ispravno uklonjen
- Regresijski testovi koji prolaze i prije i nakon ispravka kako bi se osiguralo da nepovezana funkcionalnost ostane očuvana.
Model ne vidi testove. Mora predložiti izmjenu koda na temelju izvornog opisa problema i stanja repozitorija prije ispravka. Zadatak prolazi samo ako svi testovi budu uspješni nakon primjene izmjene kȏda.
Utvrđeno je da ta evaluacija sadržava niz problema koji mogu dovesti do podcjenjivanja sposobnosti modela.
- Neki jedinični testovi bili su previše specifični ili neusuglašeni sa zadatkom, pa su ispravna rješenja mogla biti odbijena.
- Mnogi opisi zadataka bili su nedovoljno precizni, što je moglo dovesti do više valjanih tumačenja – dok su testovi obuhvaćali samo jedno od njih.
- Ovisno o postavkama okruženja (primjerice Linux u odnosu na Windows ili verziji Pythona), neki su testovi mogli neuspješno završiti bez stvarne pogreške u rješenju
Godine 2024. izradili smo SWE-bench Verified kako bismo riješili ove probleme. Surađivali smo s iskusnim softverskim inženjerima na reviziji 1699 SWE-bench zadataka te uklonili one koji su sadržavali navedene probleme. Svaki je zadatak neovisno pregledalo troje stručnjaka. Rezultat tog postupka bio je SWE-bench Verified, pažljivo odabran skup od 500 zadataka.
Iako je SWE-bench Verified veliko poboljšanje u odnosu na početnu verziju, problemi i dalje postoje. Proveli smo reviziju 138 SWE-bench Verified problema koje OpenAI o3 nije dosljedno riješio tijekom 64 neovisna izvođenja. Svaki je slučaj neovisno pregledalo najmanje šest iskusnih softverskih inženjera. Ako je stručnjak označio problem, dodatni tim ga je ponovno provjerio.
Utvrđeno je da je 59,4 % od 138 problema sadržavalo materijalne nedostatke u dizajnu testa i/ili opisu problema, zbog čega su bili iznimno teški ili nemogući za rješavanje čak i za najsposobniji model ili čovjeka.
- 35,5 % revidiranih zadataka ima stroge testne slučajeve koji nameću određene implementacijske detalje i time diskvalificiraju mnoga funkcionalno ispravna rješenja, što nazivamo preuskim testovima.
- 18,8 % revidiranih zadataka ima testove koji provjeravaju dodatnu funkcionalnost koja nije bila navedena u opisu problema, što nazivamo preširokim testovima.
- Preostalih 5,1 % zadataka imalo je razne probleme koji nisu bili dobro grupirani prema ovoj taksonomiji.
Ilustrativan primjer prvog obrasca neuspjeha jest pylint-dev__pylint-4551(otvara se u novom prozoru), gdje PR u sklopu cjelovitog rješenja uvodi novu funkciju `get_annotation`. Naziv te funkcije ne spominje se u opisu problema, ali je testovi izravno uvoze. Iako neki modeli mogu intuitivno zaključiti da treba stvoriti takvu funkciju, nije nužno implementirati funkciju s tim konkretnim nazivom kako bi se problem ispravno riješio. Mnoga valjana rješenja ne prolaze testove zbog pogrešaka pri uvozu.
Opis problema
Testni PR isječak
Neuspjesi PR testova (skraćeno radi bolje čitljivosti)
Primjer preširokih testnih slučajeva je sympy__sympy-18199(otvara se u novom prozoru). Ovaj je zadatak preuzet iz PR-a koji je rješavao tri različita problema s funkcijom `nthroot_mod`, konkretno #17373(otvara se u novom prozoru), #17377(otvara se u novom prozoru) i #18212(otvara se u novom prozoru). Opis zadatka SWE-bench Verified, međutim, obuhvaća samo konačni problem #18212(otvara se u novom prozoru). To stvara nepodudarnost: PR testovi pokrivaju sva tri problema, dok opis detaljno navodi samo jedan. U našim izvođenjima modeli često ispravno implementiraju opisani ispravak, a zatim ne prolaze testove koji pokrivaju implementaciju za druga dva problema.
Izvorni opis PR-a (iz GitHub PR-a)
Opis problema za #18212
Opis problema za zadatak SWE-bench Verified (preuzeto samo iz #18212):
SWE-bench Verified i repozitoriji (baze koda i bilješke o izdanju) su i otvorenog koda te se široko koriste i o njima se raspravlja, što otežava izbjegavanje kontaminacije za razvojne programere modela.
Prve znakove kontaminacije najprije smo uočili u vlastitim modelima. Na primjer, kad je GPT‑5.2 riješio 31 zadatak za koje smo utvrdili da ih je gotovo nemoguće riješiti. U django__django-14725(otvara se u novom prozoru) testovi zahtijevaju određeni novi parametar `edit_only` koji nije izričito naveden u opisu problema. Tijekom rješavanja problema GPT‑5.2 u svojem lancu razmišljanja pokazuje da raspolaže informacijama iz bilješki o izdanju koje opisuju promjene u kodnoj bazi te ispravno prepoznaje da je parametar `edit_only` uveden u Django 4.1.
GPT‑5.2 CoT
Kako bismo šire procijenili razmjere kontaminacije, uspostavili smo automatizirani red-team sustav testiranja. Za svaki zadatak u SWE-bench Verified zadužili smo GPT‑5 da ispita GPT‑5.2‑Chat, Claude Opus 4.5 i Gemini 3 Flash Preview u potrazi za znakovima kontaminacije. Ti su modeli odabrani kako bi se isključili modeli za rasuđivanje, no priznajemo da među njima vjerojatno postoji značajan jaz u sposobnostima.
Radi provjere kontaminacije, GPT‑5 dobio je ID zadatka iz SWE-bench Verified, njegov opis, referentnu zakrpu i PR testove. Tijekom 15 izmjena u razgovoru omogućili smo GPT‑5 da mijenja system/developer upit, korisnički upit i unaprijed ispunjeni početak odgovora asistenta te primjenjuje različite strategije ispitivanja. Nakon svake izmjene evaluacijski model označio je količinu novih, zadatku specifičnih informacija, a svaka je reakcija dodatno ocijenjena prema razini kontaminacije od „none” do „strong”. GPT‑5 je smio prilagođavati svoju strategiju na temelju prethodnih izmjena kako bi postupno rekonstruirao detalje specifične za zadatak. Za svaki primjer snažne kontaminacije dodatno smo provjerili s drugim evaluacijskim modelom da GPT‑5 ciljnom modelu nije otkrio previše informacija. Na kraju smo ručno pregledali primjere označene kao „strong”, koji čine transkripte prikazane u ovoj objavi.
U nastavku su primjeri snažne kontaminacije među različitim pružateljima modela.
Na temelju kratkog isječka iz opisa zadatka GPT‑5.2 reproducira točnu referentnu zakrpu. Konkretno, zna točan naziv klase i metode te novi uvjet za rani povrat iz funkcije `if username is None or password is None` koji je uveden.
ID zadatka: django__django-11451(otvara se u novom prozoru)
Izazivanje kontaminacije
Referentna zakrpa
Opus je u stanju ne samo prisjetiti se točne četverolinijske funkcionalne izmjene koju je PR uveo, zajedno s konkretnim nazivom datoteke i metode koje su izmijenjene, nego i doslovno citirati inline komentar koji je bio dio diffa.
Izazivanje kontaminacije
Referentna zakrpa
Gemini 3 Flash, kad mu se ne pruže nikakve dodatne informacije o zadatku osim ID-ja, može doslovno reproducirati detalje iz opisa zadatka i referentne zakrpe. To uključuje novu regularnu formulu za validaciju korisničkog imena i točne brojeve redaka na kojima je izmjena provedena.
ID zadatka: django__django-11099(otvara se u novom prozoru)
Izazivanje kontaminacije
Referentna zakrpa
Iz ove revizije referentnog testa SWE-bench Verified proizlaze dvije šire pouke za osmišljavanje evaluacija. Prvo, referentni testovi temeljeni na javno dostupnim materijalima nose rizik kontaminacije, pri čemu izloženost podacima iz treniranja može neprimjetno napuhati rezultate. Ako se javno indeksirani podaci upotrebljavaju u izradi referentnog testa, razvojni inženjeri modela trebali bi provesti dodatne provjere kontaminacije. Javno objavljeni referentni testovi, pa čak i njihova rješenja, mogu završiti u podacima za treniranje. toga je potrebno posvetiti dodatnu pažnju i načinu objave skupova podataka (primjerice zaštiti lozinkom) i filtriranju podataka za treniranje (primjerice strogoj primjeni canary stringova.).
Drugo, automatizirano ocjenjivanje teško je ispravno postaviti. Idealni testni slučajevi trebali bi u potpunosti provjeravati ispravnu funkcionalnost, a pritom ni morali biti neovisni o nebitnim implementacijskim detaljima te istodobno otporni na prečace u rješenjima. Ovi su problemi inherentno složeni i teško ih je riješiti. Njihovo prepoznavanje zahtijevalo je više opsežnih ciklusa provjere koje su provodili ljudski ocjenjivači.
Ova smo saznanja ugradili u naše nedavne evaluacijske aktivnosti. Posljednjih mjeseci odlučili smo objavljivati rezultate iz javnog skupa SWE-bench Pro. Preporučujemo da i drugi razvojni inženjeri modela učine isto. SWE-bench Pro nije savršen, ali empirijski pokazuje manje problema s kontaminacijom. Naš sustav za otkrivanje kontaminacije identificirao je pojedine slučajeve, no oni su bili znatno rjeđi i manje ozbiljni nego kod SWE-bench Verified, a nijedan model nije uspio reproducirati cjelovitu referentnu zakrpu doslovno.
Nastavit ćemo ulagati u izvorne, privatno izrađene referentne testove te pozvati industriju i akademsku zajednicu da učine isto. U okviru GDPVal, zadatke izrađuju stručnjaci iz pojedinih područja, čime se smanjuje rizik izloženosti, a rješenja se ocjenjuju cjelovito, uz pomoć obučenih recenzenata. Takav je pristup zahtjevan u smislu resursa, ali je sve nužniji kako bi se mjerio stvarni napredak sposobnosti.


