Зашто SWE-bench Verified више не мери граничне способности програмирања
SWE-bench Verified је све више контаминиран. Препоручујемо SWE-bench Pro.
Откако смо први пут објавили SWE-bench Verified у августу 2024, индустрија га широко користи за мерење напретка модела на задацима аутономног софтверског инжењерства. Након објављивања, SWE-bench Verified је пружао снажан сигнал напретка способности и постао стандардна метрика која се пријављује при објавама граничних модела. Праћење и предвиђање напретка ових способности такође је важан део OpenAI-овог Оквира спремности. Када смо првобитно направили Verified репер, покушали смо да решимо проблеме у оригиналној евалуацији који су одређене задатке чинили немогућим за извршавање у SWE-bench скупу података(отвара се у новом прозору).
После почетних великих искорака, напредак најсавременијих система на SWE-bench Verified је успорио, побољшавши се(отвара се у новом прозору) са 74,9% на 80,9% у последњих 6 месеци. То покреће питање: да ли преостали неуспеси одражавају ограничења модела или својства самог скупа података?
У новој анализи пронашли смо два велика проблема са Verified скупом који указују да репер више није погодан за мерење напретка у способностима аутономног софтверског инжењерства код граничних објава при данашњим нивоима перформанси:
- Тестови одбацују исправна решења: Ревидирали смо подскуп од 27,6% скупа података који модели често нису успевали да реше и открили да најмање 59,4% ревидираних проблема има мањкаве тест случајеве који одбацују функционално исправне предаје, упркос нашим великим напорима да ово побољшамо при почетном креирању SWE-bench Verified.
- Обука на решењима: Пошто велики гранични модели могу да усвајају информације из своје обуке, важно је да никада не буду обучавани на проблемима и решењима на којима се евалуирају. То је слично дељењу задатака и решења за предстојећи тест са ученицима пре теста — можда неће запамтити одговор, али ће ученици који су раније видели одговоре сигурно бити успешнији од оних који нису. SWE-bench проблеми потичу из депоа отвореног кода које многи добављачи модела користе у сврхе обуке. У нашој анализи открили смо да су сви гранични модели које смо тестирали могли да репродукују оригиналну исправку грешке коју је написао човек и која је коришћена као референтна основна истина, познату као златна закрпа, или дословне појединости из описа проблема за одређене задатке, што указује да су сви они током обуке видели бар неке од проблема и решења.
Такође смо нашли доказе да модели који су током обуке видели проблеме имају већу вероватноћу да успеју, јер имају додатне информације потребне да прођу недовољно прецизиране тестове.
То значи да побољшања на SWE-bench Verified више не одражавају смислена побољшања стварних способности модела за развој софтвера. Уместо тога, она све више одражавају колико је модел био изложен реперу током обуке. Зато смо престали да пријављујемо SWE-bench Verified резултате и препоручујемо да и други програмери модела ураде исто.
Градимо нове, неконтаминиране евалуације како бисмо боље пратили способности програмирања и мислимо да је ово важна област на коју шира истраживачка заједница треба да се усредсреди. Док их не будемо имали, OpenAI препоручује пријављивање резултата за SWE-bench Pro.
Оригинална SWE-bench(отвара се у новом прозору) евалуација објављена је 2023. Сваки проблем потиче из решеног GitHub issue-а у једном од 12 Python депоа отвореног кода и упарен је са одговарајућим захтевом за преглед измена (PR). Да би се утврдило да ли је измена кода коју је генерисао модел исправна, сваки проблем долази са два скупа тестова:
- Тестови који не пролазе на неизмењеној кодној бази, али пролазе ако је issue исправно решен
- Регресиони тестови који пролазе и пре и после исправке како би се осигурало да неповезана функционалност остане нетакнута.
Модел не види тестове. Он мора да произведе измену кода само на основу оригиналног текста issue-а и стања депоа пре исправке. Пролази проблем само ако сви тестови прођу након што се измена кода примени.
Пронашли смо многе проблеме са том евалуацијом који би могли довести до потцењивања способности модела.
- Неки јединични тестови били су претерано специфични или неусклађени са задатком, па су исправне исправке могле бити одбачене.
- Многи описи задатака били су недовољно прецизирани, што је могло довести до више ваљаних тумачења — док су тестови покривали само једно од њих.
- У зависности од подешавања окружења (на пример Linux наспрам Windows-а, или верзије Python-а), неки тестови су могли лажно да не прођу
Направили смо SWE-bench Verified 2024. да бисмо решили ове проблеме. Радили смо са стручним софтверским инжењерима на прегледу 1.699 SWE-bench проблема и филтрирању проблема који су имали ове недостатке. Сваки проблем су независно прегледала три стручњака. Овај процес прегледа резултирао је SWE-bench Verified-ом, курираним скупом од 500 проблема.
Иако је SWE-bench Verified велико побољшање у односу на почетну верзију, преостали проблеми и даље постоје. Спровели смо ревизију 138 SWE-bench Verified проблема које OpenAI o3 није доследно решавао током 64 независна покретања. Сваки случај су независно прегледала најмање шест искусних софтверских инжењера. Ако би стручњак означио проблем, додатни тим би га поново верификовао.
Открили смо да 59,4% од 138 проблема садржи значајне недостатке у дизајну тестова и/или опису проблема, што их чини изузетно тешким или немогућим за решавање чак и за најспособнији модел или човека.
- 35,5% ревидираних задатака има строге тест случајеве који намећу одређене појединости имплементације, чиме се поништавају многа функционално исправна решења; то називамо уски тест случајеви.
- 18,8% ревидираних задатака има тестове који проверавају додатну функционалност која није била наведена у опису проблема; то називамо широки тест случајеви.
- Преосталих 5,1% задатака имало је разне друге проблеме који се нису добро уклапали у ову таксономију.
Илустративан пример првог начина отказа је pylint-dev__pylint-4551(отвара се у новом прозору), где PR уводи нову функцију `get_annotation` као део укупног решења. Назив ове функције није поменут у опису проблема, али је тестови директно увозе. Иако неки модели могу интуитивно да направе такву функцију, строго говорећи није неопходно имплементирати функцију са баш овим називом да би се проблем исправно решио. Многа ваљана решења не пролазе тестове због грешака при увозу.
Опис проблема
Исечак PR теста
Неуспеси PR тестова (скраћено ради читљивости)
Пример прешироких тест случајева је sympy__sympy-18199(отвара се у новом прозору). Овај задатак потиче из PR-а који је решавао три различита проблема са функцијом `nthroot_mod`, конкретно #17373(отвара се у новом прозору), #17377(отвара се у новом прозору) и #18212(отвара се у новом прозору). Међутим, опис SWE-bench Verified задатка покрива само последњи проблем #18212(отвара се у новом прозору). То ствара неусклађеност: PR тестови покривају сва три проблема, док опис детаљно наводи само један. У нашим покретањима модели су често исправно имплементирали описану исправку, а затим падали на тестовима који покривају имплементацију за преостала два проблема.
Оригинални опис PR-а (са GitHub PR-а)
Опис проблема за #18212
Опис проблема за SWE-bench Verified задатак (преузето само из #18212):
SWE-bench Verified и депои (кодне базе и белешке о издањима) су и отвореног кода и широко се користе и разматрају, што програмерима модела отежава избегавање контаминације.
Прве знаке контаминације уочили смо на сопственим моделима. На пример, када је GPT‑5.2 решио 31 задатак за који смо утврдили да га је готово немогуће решити. У django__django-14725(отвара се у новом прозору) тестови захтевају одређени нови параметар `edit_only` који није изричито захтеван у опису проблема. Док решава проблем, GPT‑5.2 у свом ланцу мишљења показује да има информације о белешкама о издању које детаљно описују измене кодне базе и исправно идентификује да је параметар `edit_only` уведен у Django 4.1.
GPT‑5.2 CoT
Да бисмо проценили колико је контаминација значајна у ширем смислу, направили смо аутоматизовано red-teaming подешавање. За свако SWE-bench Verified питање, задали смо GPT‑5 да испитује GPT‑5.2‑Chat, Claude Opus 4.5 и Gemini 3 Flash Preview ради контаминације. Ови модели су изабрани да би се искључили модели резоновања, али признајемо да међу њима вероватно постоји немали јаз у способностима.
Да би испитивао контаминацију, GPT‑5 је добио: ID SWE-bench Verified задатка, опис, златну закрпу и PR тестове. Током 15 потеза дозволили смо GPT‑5 да мења системску/програмерску инструкцију, корисничку инструкцију, предунос асистента и различите стратегије елицирања. После сваког потеза, модел судија је означавао колико се нових информација специфичних за задатак појавило, а сваки одговор је био означен по тежини контаминације од „никаква“ до „јака“. GPT‑5 је могао да прилагођава своју стратегију на основу претходних потеза како би итеративно повратио појединости специфичне за задатак. За сваки пример јаке контаминације, са још једним судијом смо проверили да GPT‑5 није одао превише информација циљном моделу. На крају смо ручно прегледали „јаке“ примере који чине транскрипте у овом тексту.
Испод су примери јаке контаминације код различитих добављача модела.
Када му се да кратак исечак из описа задатка, GPT‑5.2 избацује тачну златну закрпу. Конкретно, зна тачан назив класе и метода, као и нови услов раног повратка `if username is None or password is None` који је уведен.
ID задатка: django__django-11451(отвара се у новом прозору)
Елицирање контаминације
Златна закрпа
Opus је у стању не само да се присети тачне функционалне измене од 4 реда коју је PR увео, заједно са конкретним именом датотеке и метода које је дотакао, већ и да дословно цитира inline коментар који је био део diff-а.
Елицирање контаминације
Златна закрпа
Gemini 3 Flash, када му се не дају никакве додатне информације о задатку осим ID-а, у стању је да дословно изнесе појединости из описа задатка и златне закрпе. То укључује нову regex формулу за валидацију корисничког имена и тачне бројеве линија за измену.
ID задатка: django__django-11099(отвара се у новом прозору)
Елицирање контаминације
Златна закрпа
Из ове ревизије SWE-bench Verified видимо две шире поуке за дизајн евалуација. Прво, репери засновани на јавно доступном материјалу носе ризик од контаминације, где изложеност подацима за обуку може неприметно надувати резултате. Ако се јавно прикупљени подаци користе у конструкцији репера, програмери модела треба да спроведу додатна тестирања на контаминацију. Репери, па чак и њихова решења, објављени јавно могу завршити у подацима за обуку. Потребан је додатан опрез и у начину на који се скупови података објављују (нпр. заштићени лозинком) и у филтрирању података за обуку (нпр. строго придржавање canary стрингова).
Друго, аутоматизовано бодовање је тешко исправно поставити; савршени тест случајеви треба у потпуности да верификују исправну функционалност, да буду и независни од одређених неважних појединости имплементације и отпорни на пречице у решењима. Ови проблеми су по природи сложени и тешки за решавање. Да бисмо их открили, било је потребно више опсежних кампања људског означавања.
Ове налазе смо уградили у наше недавне напоре у евалуацији. Последњих месеци одлучили смо да пријављујемо резултате из јавног дела SWE-Bench Pro. Препоручујемо и другим програмерима модела да ураде исто. SWE-bench Pro није савршен, али емпиријски делује да мање пати од проблема контаминације. Наш цевовод за контаминацију пронашао је неке случајеве контаминације, али су они били знатно ређи и мање еклатантни него код SWE-bench Verified, и ниједан модел није могао да произведе потпуну дословну златну закрпу.
Наставићемо да улажемо у оригиналне, приватно ауторисане репере и тражимо помоћ од индустрије и академске заједнице да учине исто. У GDPVal, задатке приватно пишу доменски стручњаци, што смањује ризик од изложености, а решења холистички оцењују обучени рецензенти. Овај приступ захтева много ресурса, али је све неопходнији за мерење стварних побољшања способности.


