Blog

Benchmarky AI programování: jak je číst a vybírat podle úkolu

Markdown

Co měří HumanEval a SWE-bench a jak při čtení žebříčků AI programovacích nástrojů zohlednit agentní wrapper, podmínky, aktuálnost úloh, variabilitu a náklady.

Přečíst celý článek

Stručně řečeno: údaj „vyřeší 76 procent úloh“ sám o sobě téměř nic neříká. Důležité je, která sada úloh k němu vedla, který model a agentní wrapper byly hodnoceny společně, zda jsou úlohy nové nebo staré a kolik to stálo. Bez těchto podmínek se procento hodí na reklamní banner, ale ne k výběru nástroje.

Dále jednoduše vysvětlím, co měří dva hlavní benchmarky programování, kde se v tabulkách skrývá háček a jak si před spoléháním na jakýkoli žebříček během minuty ověřit, co vlastně říká. Níže se probírají historické definice benchmarků. Není zde reprodukován živý párový snímek žebříčku; aktuální srovnání skóre či ceny potřebuje vlastní odkazovanou tabulku, datum a konfiguraci.

Další informace o práci s modely najdete v dokumentaci Ailoot.

Co ukazuje procentuální výsledek benchmarku AI programování?

Hlavní poznatek

Procento v benchmarku je podíl úloh z konkrétní sady, které nástroj dokončil s funkčním výsledkem za určitých podmínek. Úlohy se kontrolují automatickými testy: kód testem buď projde, nebo ne; vyhodnocení je poctivé a neexistuje nic jako „tak napůl“. Sada úloh je ale vždy úzká a předem známá a podmínky měření se u jednotlivých nástrojů liší. Údaj tedy odpovídá na otázku: „Kolik z těchto úloh nástroj tímto způsobem vyřešil?“ Neodpovídá na otázku: „Zvládne mou práci?“

Benchmark funguje jednoduše. Existuje připravený seznam programovacích úloh. Nástroj dostane každou úlohu a vrátí kód; systém pak spustí automatické testy, aby ověřil, jestli řešení funguje. Podíl úloh, které testy splní, je procento uvedené v tabulce.

Výhodou je objektivní hodnocení. Test je buď úspěšný, nebo neúspěšný; nikdo neuděluje skóre „od oka“. V tomto ohledu jsou benchmarky poctivější než jakékoli recenze nebo reference.

Slabina je přesně stejná. Sada úloh je konečná a předem známá všem, včetně těch, kdo modely trénují. Každé měření má vlastní podmínky. A úlohy v sadě se téměř jistě nepodobají tomu, co děláte vy. Z toho vyplývají všechny nástrahy, o kterých píšu níže. Procento popisuje chování nástroje na uzavřeném seznamu úloh někoho jiného a nelze ho přímo přenést na váš projekt.

Co měří HumanEval a proč už podle něj nemůžete vybírat?

Hlavní poznatek

HumanEval je stará sada 164 malých úloh v Pythonu: modely dostanou popis funkce, napíšou kód a automatické testy úlohu ověří. Když byla v roce 2021 vydána, první Codex vyřešil na jeden pokus 28,8 procenta úloh. Dnes silné modely zvládnou téměř celou sadu, takže už mezi nimi nedokáže rozlišovat. Navíc jde o hračkové problémy: jedna funkce zadaná popisem má daleko k práci na rozsáhlém živém projektu. Vysoké skóre HumanEval v roce 2026 téměř nic neznamená.

HumanEval vytvořila společnost OpenAI a vydala ho v roce 2021 spolu s modelem Codex. Obsahuje 164 malých úloh v Pythonu: modely dostanou slovní popis funkce, napíšou její tělo a sada automatických testů ověří, zda funguje správně.

Tehdy šlo o dobrý rozlišovací ukazatel. Autoři ve svém článku uvádějí toto číslo: první Codex vyřešil na jeden pokus 28,8 procenta úloh, zatímco běžný GPT-3 nevyřešil žádnou.

Na HumanEval náš model vyřeší 28,8 procenta problémů, zatímco GPT-3 vyřeší 0 procent a GPT-J 11,4 procenta.

— OpenAI, článek „Evaluating Large Language Models Trained on Code“

Od té doby se modely zlepšily a dnes ty silné zvládnou téměř celý HumanEval. Když se všichni blíží 100 procentům, tabulka přestává cokoli rozlišovat: rozdíly mezi nástroji se ztrácejí. Tomu se říká saturace benchmarku a HumanEval je v tomto stavu už dlouho.

Druhá vada je závažnější. Úlohy jsou drobné: napsat jednu funkci podle popisu. Vaše skutečná práce vypadá jinak — jde o rozsáhlý projekt s historií, kde musíte porozumět cizímu kódu, najít chybu a nerozbít okolní části. Mezi „napsat funkci od nuly“ a „opravit chybu v živém projektu“ zeje propast. Vysoké skóre HumanEval dnes proto není důvodem k výběru nástroje; spíš jen potvrzuje, že „základy zvládá“.

Co měří SWE-bench a čím se více blíží skutečné práci?

Hlavní poznatek

SWE-bench vychází ze skutečných chyb v oblíbených projektech na GitHubu: 2 294 úloh z 12 repozitářů v Pythonu. Nástroj dostane popis problému, upraví kód a systém spustí testy, které před změnou selhávaly a po opravě by měly projít. To se skutečné práci podobá mnohem více než HumanEval, a proto se benchmark používá k porovnávání seriózních nástrojů. Jeho obtížnost dokládá historie: první jednoduchý přístup vyřešil méně než dvě procenta úloh.

SWE-bench se zásadně liší, a proto je zajímavější. Vznikl na základě skutečných problémů a pull requestů v oblíbených projektech na GitHubu. Podle jeho autorů obsahuje 2 294 úloh z 12 rozsáhlých repozitářů v Pythonu a byl vydán v říjnu 2023.

Logika vyhodnocení je poctivá. Vezmou bod v projektu, kde se vyskytovala skutečná chyba, a sadu testů, které tehdy selhávaly. Nástroj dostane popis problému a upraví kód. Pak se spustí tytéž testy: pokud projdou, úloha je skutečně vyřešená; nikdo tu nevěří slovním slibům.

Prošli jsme pull requesty a issues ve 12 oblíbených repozitářích v Pythonu a shromáždili 2 294 úloh. Každá úloha vychází z pull requestu propojeného s issue a mění alespoň jeden soubor související s testy.

— SWE-bench, oficiální web benchmarku

Úvodní čísla ukazují, o kolik je to těžší než hračkové úlohy. První základní přístup dosáhl na SWE-bench skóre pouhých 1,96 procenta a první agent dosáhl 12,47 procenta. Jinými slovy, i přiblížit se skutečné práci s kódem bylo obtížné; procenta později rostla, ale začínala téměř na nule.

Když dnes v žebříčku AI programovacích agentů uvidíte vysoká čísla, nejčastěji pocházejí ze SWE-bench nebo z jeho lidmi ověřené podmnožiny 500 úloh s názvem SWE-bench Verified. Je to rozumný benchmark. I on má ale podmínky, bez nichž je procento zavádějící, a o těch budu mluvit dále.

Ani nejpoctivější benchmark v tabulce ještě není výsledkem na vašem projektu. Výsledek závisí na tom, jak s nástrojem pracujete, a první řádek žebříčku toho určuje jen málo. Pro spolehlivou práci záleží na kombinaci: AI klon, Second Brain a práce s kontextem. Čistý kontext zlepší vaši osobní úspěšnost výrazněji než výběr modelu z tabulky.

Proč stejné modely dosahují různých procent?

Hlavní poznatek

Protože výsledek nezávisí jen na modelu. Každé měření zahrnuje alespoň tři věci: samotný model, agentní wrapper kolem něj a nastavenou úroveň uvažování. Změna úrovně uvažování může vytvořit různé řádky pro stejný model a prostředí agenta. Bez názvu prostředí, revize, nastavení a datovaného zdroje tyto řádky číselné porovnání nedokládají. Proto je třeba porovnávat celé kombinace a samotná značka modelu toho mnoho neurčuje.

Právě zde se skrývá nejčastější chyba při čtení benchmarků. Lidé čtou tabulku jako žebříček modelů: tento model je o dvě procenta chytřejší než tamten. Procento ale ovlivňují tři věci a model je jen jednou z nich.

Zaprvé samotný model. Zadruhé agentní wrapper kolem něj: program, který modelu umožňuje procházet soubory, spouštět příkazy, číst chyby a přepisovat kód. Tentýž model v chytrém a jednoduchém wrapperu dosáhne různých výsledků, protože wrapper určuje, jak model s projektem pracuje. Zatřetí úroveň uvažování — tedy jak důkladně model promýšlí každý krok. Čím déle přemýšlí, tím vyšší bývá procento a tím vyšší jsou náklady.

Reprodukovatelné porovnání musí zachovat celou sestavu. Následující použijte jako šablonu záznamu, nikoli změřený žebříček:

PoleBěh ABěh B
Model a přesná verzeZaznamenejte testovanou verziStejná verze pro kontrolované porovnání
Prostředí agenta a revizeRepozitář a commitStejné prostředí a commit
Sada úkolů a hodnoceníPodmnožina a revize vyhodnoceníStejné úkoly a hodnocení
Úroveň uvažováníNastavení ANastavení B
Výsledek a důkazPočet vyřešených, jmenovatel, logy, datumPočet vyřešených, jmenovatel, logy, datum

Tak zjistíte změnu i to, zda porovnání skutečně izoluje úroveň uvažování. Dřívější číselný příklad bez odkazu se nepovažuje za změřený výsledek.

Platí toto pravidlo: dobrý žebříček vždy uvádí, který model, wrapper a úroveň uvažování byly použity. Pokud tabulka obsahuje pouze název modelu a procento, ale neuvádí wrapper, je těžké jí věřit: nevíte, co se vlastně měřilo. Více o tom, z čeho se skládá kombinace „model plus wrapper“, se dozvíte v článku o žebříčku AI programovacích agentů.

To také vysvětluje, proč má nástroj s nejvyšším skóre někdy u vás potíže. Benchmark měří model v něčím zdokonaleném wrapperu a na úlohách někoho jiného. Váš wrapper, projekt i kontext, který modelu poskytnete, jsou jiné. Ve vašem projektu závisí výsledek na kontextu; řádek tabulky je až druhotný.

Proč úlohy „zastarávají“ a co je únik trénovacích dat?

Hlavní poznatek

Modely se trénují na obrovském množství textů a kódu z internetu a oblíbené benchmarky jsou veřejně dostupné. Pokud se úlohy a jejich řešení dostaly do trénovacích dat, model si je mohl zapamatovat a při vyhodnocování pouze zopakovat, místo aby je řešil. Tomu se říká únik úloh do trénování. Čím je sada starší a známější, tím větší je riziko: starý benchmark spíše ukáže paměť modelu než jeho schopnost uvažovat. Nové a uzavřené sady úloh jsou spolehlivější než staré a veřejné.

Tady je háček, který na samotném čísle není vidět, ale podkopává jeho vypovídací hodnotu ze všeho nejvíc. Modely se trénují na obrovském množství textů a kódu sesbíraných z internetu. A téměř všechny benchmarky programování jsou veřejně dostupné: úlohy, testy i referenční řešení.

Mechanismus je jednoduchý. Pokud se úloha a její správné řešení dostaly do trénovacích dat, model si je mohl zapamatovat. Během vyhodnocování pak úlohu neřeší ani tolik, jako si z paměti vybavuje známou odpověď. Vypadá to jako řešení, ale jde jen o vzpomínku. Tomu se říká únik dat do trénování nebo kontaminace dat.

Čím je sada úloh starší a oblíbenější, tím vyšší je riziko. HumanEval je online od roku 2021; byl mnohokrát přepsán, analyzován a zařazen do nesčetných datových sad. Bylo by zvláštní očekávat, že ho moderní model „nikdy neviděl“. Proto je aktuálnost úloh samostatným ukazatelem kvality benchmarku. Dobrá sada se buď pravidelně aktualizuje, nebo část úloh ponechává uzavřenou, aby se je modely nemohly naučit předem.

Co dělat při čtení žebříčku? Zkontrolujte datum úloh a to, zda se sada aktualizuje. Pokud benchmark vychází z čerstvých chyb z posledních měsíců, zaslouží si větší důvěru. Pokud jde o sadu starou pět let, vysoké procento vypovídá více o dobré paměti modelu než o jeho schopnosti vyřešit váš nový úkol. Tento konkrétní efekt ukazuje příklad v článku o novém benchmarku FrontierCode, jehož úlohy byly záměrně nové.

Proč rozdíl několika procentních bodů často nic neznamená?

Hlavní poznatek

Benchmarky mají variabilitu: stejný nástroj dosahuje na stejných úlohách v různých bězích mírně odlišných výsledků, protože model neodpovídá pokaždé stejně. Proto rozdíl jednoho nebo dvou bodů mezi sousedními řádky žebříčku často zaniká v šumu a neukazuje na skutečnou převahu. Samostatně zkontrolujte i cenu: podobná procenta mohou stát mnohonásobně více. Ceny porovnávejte jen s uvedením obou úplných sestav, úspěšnosti, předpokladů účtování a jmenovatele ceny.

Další důvod, proč může být první místo v tabulce zavádějící: model neodpovídá pokaždé stejně. Na stejný prompt může zvolit mírně odlišný postup uvažování. Když tedy spustíte jeden nástroj na jedné sadě úloh několikrát, procento mezi běhy trochu kolísá; tomuto kolísání se říká variabilita.

Praktické ponaučení je jednoduché. Pokud se dva řádky žebříčku liší o jedno nebo dvě procenta, rozdíl může být snadno jen šum. Honit se za nástrojem, který je „o dvě procenta lepší“, je pošetilé: v příštím běhu si mohou místa snadno vyměnit. Rozdíl stojí za označení za významný, když je zřetelný a přetrvává na rozsáhlé sadě úloh; několik bodů tuto hranici nesplňuje.

A poslední věc, která je téměř vždy důležitější než samotné procento, je cena. Podobné výsledky mohou stát velmi rozdílné částky. Cenové porovnání potřebuje konfigurace obou modelů a prostředí i veškeré výdaje na hodnocenou sadu včetně neúspěšných pokusů. Pro cenu pokusu dělte počtem pokusů, pro cenu vyřešeného úkolu počtem vyřešených a použitou metriku označte. Článek neposkytuje zdrojované párové měření cen. Proto vždy čtěte řádek žebříčku spolu s cenou; samotné procento toho moc neznamená. Článek o ceně jedné vyřešené úlohy vysvětluje, jak spravedlivě porovnávat nástroje podle nákladů.

Jak přečíst libovolnou tabulku benchmarku během minuty?

Hlavní poznatek

Než se začnete řídit žebříčkem, položte mu sedm otázek: Jaká sada úloh? Jsou úlohy nové, nebo staré? Který model? Který agentní wrapper? Jaká úroveň uvažování? Jaká je cena za úlohu? Jak velká je variabilita? Pokud tabulka neodpoví alespoň na polovinu z nich, nemůžete jí důvěřovat: nejspíš jde o reklamu. Zvlášť ověřte, zda se úlohy v sadě podobají vaší skutečné práci, protože ani poctivé procento na úlohách někoho jiného se na váš projekt nepřenáší.

Shrňme vše do krátkého seznamu. Otevřete libovolnou tabulku žebříčku a projděte těchto sedm bodů v tomto pořadí.

  1. Jaká sada úloh? HumanEval je dnes slabý ukazatel; SWE-bench je blíže skutečné práci. Pokud sada vůbec není pojmenovaná, nemá smysl číst dál.
  2. Jsou úlohy nové, nebo staré? Nová nebo částečně uzavřená sada je spolehlivější než stará veřejná sada, kterou se model mohl naučit.
  3. Který model se měřil? Přesný název a verze, nikoli vágní „AI“ nebo název modelové rodiny.
  4. Který agentní wrapper? Procento náleží kombinaci „model plus wrapper“. Pokud wrapper není uveden, nevíte, co se měřilo.
  5. Jaká úroveň uvažování? Jeden model dosahuje na různých úrovních různých procent a má různé náklady.
  6. Kolik stojí jedna úloha? Podobné výsledky mohou mít mnohonásobně odlišnou cenu. Čtěte procento spolu s náklady.
  7. Jaká je variabilita? Rozdíl jednoho nebo dvou bodů mezi řádky je často jen šum.

Existuje osmá otázka, která se týká vás: Podobají se úlohy v sadě vaší práci? Benchmark úloh v Pythonu toho moc neřekne člověku, který vytváří web nebo bota pomocí jiné sady nástrojů. Ani poctivé číslo z úloh někoho jiného nezaručuje výsledek ve vašem projektu. Je jen jeden spolehlivý způsob, jak to ověřit: zadat nástroji několik svých typických úloh a výsledek si sami prohlédnout. Článek o kontrole kódu vytvořeného AI vysvětluje, jak poznat, zda kód funguje, i když sami neprogramujete.

Na co se tedy máte nakonec dívat?

Hlavní poznatek

Dívejte se na podmínky pod hlavním řádkem, ne jen na samotný hlavní řádek: na sadu úloh a její aktuálnost, kombinaci „model plus wrapper“, úroveň uvažování, cenu za úlohu a míru variability. Samotné číslo bez těchto podmínek nic nedokazuje. Pamatujte také, že ani poctivé procento na úlohách někoho jiného se na váš projekt nepřenáší: poslední slovo má vždy testování na vašich vlastních skutečných úlohách a váš výsledek na nich závisí více na tom, jak s nástrojem pracujete, než na jeho místě v žebříčku.

Hlavní myšlenka celého článku je stručná: místo v žebříčku je důvodem podívat se na nástroj blíže, ale další práci si budete muset udělat sami. Vysoké číslo pouze říká, že nástroj si vedl dobře na konkrétním uzavřeném seznamu úloh za konkrétních podmínek. Procento neukazuje, zda tyto podmínky odpovídají vašim.

Proto si přečtěte, co se skrývá pod řádkem žebříčku: jaké úlohy se měřily, jak jsou aktuální, jaká kombinace modelu a wrapperu byla použita, jaká byla úroveň uvažování, kolik to stojí a zda se rozdíl neztrácí v šumu. Tabulka, která na tyto otázky neodpovídá, patří na reklamní banner. Recenze který nástroj zvolit pro programování v roce 2026 vysvětluje, který nástroj vybrat pro vaše úlohy.

A tady je něco, na čem záleží víc než na jakémkoli benchmarku. I nejlepší nástroj v žebříčku má potíže s neuspořádaným kontextem a pracuje dobře s čistým kontextem. Vaše osobní úspěšnost závisí na tom, co modelu předáte a jak zadání formulujete; řádek tabulky je až druhotný. Žebříček pomůže vyřadit zjevně slabé možnosti, ale výsledek vytváříte vy.

Zdroje

Místo v žebříčku pomůže vyřadit slabé možnosti, ale výsledky ve vašem projektu závisí na metodě: AI klon plus Second Brain plus práce s kontextem.

Pro další práci — Ailoot.

Další podrobnosti

Časté otázky

Co zaznamenat před porovnáním dvou řádků benchmarku?

Zaznamenejte přesný model, prostředí agenta a revizi, nastavení uvažování, podmnožinu úkolů, způsob hodnocení, datum a přímý zdroj výsledku. Bez těchto údajů nelze rozdíl skóre připsat jedinému nastavení.

Je cena pokusu stejná jako cena vyřešeného úkolu?

Ne. Celkové výdaje hodnocení dělte všemi pokusy pro první metriku, nebo vyřešenými úkoly pro druhou. Započtěte neúspěšné pokusy a před porovnáním cen označte jmenovatel.

Všechny články