Siitä lähtien kun julkaisimme SWE-bench Verifiedin elokuussa 2024, ala on käyttänyt sitä laajasti mallien edistymisen mittaamiseen autonomisissa ohjelmistokehitystehtävissä. Julkaisunsa jälkeen SWE-bench Verified antoi vahvan signaalin kykyjen edistymisestä ja siitä tuli standardimittari, joka raportoidaan edistyneiden mallien julkaisujen yhteydessä. Näiden kykyjen edistymisen seuranta ja ennustaminen on myös tärkeä osa OpenAI:n valmiuskehystä. Kun alun perin loimme Verified-vertailuarvon, pyrimme ratkaisemaan alkuperäisessä arvioinnissa ilmenneitä ongelmia, jotka estivät tiettyjen tehtävien suorittamisen SWE-bench-tietojoukossa(avautuu uudessa ikkunassa).
Alkuvaiheen harppausten jälkeen SWE-bench Verifiedin huippuluokan edistyminen on hidastunut ja parantunut(avautuu uudessa ikkunassa) viimeisten 6 kuukauden aikana 74,9 prosentista 80,9 prosenttiin. Tämä herättää kysymyksen: heijastavatko jäljellä olevat epäonnistumiset mallin rajoituksia vai itse tietojoukon ominaisuuksia?
Uudessa analyysissä löysimme Verified-joukosta kaksi merkittävää ongelmaa, jotka osoittavat, että vertailuarvo ei enää sovellu edistyneiden julkaisujen autonomisten ohjelmistokehityskykyjen edistymisen mittaamiseen nykyisellä suorituskykytasolla:
- Testit hylkäävät oikeat ratkaisut: Tarkastimme 27,6 %:n osajoukon tietojoukosta, jota mallit eivät usein onnistuneet ratkaisemaan, ja havaitsimme, että vähintään 59,4 %:ssa tarkastetuista tehtävistä on virheellisiä testitapauksia, jotka hylkäävät toiminnallisesti oikeat lähetykset, huolimatta parhaista yrityksistämme parantaa tätä SWE-bench Verifiedin alkuperäisen luontiprosessin aikana.
- Ratkaisujen koulutus: Koska suuret edistyneet mallit voivat oppia tietoa koulutuksestaan, on tärkeää, ettei niitä koskaan kouluteta käyttämällä tehtäviä ja ratkaisuja, joilla niitä arvioidaan. Tämä on verrattavissa siihen, että opiskelijoille jaetaan tulevaa koetta varten tehtävät ja ratkaisut ennen koetta – he eivät välttämättä muista vastausta ulkoa, mutta opiskelijat, jotka ovat nähneet vastaukset aiemmin, pärjäävät varmasti paremmin kuin ne, jotka eivät ole nähneet niitä. SWE-bench-tehtävät ovat peräisin avoimen lähdekoodin repositorioista, joita monet mallien tarjoajat käyttävät koulutustarkoituksiin. Analyysissämme havaitsimme, että kaikki testaamamme edistyneet mallit pystyivät toistamaan alkuperäisen, ihmisen kirjoittaman virheenkorjauksen, jota käytettiin ground-truth-viitteenä ja joka tunnetaan nimellä gold patch – tai tiettyjen tehtävien kohdalla tehtävän kuvauksen yksityiskohdat sanatarkasti, mikä viittaa siihen, että ne kaikki ovat nähneet ainakin osan tehtävistä ja ratkaisuista koulutuksen aikana.
Löysimme myös todisteita siitä, että mallit, jotka ovat nähneet tehtävät koulutuksen aikana, onnistuvat todennäköisemmin, koska niillä on ylimääräistä tietoa, jota tarvitaan alimääriteltyjen testien läpäisemiseen.
Tämä tarkoittaa, että SWE-bench Verifiedin parannukset eivät enää heijasta merkittäviä parannuksia mallien todellisissa ohjelmistokehityskyvyissä. Sen sijaan ne heijastavat yhä enemmän sitä, kuinka paljon malli on altistunut vertailuarvolle koulutuksen aikana. Siksi olemme lopettaneet SWE-bench Verified -pisteiden raportoinnin, ja suosittelemme, että muutkin mallien kehittäjät tekevät samoin.
Rakennamme uusia, puhtaita arviointeja, jotta voimme paremmin seurata koodauskykyjä. Uskomme, että tämä on tärkeä alue, johon laajemman tutkimusyhteisön kannattaa keskittyä. Ennen kuin ne ovat saatavilla, OpenAI suosittelee raportoimaan tulokset SWE-bench Prolle.
Alkuperäinen SWE-bench(avautuu uudessa ikkunassa) -arviointi julkaistiin vuonna 2023. Jokainen tehtävä on peräisin ratkaistusta GitHub-ongelmasta yhdessä 12 avoimen lähdekoodin Python-repositoriossa ja yhdistetty vastaavaan pull requestiin (PR). Jotta voidaan määrittää, onko mallin tuottama koodimuutos oikein, jokaisen tehtävän mukana tulee kaksi testijoukkoa:
- Testit, jotka epäonnistuvat muokkaamattomassa koodikannassa mutta läpäisevät, jos ongelma korjataan oikein
- Regressiotestit, jotka läpäisevät sekä ennen korjausta että sen jälkeen, jotta voidaan varmistaa, että toisiinsa liittymätön toiminnallisuus säilyy ennallaan.
Malli ei näe testejä. Sen on tuotettava koodimuutos pelkästään alkuperäisen ongelmatekstin ja repositorion tilan perusteella ennen korjausta. Se läpäisee tehtävän vain, jos kaikki testit läpäisevät sen jälkeen, kun koodimuutos on otettu käyttöön.
Havaitsimme kyseisessä arvioinnissa monia ongelmia, jotka voisivat johtaa mallien kyvyn aliraportointiin.
- Jotkin yksikkötestit olivat liian tarkkoja tai eivät vastanneet tehtävää, joten oikeat korjaukset saatettiin hylätä.
- Monet tehtäväkuvaukset olivat puutteellisesti määriteltyjä, mikä saattoi johtaa useisiin päteviin tulkintoihin, vaikka testit kattoivat vain yhden tietyn.
- Ympäristön asetuksista riippuen (esimerkiksi Linux vs. Windows tai Python-versio) jotkin testit voivat epäonnistua virheellisesti.
Loimme SWE-bench Verifiedin vuonna 2024 tällaisten ongelmien ratkaisemiseksi. Teimme yhteistyötä asiantuntevien ohjelmistoinsinöörien kanssa tarkistaaksemme 1 699 SWE-bench -tehtävää ja suodattaaksemme pois tehtävät, joissa kyseisiä ongelmia esiintyi. Kolme asiantuntijaa tarkasti jokaisen tehtävän toisistaan riippumatta. Tämä tarkistusprosessi tuotti tuloksena SWE-bench Verifiedin – 500 tehtävän kuratoidun joukon.
Vaikka SWE-Bench Verified on suuri parannus alkuperäiseen versioon verrattuna, jäljellä on vielä ongelmia. Teimme auditoinnin 138 SWE-Bench Verified -tehtävästä, joita OpenAI o3 ei ratkaissut johdonmukaisesti 64 itsenäisen testin aikana. Jokaisen tapauksen tarkisti itsenäisesti vähintään kuusi kokenutta ohjelmistoinsinööriä. Jos asiantuntija merkitsi ongelman, ylimääräinen tiimi tarkisti sen uudelleen.
Havaitsimme, että 138 tehtävästä 59,4 % sisälsi olennaisia puutteita testin suunnittelussa ja/tai tehtävän kuvauksessa, mikä teki niistä äärimmäisen vaikeita tai mahdottomia ratkaista jopa kaikkein kyvykkäimmälle mallille tai ihmiselle.
- 35,5 prosentissa auditoiduista tehtävistä on tiukat testitapaukset, jotka edellyttävät tiettyjä toteutustietoja, mikä mitätöi monia toiminnallisesti oikeita lähetyksiä. Kutsumme näitä kapeiksi testitapauksiksi.
- 18,8 prosentissa auditoiduista tehtävistä on testejä, jotka tarkistavat lisätoiminnallisuutta, jota ei ollut määritelty tehtävän kuvauksessa. Kutsumme näitä laajoiksi testitapauksiksi.
- Lopuissa 5,1 prosentissa tehtävistä oli sekalaisia ongelmia, joita ei oltu ryhmitelty hyvin tämän taksonomian avulla.
Havainnollistava esimerkki ensimmäisestä vikatilasta on pylint-dev__pylint-4551(avautuu uudessa ikkunassa), jossa PR lisää uuden funktion nimeltä "get_annotation" osana kokonaisratkaisua. Tätä funktion nimeä ei mainita tehtävän kuvauksessa, vaan testit tuovat sen suoraan. Vaikka jotkin mallit saattavat intuitiivisesti luoda tällaisen funktion, ei ole välttämätöntä toteuttaa funktiota juuri tällä tietyllä nimellä tehtävän ratkaisemiseksi oikein. Monet kelvolliset ratkaisut eivät läpäise tuontivirhetestejä.
Tehtävän kuvaus
PR-testiote
PR-testien epäonnistumiset (lyhennetty luettavuuden parantamiseksi)
Esimerkki liian laajasta testitapauksesta on sympy__sympy-18199(avautuu uudessa ikkunassa). Tämä tehtävä on peräisin PR:stä, joka käsitteli kolmea erillistä "nthroot_mod"-funktion ongelmaa: #17373(avautuu uudessa ikkunassa), #17377(avautuu uudessa ikkunassa) ja #18212(avautuu uudessa ikkunassa). SWE-bench Verified -tehtävän kuvaus kattaa kuitenkin vain viimeisen ongelman #18212(avautuu uudessa ikkunassa). Tämä aiheuttaa ristiriidan: PR-testit kattavat kaikki kolme ongelmaa, kun taas kuvauksessa käsitellään vain yhtä. Testeissämme mallit toteuttavat usein kuvatun korjauksen oikein, mutta epäonnistuvat sitten testeissä, jotka kattavat kahden muun ongelman toteutuksen.
Alkuperäinen PR-kuvaus (GitHub PR:stä)
Tehtävän kuvaus ongelmalle #18212
SWE-bench Verified -tehtävän kuvaus (otettu vain #18212:sta):
SWE-bench Verified ja repositoriot (koodikannat ja julkaisutiedot) ovat molemmat avointa lähdekoodia ja niitä käytetään ja niistä keskustellaan laajalti, mikä tekee kontaminaation välttämisestä vaikeaa mallien kehittäjille.
Havaitsimme ensimmäisen kerran saastumisen merkkejä omissa malleissamme. Esimerkiksi silloin, kun GPT‑5.2 ratkaisi 31 tehtävää, jotka olimme tunnistaneet lähes mahdottomiksi ratkaista. django__django-14725(avautuu uudessa ikkunassa):ssä testit edellyttävät tiettyä uutta parametria "edit_only", jota tehtävän kuvauksessa ei nimenomaisesti vaadita. Tehtävää ratkaistessaan GPT‑5.2 osoittaa ajatusketjussaan, että sillä on tietoa julkaisutiedoista, jotka kuvaavat koodikannan muutoksia, ja se tunnistaa oikein, että "edit_only"-parametri otettiin käyttöön Django 4.1:ssä.
GPT‑5.2 CoT
Jotta voisimme arvioida kontaminaation merkitystä laajemmin, loimme automatisoidun hyökkäävän tietoturvatestausasetelman. Jokaista SWE-bench Verified -kysymystä varten annoimme GPT‑5:lle tehtäväksi tutkia GPT‑5.2‑Chatia, Claude Opus 4.5:tä ja Gemini 3 Flash Preview'tä kontaminaation varalta. Nämä mallit valittiin päättelymallien poissulkemiseksi, mutta tiedostamme, että niiden välillä on todennäköisesti merkittävä kykyero.
Kontaminaation havaitsemiseksi GPT‑5 sai SWE-bench Verified -tehtävän tunnuksen, kuvauksen, gold patchin ja PR-testit. Yli 15 vuoron aikana annoimme GPT‑5:lle mahdollisuuden vaihtaa järjestelmän/kehittäjän kehotetta, käyttäjän kehotetta ja avustajan esitäyttöä sekä erilaisia selvitysstrategioita. Jokaisen vuoron jälkeen tuomarimalli merkitsi, kuinka paljon uutta tehtäväkohtaista tietoa esiintyi, ja jokainen vastaus merkittiin kontaminaation vakavuuden mukaan asteikolla ”ei lainkaan”–”vahva”. GPT‑5 sai mukauttaa strategiaansa aiempien vuorojen perusteella voidakseen palauttaa iteratiivisesti tehtäväkohtaiset yksityiskohdat. Jokaisen vahvan kontaminaation esimerkin osalta varmistimme toisen tuomarin kanssa, että GPT‑5 ei vuotanut liikaa tietoa kohdemalliin. Lopuksi tarkistimme manuaalisesti ne "vahvat" esimerkit, jotka muodostavat tässä julkaisussa olevat transkriptiot.
Alla on esimerkkejä vahvasta kontaminaatiosta eri mallien tarjoajien välillä.
Kun annetaan lyhyt ote tehtävän kuvauksesta, GPT‑5.2 tuottaa tarkan gold patchin. Erityisesti se tietää tarkan luokan ja metodin nimen sekä uuden varhaisen palautusehdon "jos käyttäjätunnus on Ei mitään tai salasana on Ei mitään", joka otetaan käyttöön.
Tehtävän tunnus: django__django-11451(avautuu uudessa ikkunassa)
Kontaminaation selvittäminen
Gold patch
Opus pystyy paitsi muistamaan PR:n tuoman tarkan nelirivisen toiminnallisen muutoksen sekä sen koskettaman tiedostonimen ja metodin, myös lainaamaan sanatarkasti eroavaisuuteen kuuluneen sisäisen kommentin.
Tehtävän tunnus: astropy__astropy-13236(avautuu uudessa ikkunassa)
Kontaminaation selvittäminen
Gold patch
Kun Gemini 3 Flashille ei anneta tehtävästä muita tietoja kuin tunnus, se pystyy tuottamaan sanatarkkoja tietoja tehtävän kuvauksesta ja gold patchista. Tämä sisältää uuden regex-kaavan käyttäjätunnuksen validointia varten ja muutoksen tarkat rivinumerot.
Tehtävän tunnus: django__django-11099(avautuu uudessa ikkunassa)
Kontaminaation selvittäminen
Gold patch
Tässä SWE-bench Verifiedin auditoinnissa näemme kaksi laajempaa oppia arviointisuunnittelua varten. Ensinnäkin julkisesti saatavilla olevasta materiaalista peräisin oleviin vertailuarvoihin liittyy kontaminaatioriski, sillä altistuminen koulutusdatalle voi huomaamatta nostaa pisteitä. Jos vertailuarvojen rakentamisessa käytetään julkisesti indeksoituja tietoja, mallien kehittäjien tulisi suorittaa lisätestejä kontaminaation varalta. Julkisesti julkaistut vertailuarvot ja jopa niiden ratkaisut voivat päätyä koulutusdataan. Erityistä huolellisuutta tulisi kiinnittää sekä siihen, miten tietojoukkoja julkaistaan (eli salasanalla suojattu), että koulutusdatan suodatukseen (eli tiukka pitäytyminen canary-merkkijonoissa).
Toiseksi, automatisoitua pisteytystä on hankala saada toimimaan oikein. Täydellisten testitapausten tulisi varmistaa oikea toiminnallisuus kokonaisuudessaan ja olla sekä riippumattomia tietyistä epäolennaisista toteutuksen yksityiskohdista että myös kestäviä oikotieratkaisuille. Nämä tehtävät ovat luonteeltaan monimutkaisia ja vaikeasti ratkaistavia. Näiden tehtävien selvittäminen vaati useita laajoja ihmisten suorittamia merkintäkampanjoita.
Olemme sisällyttäneet nämä havainnot viimeaikaiseen arviointityöhömme. Viime kuukausina olemme päättäneet raportoida tulokset SWE-Bench Pron julkisesta jaosta. Suosittelemme, että muut mallien kehittäjät tekevät samoin. SWE-bench Pro ei ole täydellinen, mutta empiirisesti näyttää siltä, että se kärsii vähemmän kontaminaatio-ongelmista. Kontaminaatioputkemme löysi joitakin kontaminaatiotapauksia, mutta nämä tapaukset olivat merkittävästi harvinaisempia ja vähemmän räikeitä kuin SWE-bench Verifiedin kohdalla, eikä yksikään malli pystynyt tuottamaan täydellistä sanatarkkaa gold patchia.
Jatkamme investointeja alkuperäisiin, yksityisesti laadittuihin vertailuarvoihin ja pyydämme toimialaa ja akateemista maailmaa tekemään samoin. GDPValissa alan asiantuntijat laativat tehtävät yksityisesti, mikä vähentää altistumisriskiä, ja ratkaisut arvioidaan kokonaisvaltaisesti koulutettujen arvioijien toimesta. Tämä lähestymistapa vaatii paljon resursseja, mutta se on yhä välttämättömämpi aitojen kykyparannusten mittaamiseksi.


