Зошто SWE-bench Verified повеќе не ги мери граничните способности за кодирање
SWE-bench Verified е сè повеќе контаминиран. Го препорачуваме SWE-bench Pro.
Откако првпат го објавивме SWE-bench Verified во август 2024, индустријата широко го користи за да го мери напредокот на моделите во автономни задачи за софтверско инженерство. По неговото објавување, SWE-bench Verified обезбеди силен сигнал за напредокот на способностите и стана стандардна метрика што се пријавува во објавувањата на гранични модели. Следењето и предвидувањето на напредокот на овие способности е исто така важен дел од Рамка за подготвеност на OpenAI. Кога првично го создадовме Verified реперот, се обидовме да ги решиме проблемите во оригиналната евалуација што ги правеа одредени задачи невозможни за извршување во SWE-bench dataset(се отвора во нов прозорец).
По почетните скокови, најсовремениот напредок на SWE-bench Verified се забави, подобрувајќи(се отвора во нов прозорец) се од 74,9 % на 80,9 % во последните 6 месеци. Ова го покренува прашањето: дали преостанатите неуспеси ги одразуваат ограничувањата на моделот или својствата на самиот сет на податоци?
Во нова анализа, откривме два големи проблеми со Verified сетот што укажуваат дека реперот повеќе не е соодветен за мерење на напредокот во автономните способности за софтверско инженерство за гранични лансирања на денешните нивоа на перформанси:
- Тестовите отфрлаат точни решенија: Ревидиравме подзбир од 27.6% од збирот податоци што моделите често не успеваа да го решат и откривме дека најмалку 59.4% од ревидираните проблеми имаат неисправни тест случаи што отфрлаат функционално точни поднесоци, и покрај нашите најдобри напори да го подобриме ова при почетното создавање на SWE-bench Verified.
- Обука на решенија: Бидејќи големите гранични модели можат да научат информации од нивната обука, важно е тие никогаш да не се обучуваат на проблемите и решенијата на кои се евалуираат. Ова е слично на тоа да им споделиш на учениците проблеми и решенија за претстоен тест пред тестот - можеби нема да го запаметат одговорот, но учениците што ги виделе одговорите претходно сигурно ќе се снајдат подобро од оние што не ги виделе. Проблемите на SWE-bench се преземени од open-source репозиториуми што многу даватели на модели ги користат за цели на обука. Во нашата анализа откривме дека сите гранични модели што ги тестиравме беа во можност да ја репродуцираат оригиналната, од човек напишана поправка на грешка што се користеше како референца за точната основа, позната како златна закрпа, или дословните специфики од изјавата за проблемот за одредени задачи, што укажува дека сите тие виделе барем дел од проблемите и решенијата за време на обуката.
Исто така, најдовме докази дека моделите што имале проблеми за време на обуката имаат поголема веројатност да успеат, бидејќи имаат дополнителни информации потребни за да ги положат недоволно специфицираните тестови.
Ова значи дека подобрувањата на SWE-bench Verified повеќе не одразуваат значајни подобрувања во реалните способности на моделите за развој на софтвер. Наместо тоа, тие сè повеќе одразуваат колку моделот бил изложен на реперот за време на обуката. Ова е причината зошто престанавме да известуваме за резултатите на SWE-bench Verified, и препорачуваме и другите програмери на модели да го направат истото.
Градиме нови, неконтаминирани евалуации за подобро следење на способностите за кодирање, и сметаме дека ова е важна област на која треба да се фокусираме за пошироката истражувачка заедница. Додека не ги имаме тие, OpenAI препорачува да се пријавуваат резултати за SWE-bench Pro.
Оригиналната евалуација SWE-bench(се отвора во нов прозорец) беше објавена во 2023. Секој проблем е преземен од решено GitHub прашање во еден од 12 Python репозиториуми со отворен код и спарен со соодветниот pull request (PR). За да се утврди дали кодната промена генерирана од модел е точна, секој проблем доаѓа со два сета тестови:
- Тестови кои не успеваат на немодифицираната кодна база, но успеваат ако проблемот е правилно поправен
- Регресиски тестови што поминуваат и пред и по поправката за да се осигури дека неповрзаната функционалност останува недопрена.
Моделот не ги гледа тестовите. Треба да направи промена во кодот, со оглед на тоа што се дадени само оригиналниот текст на проблемот и состојбата на репозиториумот пред поправката. Поминува проблем само ако поминат сите тестови откако ќе се примени промената на кодот.
Пронајдовме многу проблеми со таа евалуација што би можеле да доведат до недоволно известување за способноста на моделите.
- Некои едноставни тестови беа премногу специфични или неусогласени со задачата, па точните поправки можеа да бидат одбиени.н
- Многу изјави за задачи беа недоволно дефинирани, што може да доведе до повеќе валидни толкувања - додека тестовите опфаќаа само едно конкретно.
- Во зависност од поставувањето на околината (на пример 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
За да процениме колку е значајна контаминацијата пошироко, создадовме автоматизирана поставка за тестирање на отпорноста. За секое прашање на 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 го дава точниот gold patch. Особено, ги знае точните имиња на класата и методот, и новиот услов за рано враќање `if username is None or password is None` што се воведува.
Идентификатор на задача: django__django-11451(се отвора во нов прозорец)
Извлекување контаминација
Златна закрпа
Opus е способен не само да ја потсети точната функционална промена од 4 линии што ја воведе PR, заедно со конкретното име на датотеката и методот што ги допре, туку и дословно го цитира вметнатиот коментар што беше дел од diff.
Идентификатор на задача: astropy__astropy-13236(се отвора во нов прозорец)
Извлекување контаминација
Златна закрпа
Gemini 3 Flash, кога не му се дадени дополнителни информации во врска со задачата освен ID (идентификациски број), е способен да изведе дословни детали од описот на задачата и златната закрпа. Ова ја вклучува новата regex формула за валидација на корисничко име и точните броеви на линии за промената.
Идентификатор на задача: django__django-11099(се отвора во нов прозорец)
Извлекување контаминација
Златна закрпа
Од оваа ревизија на SWE-bench Verified, гледаме две пошироки поуки за дизајнот на евалуацијата. Прво, реперите добиени од јавно достапни материјали носат ризик од контаминација, при што изложеноста на податоците за обука може тивко да ги надуе резултатите. Ако јавно пребарувани податоци се користат при конструирање на репер, програмерите на моделот треба да спроведат дополнителни тестови за контаминација. Одредниците, па дури и нивните решенија, објавени јавно може да завршат во податоците за обука. Треба да се внимава дополнително и на тоа како се објавуваат збирките на податоци (i.e. заштитено со лозинка) и филтрирање на податоците за обука (т.е. строго придржување до canary низи).
Второ, автоматизираното оценување е тешко да се направи како што треба; совршените тест случаи треба целосно да ја потврдат точната функционалност, притоа да бидат и агностични кон конкретни неважни детали на имплементацијата и исто така робусни на решенија со кратенки. Овие проблеми се инхерентно сложени и тешки за решавање. Откривањето на овие проблеми бараше повеќекратни обемни кампањи за човечко означување.
Ги вклучивме овие наоди во нашите неодамнешни напори за евалуација. Во последните месеци избравме да известуваме за резултатите од јавното разделување на SWE-Bench Pro. Препорачуваме и другите програмери на модели да го направат истото. SWE-bench Pro не е совршен, но емпириски се чини дека има помалку проблеми со контаминација. Нашиот процес за откривање контаминација пронајде некои случаи на контаминација, но овие случаи беа значително поретки и помалку сериозни од SWE-bench Verified, и ниеден модел не беше во можност да произведе целосна дословна златна закрпа.
Ќе продолжиме да инвестираме во оригинални, приватно авторски репери и ќе побараме помош од индустријата и академијата да го направат истото. Во GDPVal, задачите се приватно авторирани од експерти од доменот, со што се намалува ризикот од изложеност, а решенијата се оценуваат холистички од обучени рецензенти. Овој пристап е ресурсно интензивен, но станува сè понеопходен за да се мерат вистинските подобрувања на способностите.


