Odkar smo avgusta 2024 prvič objavili merilo SWE-bench Verified, se v industriji široko uporablja za merjenje napredka modelov pri avtonomnih nalogah programskega inženiringa. Po izdaji je merilo SWE-bench Verified zagotavljalo močan kazalnik napredka zmogljivosti in postalo standardno merilo, o katerem se poroča pri izdajah prelomnih modelov. Spremljanje in napovedovanje napredka teh zmogljivosti je tudi pomemben del Okvira pripravljenosti družbe OpenAI. Ko smo na začetku ustvarili merilo Verified, smo poskušali odpraviti težave pri prvotnem ocenjevanju, zaradi katerih nekaterih nalog ni bilo mogoče izvesti v podatkovni zbirki SWE-bench(odpre se v novem oknu).
Po začetni skokoviti rasti se je najnovejši napredek na SWE-bench Verified upočasnil, pri čemer je v zadnjih šestih mesecih narastel(odpre se v novem oknu) s 74,9 % na 80,9 %. To odpira vprašanje: ali preostale napake odražajo omejitve modela ali lastnosti samega nabora podatkov?
V novi analizi smo odkrili dve veliki težavi z naborom Verified, ki kažeta, da merilo pri današnjih ravneh zmogljivosti ni več primerno za merjenje napredka pri zmožnostih avtonomnega programskega inženirstva za prelomne izdaje:
- Testi zavračajo pravilne rešitve: Revidirali smo 27,6-% podmnožico nabora podatkov, ki je modeli pogosto niso uspeli rešiti, in ugotovili, da ima vsaj 59,4 % revidiranih problemov pomanjkljive testne primere, ki zavračajo funkcionalno pravilne oddaje, kljub našim najboljšim prizadevanjem, da bi to izboljšali pri začetnem oblikovanju merila SWE-bench Verified.
- Usposabljanje na rešitvah: Ker se lahko veliki prelomni modeli učijo informacij iz svojega usposabljanja, je pomembno, da se nikoli ne usposabljajo na problemih in rešitvah, na katerih se ocenjujejo. To je podobno, kot če bi z učenci pred testom delili naloge in rešitve za prihajajoči test – morda si ne bodo zapomnili odgovora, vendar bodo učenci, ki so odgovore že videli, zagotovo uspešnejši od tistih, ki jih niso. Problemi merila SWE-bench izvirajo iz odprtokodnih repozitorijev, ki jih številni ponudniki modelov uporabljajo za namene usposabljanja. V naši analizi smo ugotovili, da so bili vsi prelomni modeli, ki smo jih testirali, sposobni reproducirati izvirni, človekov popravek programske napake, uporabljen kot referenca temeljne resnice, znan kot zlati popravek, ali dobesedne podrobnosti opisa problema za določene naloge, kar kaže, da so vsi med usposabljanjem videli vsaj nekatere probleme in rešitve.
Prav tako smo našli dokaze, da so modeli, ki so med usposabljanjem videli probleme, bolj verjetno uspešni, ker imajo dodatne informacije, potrebne za uspešno opravljanje premalo jasno opredeljenih preizkusov.
To pomeni, da izboljšave merila SWE-bench Verified ne odražajo več smiselnih izboljšav v resničnih zmožnostih modelov za razvoj programske opreme. Namesto tega vse bolj odražajo, v kolikšni meri je bil model med usposabljanjem izpostavljen primerjalnemu merilu. Zato smo prenehali poročati o rezultatih SWE-bench Verified in priporočamo, da to storijo tudi drugi razvijalci modelov.
Razvijamo nova, nekontaminirana ocenjevanja za boljše spremljanje zmožnosti programiranja, in menimo, da je to pomembno področje, na katerega bi se morala osredotočiti širša raziskovalna skupnost. Dokler jih ne razvijemo, OpenAI priporoča poročanje rezultatov po merilu SWE-bench Pro.
Prvotno ocenjevanje SWE-bench(odpre se v novem oknu) je bilo izdano leta 2023. Vsak problem izvira iz rešene težave na GitHubu v enem od 12 odprtokodnih repozitorijev Python in je povezana z ustreznim pull requestom (PR). Da bi ugotovili, ali je sprememba kode, ki jo je ustvaril model, pravilna, ima vsaka naloga dva sklopa testov:
- Testi, ki ne uspejo na nespremenjeni kodni zbirki, vendar uspejo, če je težava pravilno odpravljena
- Regresijski testi, ki so uspešni tako pred popravkom kot po popravku, da se zagotovi, da nepovezana funkcionalnost ostane nedotaknjena.
Model ne vidi testov. Proizvesti mora spremembo kode zgolj na podlagi besedila prvotne težave in stanja repozitorija pred popravkom. Problem uspešno obravnava le, če po uveljavitvi spremembe kode prestane vse teste.
Pri tem ocenjevanju smo odkrili številne težave, ki bi lahko vodile do podcenjevanja zmogljivosti modelov.
- Nekateri testi na ravni enote so bili preveč specifični ali neusklajeni z nalogo, zato bi lahko bili pravilni popravki zavrnjeni.
- Številne trditve o nalogah so bile premalo natančno določene, kar bi lahko vodilo do več veljavnih interpretacij, medtem ko so testi pokrivali le eno specifično interpretacijo.
- Odvisno od nastavitve okolja (na primer Linux v primerjavi z Windows ali različica Python) lahko nekateri testi navidezno odpovejo.
Leta 2024 smo ustvarili merilo SWE-bench Verified, da bi naslovili te težave. V sodelovanju s strokovnimi programskimi inženirji smo pregledali 1,699 problemov SWE-bench in izločili probleme, ki so imeli te težave. Vsak problem so neodvisno pregledali trije strokovnjaki. Rezultat tega postopka pregledovanja je bilo merilo SWE-bench Verified, skrbno izbran nabor 500 problemov.
Čeprav je SWE-bench Verified precej boljši od začetne različice, težave ostajajo še od prej. Izvedli smo revizijo 138 problemov SWE-bench Verified, ki jih OpenAI o3 v 64 neodvisnih zagonih ni dosledno rešil. Vsak primer je neodvisno pregledalo vsaj šest izkušenih programskih inženirjev. Če je strokovnjak odkril in izpostavil težavo, jo je dodatna ekipa znova preverila.
Ugotovili smo, da je 59,4 % od 138 problemov vsebovalo bistvene pomanjkljivosti v zasnovi testa in/ali opisu problema, zaradi česar so bili izjemno težki ali nemogoči za reševanje celo najzmogljivejšemu modelu ali človeku.
- 35,5 % revidiranih nalog ima stroge testne primere, ki uveljavljajo specifične podrobnosti implementacije, zaradi česar so številne funkcionalno pravilne oddaje neveljavne, kar imenujemo ozko zastavljeni testni primeri.
- 18,8 % revidiranih nalog ima teste, ki preverjajo dodatno funkcionalnost, ki ni bila navedena v opisu problema, kar imenujemo široko zastavljeni testni primeri.
- Preostalih 5,1 % nalog je imelo raznovrstne težave, ki niso bile ustrezno razvrščene po tej taksonomiji.
Primer za ponazoritev prvega neuspešnega načina je pylint-dev__pylint-4551(odpre se v novem oknu), kjer pull request (PR) kot del celotne rešitve uvede novo funkcijo `get_annotation`. To ime funkcije ni omenjeno v opisu problema, vendar ga testi uvozijo neposredno. Čeprav bi nekateri modeli lahko intuitivno ustvarili takšno funkcijo, ni nujno potrebno implementirati funkcije s tem specifičnim imenom, da bi pravilno naslovili problem. Številne veljavne rešitve ne prestanejo testov zaradi napak pri uvozu.
Opis problema
Testni izrezek pull requesta
Neuspešni testi PR-jev (skrajšano zaradi berljivosti)
Primer preširokih testnih primerov je sympy__sympy-18199(odpre se v novem oknu). Ta naloga je izvirala iz PR-ja, ki je obravnaval tri ločene težave s funkcijo `nthroot_mod`, in sicer #17373(odpre se v novem oknu), #17377(odpre se v novem oknu) in #18212(odpre se v novem oknu). Opis naloge SWE-bench Verified pa zajema le končno težavo #18212(odpre se v novem oknu). To ustvari neskladje: testi PR pokrivajo vse tri težave, medtem ko opis podrobno obravnava le eno. V naših izvedbah modeli pogosto pravilno implementirajo opisani popravek, nato pa ne prestanejo testov, ki pokrivajo implementacijo za drugi dve težavi.
Opis izvirnega pull requesta (iz PR za GitHub)
Opis problema za #18212
Opis problema za nalogo SWE-bench Verified (povzeto samo iz #18212):
SWE-bench Verified in repozitoriji (kodne zbirke in opombe ob izdaji) so odprtokodni ter široko uporabljeni in obravnavani, kar razvijalcem modelov otežuje izogibanje kontaminaciji.
Znake kontaminacije smo najprej zaznali v naših modelih. Na primer ko je model GPT‑5.2 rešil 31 nalog, za katere smo predhodno menili, da jih je skoraj nemogoče rešiti. V django__django-14725(odpre se v novem oknu) testi zahtevajo določen nov parameter `edit_only`, ki ga opis problema ne zahteva izrecno. Med reševanjem problema model GPT‑5.2 v svoji verigi sklepanja pokaže, da ima informacije o opombah ob izdaji, ki podrobno opisujejo spremembe v kodni zbirki, in pravilno prepozna, da je bil parameter `edit_only` uveden v Django 4.1.
GPT‑5.2 CoT
Za širšo ocenitev obsega kontaminacije smo ustvarili avtomatizirano ureditev za preizkus odpornosti. Za vsako vprašanje SWE-bench Verified smo model GPT‑5 zadolžili, da preizkusi GPT‑5.2‑Chat, Claude Opus 4.5 in Gemini 3 Flash Preview in tako odkrije morebitne znake kontaminacije. Ti modeli so bili izbrani tako, da izključujejo modele sklepanja, vendar priznavamo, da med njimi verjetno obstaja nezanemarljiva vrzel v zmogljivostih.
Za preverjanje kontaminacije je GPT‑5 prejel: ID, opis, zlati popravek in teste PR za nalogo po merilu SWE-bench Verified. V več kot 15 izmenjavah smo modelu GPT‑5 dovolili, da je spreminjal sistemski/razvijalski poziv, uporabniški poziv in predizpolnitev pomočnika ter različne strategije sprožanja. Po vsakem koraku je sodniški model označil, koliko nove, nalogi specifične informacije se je pojavilo, in vsak odgovor je bil označen glede na resnost kontaminacije z oznako od »brez« do »močna«. GPT‑5 je smel prilagoditi svojo strategijo na podlagi prejšnjih izmenjav, da bi iterativno pridobil podrobnosti, specifične za nalogo. Za vsak primer močne kontaminacije smo z drugim sodnikom preverili, da GPT‑5 ni razkril preveč informacij ciljnemu modelu. Nazadnje smo nato ročno pregledali »močne« primere, ki so vključeni v prepisih v tej objavi.
Spodaj so primeri močne kontaminacije med različnimi ponudniki modelov.
Model GPT‑5.2 na podlagi kratkega izseka iz opisa naloge prikaže povsem točni zlati popravek. Zlasti pozna natančno ime razreda in metode ter nov pogoj za zgodnjo vrnitev `if username is None or password is None`, ki je uveden.
ID naloge: django__django-11451(odpre se v novem oknu)
Sprožitev kontaminacije
Zlati popravek
Opus ne zmore le priklicati natančne 4-vrstične funkcionalne spremembe, ki jo je uvedel pull request (PR), skupaj z dejanskim imenom datoteke in metodo, ki se je je dotaknil, temveč tudi dobesedno citira vdelani komentar, ki je bil del ugotovljenih razlik.
Sprožitev kontaminacije
Zlati popravek
Gemini 3 Flash, ko ne dobi nobenih dodatnih informacij o nalogi razen ID-ja, lahko dobesedno izpiše podrobnosti iz opisa naloge in zlatega popravka. To vključuje novo formulo regularnega izraza za preverjanje veljavnosti uporabniškega imena in natančne številke vrstic za spremembo.
ID naloge: django__django-11099(odpre se v novem oknu)
Sprožitev kontaminacije
Zlati popravek
Iz te revizije merila SWE-bench Verified smo se naučili dveh širših lekcij na področju oblikovanja ocenjevanj. Kot prvo, primerjalna merila, pridobljena iz javno dostopnih gradiv, prinašajo tveganje kontaminacije, pri čemer lahko izpostavljenost podatkom za usposabljanje neopazno lažno izboljša rezultate. Če se pri izdelavi primerjalnega merila uporabljajo javno preiskovani podatki, bi morali razvijalci modelov izvesti dodatne teste za ugotavljanje kontaminacije. Javno objavljena primerjalna merila in celo njihove rešitve lahko končajo v podatkih za usposabljanje. Posebno pozornost velja nameniti načinu objave naborov podatkov (tj. zaščiteno z geslom) in filtriranju podatkov za usposabljanje (tj. dosledno upoštevanje »kanarčkovih« nizov).
Drugič, avtomatizirano ocenjevanje je težko pravilno izvesti; popolni testni primeri bi morali preveriti pravilnost delovanja v celoti, pri čemer morajo biti tako neodvisni od specifičnih nepomembnih podrobnosti implementacije kot tudi odporni pred hitrimi rešitvami prek bližnjic. Ti problemi so po svoji naravi zapleteni in jih je težko rešiti. Za odkrivanje teh problemov je bilo potrebnih več obsežnih kampanj označevanja, ki so ga izvedli ljudje.
Te ugotovitve smo vključili v naša nedavna prizadevanja na področju ocenjevanja. V zadnjih mesecih smo se odločili za poročanje o rezultatih iz javne razvejitve SWE-Bench Pro. Drugim razvijalcem modelov priporočamo, da storijo enako. SWE-bench Pro ni popoln, vendar se empirično zdi, da ima manj težav s kontaminacijo. Naš cevovod za odkrivanje kontaminacije je našel nekaj primerov kontaminacije, vendar so bili ti primeri bistveno redkejši in manj problematični kot pri merilu SWE-bench Verified, in noben model ni bil sposoben ustvariti popolnega dobesednega zlatega popravka.
Še naprej bomo vlagali v izvirne, zasebno pripravljene primerjalne teste in k temu bomo pozvali tudi industrijo in akademske kroge. V GDPVal naloge zasebno pripravljajo področni strokovnjaki, kar zmanjšuje tveganje izpostavljenosti, rešitve pa celovito ocenjujejo usposobljeni ocenjevalci. Ta pristop je zahteven glede virov, vendar je vse bolj nujen za merjenje resničnih izboljšav zmogljivosti.


