Që kur e publikuam për herë të parë SWE-bench Verified në gusht 2024, industria e ka përdorur gjerësisht për të matur përparimin e modeleve në detyra autonome të inxhinierisë softuerike. Pas publikimit të tij, SWE-bench Verified ofroi një sinjal të fortë të përparimit të aftësive dhe u bë një metrikë standarde e raportuar në publikimet e modeleve avangardë. Ndjekja dhe parashikimi i progresit të këtyre aftësive është gjithashtu një pjesë e rëndësishme e Preparedness Framework të OpenAI. Kur e krijuam fillimisht standardin Verified, u përpoqëm të zgjidhnim problemet në vlerësimin origjinal që i bënin disa detyra të pamundura për t’u përmbushur në SWE-bench dataset(hapet në një dritare të re).
Pas kërcimeve fillestare, përparimi i teknologjisë së fundit në SWE-bench Verified është ngadalësuar, duke u përmirësuar(hapet në një dritare të re) nga 74,9% në 80,9% në 6 muajt e fundit. Kjo ngre pyetjen: a pasqyrojnë dështimet e mbetura kufizimet e modelit apo vetitë e vetë datasetit?
Në një analizë të re, gjetëm dy probleme madhore me setin Verified që tregojnë se standardi i referencës nuk është më i përshtatshëm për matjen e progresit në aftësitë e inxhinierisë softuerike autonome për qarkullime avangardë në nivelet e performancës së sotme:
- Testet refuzojnë zgjidhje të sakta: Ne audituam një nënbashkësi prej 27,6% të dataset-it që modelet shpesh nuk arrinin ta zgjidhnin dhe zbuluam se të paktën 59,4% e problemeve të audituara kanë raste testimi me të meta që refuzojnë dorëzime funksionalisht të sakta, pavarësisht përpjekjeve tona më të mira për ta përmirësuar këtë gjatë krijimit fillestar të SWE-bench Verified.
- Trajnimi mbi zgjidhjet: Meqenëse modelet e mëdha avangardë mund të mësojnë informacion nga trajnimi i tyre, është e rëndësishme që ato të mos trajnohen kurrë mbi problemet dhe zgjidhjet mbi të cilat vlerësohen. Kjo është e ngjashme me ndarjen e problemeve dhe zgjidhjeve për një test të ardhshëm me studentët para testit - ata mund të mos e mësojnë përmendësh përgjigjen, por studentët që i kanë parë përgjigjet më parë sigurisht do të bëjnë më mirë se ata që nuk i kanë parë. Problemet e SWE-bench merren nga depo open-source që shumë ofrues modelesh i përdorin për qëllime trajnimi. Në analizën tonë zbuluam se të gjitha modelet avangardë që testuam ishin në gjendje të riprodhonin rregullimin origjinal të gabimit, të shkruar nga njeriu, të përdorur si referencë e së vërtetës bazë, i njohur si korrigjimi i artë, ose specifikat fjalë për fjalë të deklaratës së problemit për detyra të caktuara, duke treguar se të gjitha ato kanë parë të paktën disa nga problemet dhe zgjidhjet gjatë trajnimit.
Gjetëm gjithashtu prova se modelet që i kanë parë problemet gjatë trajnimit kanë më shumë gjasa të kenë sukses, sepse kanë informacion shtesë të nevojshëm për të kaluar testet e papërcaktuara mirë.
Kjo do të thotë se përmirësimet në SWE-bench Verified nuk pasqyrojnë më përmirësime domethënëse në aftësitë e modeleve për zhvillimin e softuerit në botën reale. Në vend të kësaj, ato pasqyrojnë gjithnjë e më shumë se sa shumë ishte ekspozuar modeli ndaj benchmark-ut në kohën e trajnimit. Kjo është arsyeja pse kemi ndaluar raportimin e rezultateve të SWE-bench Verified dhe rekomandojmë që zhvilluesit e tjerë të model ta bëjnë gjithashtu.
Ne po ndërtojmë vlerësime të reja, të pakontaminuara për të gjurmuar më mirë aftësitë e kodimit, dhe mendojmë se kjo është një fushë e rëndësishme ku duhet të përqendrohemi për komunitetin më të gjerë kërkimor. Derisa t’i kemi ato, OpenAI rekomandon raportimin e rezultateve për SWE-bench Pro.
Vlerësimi origjinal SWE-bench(hapet në një dritare të re) u publikua në 2023. Çdo problem merret nga një çështje e zgjidhur në GitHub në një nga 12 depot me burim të hapur Python dhe shoqërohet me pull request përkatës (PR). Për të përcaktuar nëse një ndryshim i kodit i gjeneruar nga modeli është i saktë, çdo problem vjen me dy grupe testesh:
- Teste që dështojnë në bazën e kodit të pamodifikuar, por kalojnë nëse problemi rregullohet saktë
- Teste të regresionit që kalojnë si para ashtu edhe pas rregullimit për të siguruar që funksionaliteti i palidhur të mbetet i paprekur.
Modeli nuk i sheh testet. Duhet të prodhojë një ndryshim kodi duke pasur vetëm tekstin origjinal të çështjes dhe gjendjen e depos përpara rregullimit. Ai e kalon një problem vetëm nëse të gjitha testet kalojnë pasi të aplikohet ndryshimi i kodit.
Gjetëm shumë probleme me atë vlerësim që mund të çojnë në nënraportimin e aftësive të modeleve.
- Disa teste të njësisë ishin tepër specifike ose të mospërputhura me detyrën, ndaj rregullimet e sakta mund të refuzoheshin.
- Shumë deklarata detyrash ishin të nënspecifikuara, gjë që mund të çonte në interpretime të shumta të vlefshme - ndërsa testet mbulonin vetëm një të caktuar.
- Në varësi të konfigurimit të mjedisit (për shembull Linux vs Windows, ose versioni i python), disa teste mund të dështojnë gabimisht
Ne krijuam SWE-bench Verified në vitin 2024 për të adresuar këto çështje. Ne punuam me inxhinierë softuerikë ekspertë për të shqyrtuar 1699 probleme të SWE-bench dhe për të filtruar problemet që kishin këto çështje. Çdo problem u shqyrtua nga tre ekspertë të pavarur. Ky proces rishikimi rezultoi në SWE-bench Verified, një grup të përzgjedhur prej 500 problemesh.
Ndërsa SWE-bench Verified është një përmirësim i madh krahasuar me versionin fillestar, mbeten disa çështje të pazgjidhura. Ne kryem një auditim të 138 problemeve të SWE-bench Verified që OpenAI o3 nuk i zgjidhi në mënyrë të qëndrueshme gjatë 64 ekzekutimeve të pavarura. Çdo rast u rishikua në mënyrë të pavarur nga të paktën gjashtë inxhinierë me përvojë të softuerit. Nëse një ekspert sinjalizonte një problem, ai rishikohej nga një ekip shtesë.
Ne zbuluam se 59,4% e 138 problemeve përmbanin çështje thelbësore në dizajnin e testit dhe/ose përshkrimin e problemit, duke i bërë ato jashtëzakonisht të vështira ose të pamundura për t'u zgjidhur edhe për modelin ose njeriun më të aftë.
- 35,5% e detyrave të audituara kanë raste të rrepta testimi që imponojnë detaje specifike të implementimit, duke bërë të pavlefshme shumë dorëzime funksionalisht të sakta, të cilat i quajmë raste të ngushta testimi.
- 18,8% e detyrave të audituara kanë teste që kontrollojnë për funksionalitet shtesë që nuk ishte specifikuar në përshkrimin e problemit, të cilat i quajmë raste të gjera testimi.
- 5,1% i mbetur e detyrave kishte probleme të ndryshme që nuk ishin grupuar mirë me këtë taksonomi.
Një shembull ilustrues i mënyrës së parë të dështimit është pylint-dev__pylint-4551(hapet në një dritare të re), ku PR prezanton një funksion të ri "get_annotation" si pjesë e zgjidhjes së përgjithshme. Ky emër funksioni nuk përmendet në përshkrimin e problemit, por importohet drejtpërdrejt nga testet. Ndërsa disa modele mund të intuitojnë të krijojnë një funksion të tillë, nuk është rreptësisht e nevojshme të zbatohet një funksion me këtë emër specifik për ta trajtuar saktë problemin. Shumë zgjidhje të vlefshme dështojnë në testet për shkak të gabimeve të importimit.
Përshkrimi i problemit
Fragment testimi PR
Dështime të testeve të PR (të shkurtuara për lexueshmëri)
Një shembull i rasteve të testimit tepër të gjera është sympy__sympy-18199(hapet në një dritare të re). Kjo detyrë u mor nga një PR që trajtoi tre çështje të veçanta me funksionin "nthroot_mod", konkretisht #17373(hapet në një dritare të re), #17377(hapet në një dritare të re), dhe #18212(hapet në një dritare të re). Megjithatë, përshkrimi për detyrën SWE-bench Verified mbulon vetëm çështjen përfundimtare #18212(hapet në një dritare të re). Kjo krijon një mospërputhje: testet e PR mbulojnë të tre çështjet, ndërsa përshkrimi përfshin vetëm një. Në ekzekutimet tona, modelet shpesh zbatojnë saktë korrigjimin e përshkruar dhe më pas dështojnë në testet që mbulojnë zbatimin për dy çështjet e tjera.
Përshkrimi origjinal i PR (nga GitHub PR)
Përshkrimi i problemit për #18212
Përshkrimi i problemit për detyrën SWE-bench Verified (marrë vetëm nga #18212):
SWE-bench Verified dhe depo (bazat e kodit dhe shënimet e publikimit) janë të dyja open-source dhe gjerësisht të përdorura dhe të diskutuara, gjë që e bën të vështirë shmangien e kontaminimit për zhvilluesit e model.
Ne fillimisht hasëm shenja të kontaminimit në modelet tona. Për shembull, kur GPT‑5.2 zgjidhi 31 detyra që i kishim identifikuar si pothuajse të pamundura për t’u zgjidhur. Në django__django-14725(hapet në një dritare të re) testet kërkojnë një parametër të ri specifik "edit_only" i cili nuk kërkohet në mënyrë të qartë nga deklarata e problemit. Gjatë zgjidhjes së problemit, GPT‑5.2 tregon në zinxhir mendimi se ka informacion rreth shënimeve të publikimit që detajojnë ndryshimet në bazën e kodit, dhe identifikon saktë se parametri "edit_only" u prezantua në Django 4.1.
GPT‑5.2 CoT
Për të vlerësuar sa i rëndësishëm është kontaminimi në një kuptim më të gjerë, krijuam një konfigurim të automatizuar për simulim sulmesh. Për çdo pyetje të SWE-bench Verified, i ngarkuam GPT‑5 detyrën për të testuar një GPT‑5.2‑Chat. Claude Opus 4.5 dhe Gemini 3 Flash Preview për të hetuar kontaminimin. Këto modele u zgjodhën për të përjashtuar modelet e arsyetimit, por ne pranojmë se ka të ngjarë të ekzistojë një hendek i rëndësishëm i aftësive midis tyre.
Për të hetuar kontaminimin, GPT‑5 mori: ID, përshkrimin, patch-in gold dhe testet PR të detyrës SWE-bench Verified. Gjatë mbi 15 radhëve, lejuam që GPT‑5 të ndryshonte kërkesën e sistemit/zhvilluesit, kërkesën e përdoruesit dhe paraplotësimin e asistentit dhe strategji të ndryshme nxitjeje. Pas çdo hapi, një model gjykatës etiketoi sa shumë informacion të ri specifik për detyrën u shfaq dhe çdo përgjigje u etiketua për ashpërsinë e kontaminimit nga "none" në "strong". GPT‑5 u lejua të përshtaste strategjinë e vet bazuar në kthesat e mëparshme për të rikuperuar në mënyrë iterative detaje specifike për detyrën. Për çdo shembull të kontaminimit të fortë, verifikuam me një gjyqtar tjetër që GPT‑5 të mos kishte rrjedhur shumë informacion te modeli i synuar. Së fundi, më pas shqyrtuam manualisht shembujt “strong” që përbëjnë transkriptet në këtë postim.
Më poshtë janë shembuj të kontaminimit të rëndë nëpër ofrues të ndryshëm modelesh.
Duke pasur një fragment të shkurtër nga përshkrimi i detyrës, GPT‑5.2 nxjerr saktësisht përmirësimin e artë. Në veçanti, ai e di emrin e saktë të klasës dhe metodës, si dhe kushtin e ri të kthimit të hershëm "if username is None or password is None" që është prezantuar.
ID e detyrës: django__django-11451(hapet në një dritare të re)
Nxjerrja e kontaminimit
Përditësim i artë
Opus është në gjendje jo vetëm të rikujtojë ndryshimin funksional të saktë me 4 rreshta që PR prezantoi, së bashku me emrin specifik të skedarit dhe metodën që preku, por gjithashtu citon fjalë për fjalë komentin inline që ishte pjesë e ndryshimit.
ID e detyrës: astropy__astropy-13236(hapet në një dritare të re)
Nxjerrja e kontaminimit
Përditësim i artë
Gemini 3 Flash, kur nuk i jepet asnjë informacion i mëtejshëm lidhur me detyrën përveç ID, është në gjendje të nxjerrë fjalë për fjalë detaje nga përshkrimi i detyrës dhe patch-i gold. Kjo përfshin formulën e re regex për validimin e emrit të përdoruesit dhe numrat e saktë të rreshtave për ndryshimin.
ID e detyrës: django__django-11099(hapet në një dritare të re)
Nxjerrja e kontaminimit
Përditësim i artë
Nga ky auditim i SWE-bench Verified, shohim dy mësime më të gjera për dizajnin e vlerësimit. Së pari, benchmark-et e marra nga materiale të disponueshme publikisht mbartin rrezik kontaminimi, ku ekspozimi ndaj të dhënave të trajnimit mund të rrisë në heshtje rezultatet. Nëse të dhënat e kërkuara publikisht përdoren në ndërtimin e standardit, zhvilluesit e modelit duhet të kryejnë teste shtesë për ndotje. Benchmark-et, dhe madje edhe zgjidhjet e tyre, të postuara publikisht mund të përfundojnë në të dhënat e trajnimit. Duhet treguar kujdes i veçantë si në mënyrën se si postohen grupet e të dhënave (i.e. i mbrojtur me fjalëkalim) dhe filtrimi i të dhënave të trajnimit (d.m.th. përmbajtje strikte ndaj canary strings).
Së dyti, vlerësimi i automatizuar është i ndërlikuar për t’u bërë siç duhet; rastet e përsosura të testimit duhet të verifikojnë plotësisht funksionalitetin e saktë, duke qenë si agnostike ndaj detajeve specifike të parëndësishme të implementimit ashtu edhe të qëndrueshme ndaj zgjidhjeve të shkurtra. Këto probleme janë në thelb komplekse dhe të vështira për t'u zgjidhur. Kapja e këtyre problemeve kërkoi fushata të shumta të gjera etiketimi njerëzor.
Ne i kemi përfshirë këto gjetje në përpjekjet tona të fundit të vlerësimit. Në muajt e fundit kemi zgjedhur të raportojmë rezultatet nga ndarja publike e SWE-Bench Pro. Ne rekomandojmë që zhvilluesit e tjerë të modeleve të bëjnë të njëjtën gjë. SWE-bench Pro nuk është i përsosur, por empirikisht duket se vuan më pak nga problemet e kontaminimit. Procesi ynë i zbulimit të ndotjes gjeti disa raste ndotjeje, por këto raste ishin dukshëm më të rralla dhe më pak të rënda se SWE-bench Verified, dhe asnjë model nuk ishte në gjendje të prodhonte një patch të artë të plotë fjalë për fjalë.
Ne do të vazhdojmë të investojmë në standarde krahasimi origjinale, të hartuara privatisht, dhe do të kërkojmë ndihmë nga industria dhe akademia për të bërë të njëjtën gjë. Në GDPVal, detyrat hartohen privatisht nga ekspertë të domenit, duke ulur rrezikun e ekspozimit, dhe zgjidhjet vlerësohen në mënyrë holistike nga vlerësues të trajnuar. Kjo qasje kërkon shumë burime, por është gjithnjë e më e nevojshme për të matur përmirësime të vërteta të aftësive.


