Preskočite na glavno vsebino
OpenAI

8. julij 2026

RaziskaveObjava

Ločevanje signala od šuma pri evalvacijah kodiranja

S podrobno revizijo smo v orodju SWE-Bench Pro odkrili pogoste težave z nalogami in ocenjujemo, da je približno 30 % nalog neustreznih.

Nalaganje …

Natančno merjenje zmogljivosti naših modelov je pomembno za premišljene odločitve o uvedbi in varnosti, tudi odločitve na ravni okvira pripravljenosti(odpre se v novem oknu) OpenAI. Ob vsaki izdaji modela poročamo o rezultatih na različnih zunanjih in notranjih preizkusnih merilih, da spremljamo napredek modelov. Kadar imajo evalvacije pomanjkljivosti, ki vplivajo na rezultate, lahko ustvarijo napačno razumevanje zmogljivosti, izkrivijo varnostne utemeljitve in vplivajo na raziskovalne prioritete.

Nedavno smo raziskali, kako je imelo eno najpogosteje uporabljenih preizkusnih meril za kodiranje, SWE-bench Verified, temeljne težave z zasnovo in kontaminacijo, ter ugotovili, da evalvacija ne daje več smiselnega signala o zmogljivostih razvoja programske opreme. Takrat smo širšo skupnost spodbudili k prehodu na orodje SWE-Bench Pro.

SWE-Bench Pro(odpre se v novem oknu) je bil zasnovan kot izboljšava orodja SWE-bench Verified, saj modele preizkuša v daljših časovnih obdobjih in na bolj realističnih nalogah kodiranja, da bi bolje spremljal zmogljivosti agentskega kodiranja. Tako kot pri orodju SWE-bench Verified so naloge programsko pridobljene iz zgodovine sprememb funkcij v naboru javnih in zasebnih repozitorijev. Modeli morajo implementirati rešitev, ki uspešno prestane nove teste za funkcijo, brez vplivanja na obstoječo funkcionalnost. V javnem sklopu s 731 nalogami so se prelomni modeli v osmih mesecih izboljšali s stopnje uspešnosti 23,3 % na 80,3 %.

Od takrat smo podobno revizijo izvedli tudi za orodje SWE-Bench Pro in nabor podatkov pregledali s cevovodom za analizo podatkovnih točk. Cevovod je pregledal poskuse modelov pri nalogi, metapodatke naloge in sledi napak, da bi označil verjetne pomanjkljivosti evalvacije. Vsaka označena naloga je bila nato ocenjena z več prehodi preiskovalnih agentov in neodvisno pregledana s strani petih izkušenih programskih inženirjev, nesoglasja pa so bila posredovana v nadaljnjo preiskavo.

V znatnem delu nabora podatkov najdemo dokaze o resnih težavah. Naš cevovod za analizo podatkovnih točk je označil 200 (27,4 %) neustreznih nalog, kampanja človeškega označevanja pa jih je odkrila 249 (34,1 %).

Težave so večinoma spadale v štiri kategorije:

  • Prestrogi testi1 uveljavljajo določene implementacijske podrobnosti, ki niso navedene v pozivu, zato razveljavijo številne funkcionalno pravilne oddaje.
  • Premalo določeni pozivi2 izpustijo zahteve, ki jih uveljavljajo skriti testi in na njihovi podlagi ni mogoče izpeljati razumnih zaključkov.
  • Testi z nizko pokritostjo premalo preverjajo zahtevano funkcijo, zato lahko nepopolni popravki prestanejo preizkus.
  • Zavajajoč poziv modele usmeri k napačnemu vedenju ali je v nasprotju s tem, kar zahtevajo testi.

Naše ugotovitve kažejo, kako težko je oblikovati zahtevna, a poštena preizkusna merila, in kako vse uporabnejši so agenti za razširljivo preverjanje kakovosti podatkov. Glede na te rezultate ocenjujemo, da je približno 30 % nalog SWE-bench Pro neustreznih, razvijalcem modelov pa svetujemo, naj rezultate skrbno preučijo.

Metodologija

Naš cilj je zagotoviti, da neuspehi pri nalogah odražajo resnične omejitve modela, uspehi pa popolne in veljavne rešitve glede na zahteve v pozivu. Za preverjanje kakovosti podatkov, uporabljenih v evalvaciji, smo ustvarili cevovod za zagotavljanje kakovosti, ki ocenjuje, ali vsaka podatkovna točka natančno odraža zmogljivosti modela.

Potek zagotavljanja kakovosti, ki združuje avtomatizirano preverjanje in človeški pregled za oceno kakovosti nalog.

Začetni cevovod kakovosti podatkov označi težave za pregled. To potrdimo z globljo revizijo označenih nalog s pomočjo agentov in kampanjo človeškega označevanja z izkušenimi inženirji.

Začetni avtomatizirani filter pregleda navodila, dana modelu, poskuse modela, da reši nalogo, in teste, uporabljene za ocenjevanje teh poskusov, ter označi verjetno neustrezne ali problematične primere. Ta filter je označil 286 potencialno neustreznih nalog. Nato smo ta podnabor podrobneje pregledali na dva načina: s pregledom z agenti pod človeškim nadzorom, ki izvaja obsežna preverjanja s preiskovalnimi agenti in končno človeško presojo, ter s kampanjo človeškega označevanja z izkušenimi razvijalci programske opreme.

Pregled z agenti pod človeškim nadzorom

Vsaka označena težava je revidirana s preiskovalnimi agenti na osnovi Codexa, ki so dobili dostop do repozitorija naloge in okolja. To jim pomaga razlikovati razumno dvoumnost naloge, ki jo je pogosto mogoče razrešiti s preučevanjem bližnje kode in konvencij repozitorija, od prave premalo določenosti. Agent lahko zaganja teste, pregleduje datoteke v repozitoriju ter raziskuje poskuse modelov in njihove pogoste načine odpovedi pri nalogi. Po več neodvisnih ponovitvah teh globljih revizij je raziskovalec pregledal povzetke, sprejel končno presojo in označil verjetne težave.

Kampanja človeškega označevanja

Vzporedno smo na označenem podnaboru izvedli kampanjo človeškega označevanja. Sodelovali smo z izkušenimi programskimi inženirji, ki so bili pred pregledom nalog usposobljeni za cilje preizkusnega merila, taksonomijo težav in mejne primere. Vsako nalogo je pregledalo pet inženirjev.

Pregledovalci so neodvisno presojo oblikovali na podlagi vidnega opisa problema, testnih primerov in referenčne rešitve dejanskega stanja (znane kot »zlati popravek«), preden so kot podporni kontekst uporabili analizo cevovoda ali zapis pogovora. Pregledovalci so nato na podlagi konkretnih dokazov dodelili oznako in oceno resnosti, nesoglasja ali primere z nizko stopnjo zaupanja pa posredovali v nadaljnji pregled.

Človeški pregledovalci so naloge kot neustrezne označevali pogosteje kot preiskovalni agenti. Med obema potema pregleda je bilo tudi nekaj nesoglasij glede kategorij, vendar pri nobeni označeni nalogi »ni neustrezna« ni bila najpogostejša človeška oznaka. Pri kategorijah, ki jih je označil cevovod agentov, so se presoje pregledovalcev prekrivale v 74 % primerov.

V primerjavi s cevovodom agentov so človeški pregledovalci za nalogo pogosteje izbrali tudi več oznak, kar kaže, da so ugotovili, da so naloge neustrezne na več načinov ali pa jih ni bilo mogoče jasno uvrstiti v eno samo kategorijo. To nakazuje, da je cevovod agentov in pregledovalcev privedel do konservativnega označevanja: zajel je iste splošne načine odpovedi, ki so jih prepoznali ljudje, hkrati pa podcenil primere, v katerih so pregledovalci opazili dodatne ali prekrivajoče se težave. Največja razlika je bila pri testih z nizko pokritostjo, ki so jih ljudje izbrali kot najpogostejšo težavo pri 9,4 % preizkusnega merila, v primerjavi s 4,1 % iz cevovoda agentov.

Načini odpovedi

V več primerih je poziv naloge predpisal določeno implementacijo, skriti testni primeri pa so pričakovali drugačno vedenje.

This task involves normalizing table-of-contents entries and rendering them back to Markdown via TocEntry.to_markdown(). The task prompt specifies serialization down to character-level spacing, describing how exact spacing and pipes are enforced, and gives examples such as " | Chapter 1 | 1" and "** | Chapter 1 | 1":

Brez

1
"[space]| Chapter 1 | 1"
2
"**[space]| Chapter 1 | 1"
3
"[space]| Just title | "

The hidden test_to_markdown assertions instead require " | Chapter 1 | 1" and "** | Chapter 1 | 1":

Brez

1
"[space][space]| Chapter 1 | 1"
2
"**[space][space]| Chapter 1 | 1"
3
"[space][space]| Just title | "

There are two leading spaces in the hidden tests, but the example given to the model only contains one leading space. If a model rightly follows the given prompt, that one-character difference would fail the hidden test cases and the task would be marked incorrect.

Razprava

Težave, ki smo jih prepoznali, skupaj s podobnimi primeri v orodju SWE-bench Verified poudarjajo pomen strogega preverjanja preizkusnih meril. Težave in zahteve za združitev iz odprtokodnih repozitorijev so bile prvotno ustvarjene za človeško sodelovanje, pogosto skozi dolge izmenjave med vzdrževalci in avtorji prispevkov. Zato se opisi problemov, združena koda in testi enot ne uvrščajo vedno v čiste, izolirane naloge za zanesljivo ocenjevanje modelov. Zlasti testi, vključeni v zahteve za združitev, so lahko prestrogi, ker so napisani za preverjanje določene spremembe, ne pa za opredelitev standarda za rešitev naloge, ki bi bil neodvisen od implementacije.

Hkrati je pomanjkljivosti evalvacij danes lažje odkriti, kot bi jih bilo še pred kratkim. Ko se zmogljivosti modelov izboljšujejo, lahko te modele uporabimo za veliko globlji in doslednejši pregled pozivov, testov, popravkov, sledi in mejnih primerov, kar pomaga razkriti težave preizkusnih meril, ki jih je bilo prej drago ali nepraktično odkrivati v velikem obsegu.

Upamo, da bo širša skupnost za evalvacije razvila nova preizkusna merila, ki jih bodo izkušeni razvijalci programske opreme zasnovali posebej za preizkušanje zmogljivosti modelov. Tak pristop lahko ohrani visoko zahtevnost in realizem, ki ju želimo meriti pri zmogljivostih modelov, ter omogoči boljši človeški nadzor skozi celoten proces. Glede na težave, odkrite v tej analizi, umikamo svoje prejšnje priporočilo za uvedbo orodja SWE-Bench Pro.

Navsezadnje mora evalvacija prek preizkusnih meril zagotavljati smiseln signal: težko jih je izigrati, lahko jim je zaupati in resnično odražajo zmogljivost ali usklajenost modela. Ker ti rezultati vplivajo na odločitve OpenAI-ja o uvedbi in varnosti, morajo biti evalvacije, ki jih spremljamo, veljavne in informativne.

Avtor

OpenAI

Opombe

  1. 1

    To kategorijo smo prej imenovali ozki testi.

  2. 2

    To kategorijo smo prej imenovali široki testi.