Så läser du AI-benchmarks för kodning och undviker att utse en pappersvinnare
MarkdownVad HumanEval och SWE-bench mäter, och hur du bör ta hänsyn till agentens wrapper, villkor, uppgifternas aktualitet, variation och kostnad när du läser AI-rankningar för kodning.
Läs hela artikeln
Kort sagt: siffran ”löser 76 procent av uppgifterna” säger nästan ingenting i sig. Det viktiga är vilken uppgiftsmängd som gav resultatet, vilken modell och agentens wrapper som räknades tillsammans, om uppgifterna är nya eller gamla och vad det kostade. Utan de villkoren duger procentsatsen som reklambanner, men inte för att välja ett verktyg.
Nu ska jag förklara på ett enkelt sätt vad de två viktigaste benchmarkerna för kodning mäter, var haken finns i tabellerna och hur du kan kontrollera en ranking på en minut innan du förlitar dig på den. Historiska benchmarkdefinitioner diskuteras nedan. Ingen aktuell parad topplistebild återges här; en aktuell poäng- eller kostnadsjämförelse behöver en egen länkad tabell, datum och konfiguration.
Läs mer om att arbeta med modeller i Ailoot-dokumentationen.
Vad visar egentligen en procentsats i en benchmark?
Det viktigaste
En procentsats i en benchmark är andelen uppgifter ur en viss uppgiftsmängd som ett verktyg slutförde med ett fungerande resultat under särskilda villkor. Uppgifterna kontrolleras med automatiserade tester: koden klarar antingen testet eller inte; utvärderingen är ärlig och det finns inget ”mer eller mindre”. Men uppgiftsmängden är alltid begränsad och känd i förväg, och mätvillkoren skiljer sig åt. Därför besvarar siffran frågan ”Hur många av de här uppgifterna löste verktyget på det här sättet?” Den besvarar inte frågan ”Kommer det att klara mitt arbete?”
En benchmark fungerar enkelt. Det finns en färdig lista med programmeringsuppgifter. Verktyget får varje uppgift och skickar tillbaka kod, och systemet kör automatiserade tester för att se om lösningen fungerar. Andelen uppgifter som klarar testerna är procentsatsen som visas i tabellen.
Styrkan är att utvärderingen är objektiv. Ett test är antingen grönt eller rött; ingen sätter ett poängtal efter en snabb blick. I det avseendet är benchmarker ärligare än recensioner och omdömen.
Svagheten är precis densamma. Uppgiftsmängden är begränsad och känd i förväg av alla, även dem som tränar modellerna. Varje mätning har sina egna villkor. Och uppgifterna i mängden liknar nästan säkert inte det du gör. Det leder till fallgroparna jag tar upp nedan. Procentsatsen beskriver ett verktygs beteende på någon annans slutna uppgiftslista, och den kan inte överföras direkt till ditt projekt.
Vad mäter HumanEval, och varför kan du inte längre välja utifrån den?
Det viktigaste
HumanEval är en gammal uppsättning med 164 små Python-uppgifter: modellerna får en beskrivning av en funktion, skriver koden och automatiserade tester kontrollerar uppgiften. När den släpptes 2021 löste den första Codex 28,8 procent av uppgifterna i ett försök. I dag klarar starka modeller nästan allt i den, så den kan inte längre skilja dem åt. Dessutom är uppgifterna leksaksproblem: en funktion utifrån en beskrivning ligger långt från arbete med ett stort projekt i drift. Ett högt HumanEval-resultat 2026 betyder nästan ingenting.
HumanEval skapades hos OpenAI och släpptes 2021 tillsammans med modellen Codex. Den innehåller 164 små Python-uppgifter: modellerna får en funktionsbeskrivning i ord, skriver dess kod och en uppsättning automatiserade tester kontrollerar om den fungerar korrekt.
Då var den bra på att skilja modeller åt. I sin egen artikel anger författarna den här siffran: den första Codex löste 28,8 procent av uppgifterna i ett försök, medan vanliga GPT-3 inte löste någon.
På HumanEval löser vår modell 28,8 procent av problemen, medan GPT-3 löser 0 procent och GPT-J löser 11,4 procent.
Sedan dess har modellerna utvecklats, och i dag klarar de starka nästan allt i HumanEval. När alla får resultat nära 100 procent slutar tabellen att skilja modellerna åt: skillnaderna mellan verktygen försvinner. Det kallas att en benchmark har mättats, och HumanEval har varit i det läget länge.
Det andra felet är allvarligare. Uppgifterna är pyttesmå: skriv en funktion utifrån en beskrivning. Ditt verkliga arbete är annorlunda – det handlar om ett stort projekt med en historik, där du måste förstå någon annans kod, hitta ett fel och undvika att förstöra närliggande kod. Det är en avgrund mellan ”skriv en funktion från grunden” och ”rätta ett fel i ett projekt i drift”. Därför är ett högt HumanEval-resultat i dag inte längre ett skäl att välja ett verktyg; det är snarare en markering om att ”grunderna sitter”.
Vad mäter SWE-bench, och hur liknar den verkligt arbete mer?
Det viktigaste
SWE-bench bygger på verkliga fel i populära GitHub-projekt: 2 294 uppgifter från 12 Python-arkiv. Verktyget får en problembeskrivning, redigerar koden och systemet kör tester som misslyckades före ändringen och ska klara den efter rättningen. Det ligger mycket närmare verkligt arbete än HumanEval, och därför används den för att jämföra seriösa verktyg. Hur svår den är framgår av historiken: den första enkla metoden löste färre än två procent av uppgifterna.
SWE-bench är i grunden annorlunda och därför mer intressant. Den byggdes utifrån verkliga ärenden och pull requests i populära GitHub-projekt. Enligt upphovspersonerna innehåller den 2 294 uppgifter från 12 stora Python-arkiv och släpptes i oktober 2023.
Utvärderingen är ärlig. De tar en punkt i ett projekt där det fanns ett verkligt fel och en uppsättning tester som då misslyckades. Verktyget får problembeskrivningen och redigerar koden. Sedan körs samma tester: om de blir gröna är uppgiften faktiskt löst; här litar ingen på muntliga löften.
Vi samlade in 2 294 uppgifter genom att gå igenom pull requests och ärenden från 12 populära Python-arkiv. Varje uppgift bygger på en pull request som är kopplad till ett ärende och ändrar minst en fil med koppling till tester.
De första siffrorna visar hur mycket svårare detta är än leksaksuppgifter. Den första baslinjemetoden fick bara 1,96 procent på SWE-bench, och den första agenten fick 12,47 procent. Med andra ord var det svårt att ens komma nära verkligt kodningsarbete, och procentsatserna steg senare, men de började nära noll.
När du i dag ser höga siffror i en ranking av AI-kodningsagenter kommer de därför oftast från SWE-bench eller dess delmängd med 500 mänskligt verifierade uppgifter, kallad SWE-bench Verified. Det är en rimlig benchmark. Men även den har villkor utan vilka procentsatsen blir missvisande, och det ska jag ta upp härnäst.
Inte ens den ärligaste benchmarken i en tabell är ännu ett resultat i ditt projekt. Utfallet beror på hur du arbetar med verktyget, och den översta raden i rankingen säger väldigt lite. För tillförlitligt arbete spelar kombinationen roll: AI-klon, Second Brain och kontextteknik. Ren kontext förbättrar din personliga träffsäkerhet mycket mer märkbart än att välja en modell från en tabell.
Varför visar samma modell olika procentsatser?
Det viktigaste
Resultatet beror på mer än modellen. Minst tre saker ingår i varje mätning: själva modellen, agentens wrapper runt den och vilken resonemangsnivå som aktiverats. Ändrade resonemangsinställningar kan ge olika rader för samma modell och agentmiljö. Utan miljöns namn, revision, inställningar och en daterad källa stöder raderna ingen numerisk jämförelse. Därför måste du jämföra hela kombinationer; modellnamnet i sig avgör inte särskilt mycket.
Det är här det vanligaste misstaget vid läsning av benchmarker döljer sig. Folk läser en tabell som en modellranking: den här modellen är två procent smartare än den där. Men tre saker påverkar procentsatsen, och modellen är bara en av dem.
För det första själva modellen. För det andra agentens wrapper runt den: ett program som låter modellen navigera bland filer, köra kommandon, läsa felmeddelanden och skriva om kod. Samma modell i en smart wrapper och en enkel wrapper ger olika resultat eftersom wrappern avgör hur modellen arbetar med projektet. För det tredje resonemangsnivån – det vill säga hur grundligt modellen tänker igenom varje steg. Ju längre den tänker, desto högre blir procentsatsen vanligtvis, och desto högre blir kostnaden.
En reproducerbar jämförelse ska bevara hela konfigurationen. Använd följande som rapportmall, inte som uppmätt topplista:
| Fält | Körning A | Körning B |
|---|---|---|
| Modell och exakt version | Dokumentera testad version | Samma version för en kontrollerad jämförelse |
| Agentmiljö och revision | Dokumentera kodförråd och commit | Samma agentmiljö och commit |
| Uppgiftsuppsättning och poängsättning | Dokumentera delmängd och utvärderingsrevision | Samma uppgiftsuppsättning och poängsättning |
| Resonemangsinställning | Dokumentera inställning A | Dokumentera inställning B |
| Resultat och belägg | Antal lösta, nämnare, loggar, datum | Antal lösta, nämnare, loggar, datum |
Det visar vad som ändrades och om jämförelsen faktiskt isolerar resonemangsinställningen. Det tidigare numeriska exemplet utan länk behandlas inte som ett uppmätt resultat.
Regeln är följande: en bra ranking anger alltid vilken modell, vilken wrapper och vilken resonemangsnivå som användes. Om tabellen bara innehåller ett modellnamn och en procentsats, utan att ange wrappern, är den svår att lita på: du vet inte vad som faktiskt mättes. Mer om vad kombinationen ”modell plus wrapper” består av förklaras i artikeln om rankingen över AI-kodningsagenter.
Det här förklarar också varför ett verktyg med toppresultat ibland har svårt för dina uppgifter. Benchmarken mäter en modell i någon annans förfinade wrapper och på någon annans uppgifter. Din wrapper, ditt projekt och kontexten du ger modellen är annorlunda. I ditt projekt beror resultatet på kontexten; tabellraden kommer i andra hand.
Varför ”blir uppgifter inaktuella”, och vad är läckage av träningsdata?
Det viktigaste
Modeller tränas på enorma mängder text och kod från internet, och populära benchmarker är offentligt tillgängliga. Om uppgifterna och deras lösningar har ingått i träningsdata kan modellen ha memorerat dem och helt enkelt återskapa det den minns under utvärderingen i stället för att lösa dem. Det kallas att uppgifter läcker in i träningen. Ju äldre och mer välkänd uppgiftsmängden är, desto större är risken: en gammal benchmark visar mer sannolikt modellens minne än dess förmåga att resonera. Nya och slutna uppgiftsmängder är mer tillförlitliga än gamla och offentliga.
Här är haken som inte syns i själva siffran men undergräver den mer än något annat. Modeller tränas på enorma mängder text och kod som samlats in från internet. Och nästan alla benchmarker för kodning är offentligt tillgängliga: uppgifterna, testerna och referenslösningarna.
Mekanismen är enkel. Om en uppgift och dess korrekta lösning kommit med i träningsdata kan modellen ha memorerat dem. Under utvärderingen löser den då inte uppgiften så mycket som den hämtar ett välbekant svar ur minnet. Det ser ut som en lösning, men är bara minne. Det kallas läckage av träningsdata eller datakontaminering.
Ju äldre och mer populär uppgiftsmängden är, desto större är risken. HumanEval har funnits på nätet sedan 2021; den har skrivits om, analyserats och inkluderats i otaliga dataset många gånger om. Det vore märkligt att förvänta sig att en modern modell inte skulle ha ”sett den”. Därför är uppgifternas aktualitet en separat kvalitetsindikator för en benchmark. En bra uppgiftsmängd uppdateras antingen regelbundet eller håller vissa uppgifter slutna så att de inte kan läras in i förväg.
Vad ska du göra när du läser en ranking? Kontrollera när uppgifterna skapades och om uppgiftsmängden uppdateras. Om en benchmark bygger på nya fel från de senaste månaderna förtjänar den större tillit. Om den bygger på en uppgiftsmängd från fem år sedan säger en hög procentsats mer om modellens goda minne än dess förmåga att lösa din nya uppgift. Det här visas konkret i artikeln om den nya benchmarken FrontierCode, vars uppgifter medvetet var nya.
Varför betyder en skillnad på ett par procentenheter ofta ingenting?
Det viktigaste
Benchmarkresultat varierar: samma verktyg på samma uppgifter ger lite olika resultat i olika körningar, eftersom modellen inte alltid svarar på samma sätt. Därför försvinner en skillnad på en eller två procentenheter mellan närliggande rader i en ranking ofta i bruset och visar inte någon verklig överlägsenhet. Kontrollera också priset separat: liknande procentsatser kan kosta mångdubbelt olika. Jämför kostnader bara när båda fullständiga konfigurationerna, framgångsgraderna, faktureringsantagandena och kostnadens nämnare anges.
En annan sak som gör förstaplatsen i en tabell missvisande är att en modell inte svarar likadant varje gång. På samma prompt kan den följa ett något annorlunda resonemang. Om du därför kör ett verktyg flera gånger på en uppgiftsmängd varierar procentsatsen en aning från körning till körning, och den variationen kallas varians.
Den praktiska slutsatsen är enkel. När två rader i en ranking skiljer sig med en eller två procent kan skillnaden lätt bero på brus. Det är dumt att jaga ett verktyg som är ”två procent bättre”: vid nästa körning kan ordningen lätt ändras. En skillnad är värd att betrakta som betydelsefull när den märks och håller i sig över en stor uppgiftsmängd; ett par procentenheter når inte upp till den nivån.
Och det sista, som nästan alltid är viktigare än själva procentsatsen, är priset. Liknande resultat kan kosta väldigt olika mycket. En kostnadsjämförelse behöver båda modell- och agentkonfigurationerna samt hela kostnaden för utvärderad uppgiftsuppsättning, inklusive misslyckade försök. Dividera med försökta uppgifter för kostnad per försök eller med lösta uppgifter för kostnad per löst uppgift och ange vilket mått du använder. Artikeln ger ingen källbelagd parad kostnadsmätning. Läs därför alltid en rad i rankingen tillsammans med priset, eftersom procentsatsen säger lite på egen hand. Artikeln om kostnaden för en löst uppgift förklarar hur du jämför verktyg rättvist utifrån kostnad.
Hur läser du vilken benchmarktabell som helst på en minut?
Det viktigaste
Ställ sju frågor innan du förlitar dig på en ranking: Vilken uppgiftsmängd? Är uppgifterna nya eller gamla? Vilken modell? Vilken agentwrapper? Vilken resonemangsnivå? Vad kostar varje uppgift? Hur stor är variansen? Om tabellen inte besvarar minst hälften av dessa frågor kan du inte lita på den: den är förmodligen reklam. Kontrollera också om uppgifterna i mängden liknar ditt verkliga arbete, för även en ärlig procentsats på någon annans uppgifter överförs inte till ditt projekt.
Låt mig sammanfatta allt i en kort checklista. Öppna valfri rankingtabell och gå igenom de här sju punkterna i ordning.
- Vilken uppgiftsmängd? HumanEval är svag i dag; SWE-bench ligger närmare verkligt arbete. Om uppgiftsmängden inte anges behöver du inte läsa vidare.
- Är uppgifterna nya eller gamla? En ny eller delvis sluten uppgiftsmängd är mer tillförlitlig än en gammal offentlig mängd som modellen kan ha lärt sig.
- Vilken modell utvärderades? Det exakta namnet och versionen, inte ett vagt ”AI” eller namnet på en modellfamilj.
- Vilken agentwrapper? Procentsatsen gäller kombinationen ”modell plus wrapper”. Om wrappern inte anges vet du inte vad som mättes.
- Vilken resonemangsnivå? En modell på olika nivåer ger olika procentsatser och olika kostnader.
- Vad kostar en uppgift? Liknande resultat kan skilja sig mångdubbelt i pris. Läs procentsatsen tillsammans med kostnaden.
- Hur stor är variansen? En skillnad på en eller två procentenheter mellan rader är ofta bara brus.
Det finns en åttonde fråga, och den handlar om dig: Liknar uppgifterna i mängden ditt arbete? En benchmark med Python-uppgifter säger inte mycket till någon som bygger en webbplats eller en bot med en annan uppsättning verktyg. Även en ärlig siffra från någon annans uppgifter garanterar inte ett resultat i ditt projekt. Det finns bara ett tillförlitligt sätt att kontrollera: kör ett par typiska uppgifter genom verktyget och granska resultatet själv. Artikeln om hur du kontrollerar AI-genererad kod förklarar hur du kan avgöra om koden fungerar även om du inte programmerar själv.
Vad ska du då titta på till slut?
Det viktigaste
Titta på villkoren under toppraden, inte bara på själva toppraden: uppgiftsmängden och hur ny den är, kombinationen ”modell plus wrapper”, resonemangsnivån, kostnaden per uppgift och hur stor variansen är. En ensam siffra utan de här villkoren bevisar ingenting. Kom också ihåg att även en ärlig procentsats på någon annans uppgifter inte överförs till ditt projekt: det sista ordet tillhör alltid tester med dina egna verkliga uppgifter, och ditt resultat på dem beror mer på hur du arbetar med verktyget än på dess plats i rankingen.
Huvudpoängen i hela artikeln är kort: en plats i rankingen är ett skäl att titta närmare på ett verktyg, men du måste själv undersöka det vidare. En hög siffra visar bara att ett verktyg gjorde ett hyfsat jobb på en särskild, sluten uppgiftslista under särskilda villkor. Procentsatsen visar inte om de villkoren passar dig.
Läs därför det som står under rankingraden: vilka uppgifter det gäller, hur nya de är, vilken kombination av modell och wrapper som använts, vilken resonemangsnivå den har, hur mycket det kostar och om skillnaden försvinner i bruset. En tabell som inte besvarar frågorna hör hemma på en reklambanner. Recensionen vilket verktyg du ska koda med 2026 förklarar vilket verktyg du bör välja för dina uppgifter från början.
Och här är det som betyder mer än någon benchmark. Även det bästa verktyget i rankingen har svårt med rörig kontext och fungerar bra med ren kontext. Din personliga träffsäkerhet beror på vad du ger modellen och hur du formulerar uppgiften; tabellraden kommer i andra hand. Rankingen hjälper dig att välja bort de tydligt svaga alternativen, men det är du som skapar resultatet.
Källor
- HumanEval - datasetet openai/openai_humaneval (huggingface.co) - uppsättning med 164 Python-uppgifter som kontrolleras med automatiserade tester
En plats i rankingen hjälper dig att välja bort svaga alternativ, men resultaten i ditt projekt beror på metoden: AI-klon plus Second Brain plus kontextteknik.
För fortsatt arbete – Ailoot.
Fler detaljer
Frågor om den här guiden: Så läser du AI-benchmarks för kodning och undviker att utse en pappersvinnare
Vad måste dokumenteras innan två benchmarkrader jämförs?
Dokumentera exakt modell, agentmiljö och revision, resonemangsinställningar, uppgiftsdelmängd, poängsättningsmetod, datum och direkt resultatkälla. Utan dessa fält kan en poängskillnad inte tillskrivas en enda ändrad inställning.
Är kostnad per försökt uppgift samma sak som kostnad per löst uppgift?
Nej. Dividera den totala utvärderingskostnaden med alla försökta uppgifter för det första måttet eller med lösta uppgifter för det andra. Ta med kostnaden för misslyckade försök och ange nämnaren före prisjämförelser.