Dva obrázky, pak další dva a nakonec zadání, které máte doplnit. Pravidlo vám nikdo neřekl, a přesto ho během vteřiny vytáhnete z ukázek a použijete na nový případ. Přesně tohle měří benchmark ARC-AGI — a nedávno se v něm objevil podivně malý model s ještě podivnějším jménem, který podle autorů drží rekord v levném uvažování.
Jenže ta nejcennější věc v celé studii není rekord. Je to okamžik, kdy výzkumníci nechali model úplně beze změny a vyměnili mu jen příklady v zadání. Nula správných řešení z 24 se změnila na třináct. U jiného typu úlohy se model posunul z 19 na 24 z 24. Stejný model, stejné testy, jiné příklady, jiné výsledky.
Benchmark, ve kterém pravidlo nikde nestojí
ARC-AGI není jazykový test. Dostanete několik dvojic barevných mřížek: tohle byl vstup, tohle je správný výstup. Pak přijde nový vstup a vy musíte odhalit pravidlo, které mezi nimi platí. Někdy se motiv otočí, jindy se doplní symetrie, jindy je úkolem najít buňky schované uvnitř několika rámečků.
Pravidlo je pokaždé jiné a nikde není napsané slovy. Právě proto je ARC-AGI zajímavý — netestuje, kolik toho model zná, ale jestli si dokáže odvodit vztah z hrstky ukázek a přenést ho na případ, který ještě neviděl.
Rekord není v tom, co model umí, ale za kolik to umí
Model se jmenuje BDH-CQ a má 150 milionů parametrů. Na dnešní poměry je to drobek. Na ARC-AGI-1 vyřešil 29,5 % úloh při možnosti nabídnout až dva kandidátní výstupy. Jedna úloha přitom podle titulního čísla studie vyjde na 0,0007 dolaru, tedy na méně než desetinu centu.
Ohromující úspěch to ale není. Necelá třetina je míň, než konkurence dnes zvládá — na příběh o tom, jak maličký model porazil velké jazykové modely, to prostě nevyjde. Rekord tedy není v tom, co model dokáže. Rekord je v ceně za inteligenci: kolik stojí jedna vyřešená úloha.
Uvažování, které nevzniká slovy
Model si při řešení odděluje dvě věci. Jedna část drží průběžnou představu o tom, jaké je vlastně zadání. Druhá funguje jako pracovní papírek, na kterém vznikají poznámky a mezivýsledky. Podstatné je, že tyhle mezikroky nemusejí vznikat jako slova — ven se nakonec dostane až hotová mřížka.
Technicky je to velmi zajímavé. Malý model a paměť pevné velikosti můžou být součástí vysvětlení, proč je provoz tak levný. Studie ale jednotlivé zdroje úspory neodděluje, takže z ní nevyčtete, kolik ušetřila architektura a kolik prostá velikost. A právě proto je zajímavější než to, jak to udělali, otázka, co se stalo, když autoři sáhli na příklady.
Nula z 24 se po jediném příkladu změnila na třináct
Model dostal za úkol řadit objekty podle výšky. S krátkými řadami si vedl docela dobře, ale jak počet objektů rostl, výkon se rozpadal. U osmi objektů narazil na jasný strop schopnosti: krátkou řadu zvládne velmi dobře, na delší jednoduše nemá.
Pak přišla kontrola. Stejných 24 testovacích vstupů, model zmrazený — žádné nové váhy, žádné dotrénování. Když v krátkém kontextu viděl jen příklady řazení o délce tří nebo čtyř, výsledek byl 0 z 24. Když k nim autoři přidali jedinou demonstraci toho, jak řazení vypadá při délce osmi, skočil na 13 z 24 (při započtení kteréhokoli ze dvou kandidátů).
U vnořených rámečků je skok menší, než na první pohled vypadá
Druhá úloha spočívala v hledání buněk ukrytých uvnitř pěti vnořených rámečků. S malými příklady byl výsledek 19 z 24. S jedním příkladem o stejné hloubce, jakou má samotný test, to bylo 24 z 24.
Tady je potřeba být poctivý. Když se započítá jen první kandidátní výstup — tedy to, co model vygeneroval napoprvé —, zlepšilo se vnořování jen z přibližně 15 na 16 z 24. Dramatický skok z 19 na 24 je výsledek, který připouští kterýkoli ze dvou kandidátů, tedy situaci, kdy model nabídne dvě řešení a vy si vyberete to lepší.
Pořád je to mimořádně zajímavý efekt. Není to důkaz, že model celou dobu všechno umí a jediný příklad ho zázračně odemkne. Ale je to potenciál, který se dá v praxi využít.
Příklad neukazuje formát, ale hranici obtížnosti
Většina lidí používá příklady v promptu jako ukázku formátu. Takhle má vypadat tabulka, takhle se pojmenují sloupce, takhle dlouhá má být odpověď. Jenže příklad dělá současně ještě něco jiného: ukazuje modelu, jak daleko jste zatím pravidlo natáhli. Jak dlouhý byl vstup, kolik vnoření, kolik konfliktů, jak ošklivou výjimku ještě považujete za součást stejné práce.
Když reálný vstup leží až za touhle hranicí, delší instrukce mu chybějící informaci nedodá. Model nepotřebuje další odstavec textu — potřebuje poprvé vidět, co po něm chcete na skutečné obtížnosti.
Dva krásné příklady a jeden dlouhý e-mail
Představte si to v praxi. Chcete z příchozích e-mailů automaticky vytahovat termíny a do promptu dáte dva krásné příklady: sejdeme se v úterý ve dvě, zboží pošlete do pátku. Funguje to náramně — dokud nepřijde dlouhý e-mail s devíti možnými termíny, dvěma podmínkami, jedním odloženým úkolem bez data a větou, která opravuje tu předchozí. Zkrátka klasický lidský nepořádek, jakým lidé píšou. A výstup je kaše.
Náprava je kontraintuitivní: nepřidávejte automaticky dalších pět hezkých příkladů. Jeden z nich klidně vyhoďte a nahraďte ho nejtěžším realistickým případem, jaký máte — dlouhým, rozbitým, s chybějící hodnotou a podmínkou, ale se správným a jednoznačným výstupem. Nevybírejte příklady podle toho, že hezky vypadají nebo dobře popisují hlavní scénář. Vybírejte podle toho, jak daleko sahají a co je ten nejošklivější případ ve vaší práci. Neví to vývojář, neví to manažer, neví to model. Víte to vy.
Kategorie, kterou jste nikdy neukázali
Máte v instrukci kategorie objednávka, reklamace, vratka a další, ale v příkladech vratku nepoužijete ani jednou. Zpráva chtěl bych zboží vrátit, protože mi nesedí velikost pak klidně spadne do reklamace. Následuje známý rituál: kategorii zvýrazníte velkými písmeny, obložíte ji padesáti vykřičníky a přidáte slovo důležité — a chuť s AI seknout roste.
Jedna z prvních věcí ke kontrole je přitom úplně jinde: ukázala vůbec někdy nějaká demonstrace, jak vratka vypadá v akci?
Neznamená to, že každý chatbot nutně potřebuje jeden příklad každé kategorie — BDH-CQ není ChatGPT a barevné mřížky nejsou zákaznická podpora. Ale i z nezávislých výzkumů jazykových modelů známe podobnou citlivost na zastoupení výstupních hodnot, na výběr příkladů a na jejich pořadí. Pokud má model vybírat z pevného seznamu, začněte příkladem každé možnosti a u kategorií, které se pletou, přidejte hraniční případy, které je od sebe oddělují — a vysvětlete modelu, proč jste je rozdělili právě takhle.
Umí A, umí B, a přesto neumí A a B dohromady
Model nemusí selhat jen na chybějícím příkladu. Může umět A, může umět B a stejně nezvládnout jejich kombinaci. Autoři studie testovali přesun, otočení a zrcadlení motivu. Samostatný přesun zvládá dokonale. Rotace objektů je bezchybná. Rotace spojená s přesunem je také v pořádku. Samotné zrcadlení rovněž. Ale zrcadlení spojené s přesunem spadne zhruba na padesátiprocentní úspěšnost.
Skutečný nález tedy není v tom, že dvě operace jsou těžší než jedna. Je v tom, že jedna dvojice se složí dohromady a druhá vůbec ne — a vy dopředu nevíte, která z vašich operací je to zrcadlení, které najednou nepůjde.
Problém nekončí u barevných mřížek. Nezávislé práce na jazykových modelech popisují takzvanou mezeru v kompozici: model zvládne jednotlivé podúkoly, ale při jejich složení ztratí některou podmínku a nedokáže dílčí odpovědi spojit. V jejich testech tuhle mezeru spolehlivě nezavřelo ani samotné zvětšování modelu. Schopnější model většinou pomůže — ale cena ani velikost modelu samy o sobě nejsou diagnózou architektury vašeho promptu.
Skrytý rozhodovací strom patří do workflow, ne do promptu
Když v promptu stojí je-li faktura v eurech, přepočítej ji; je-li zálohová, přidej řádek; jde-li o dobropis, otoč znaménko, nezadali jste jeden úkol. Schovali jste do promptu malý rozhodovací strom.
Nechte model nejdřív dokument jen zařadit — běžná faktura, zálohová faktura, nebo dobropis; koruny, nebo eura. Tím vznikne obyčejný přepínač ve workflow, který vybere správnou větev, a každý další prompt dostane jednu jedinou práci. Kurz spočítá kalkulačka, takže na něj AI ani nepotřebujete. Chybějící pole zkontroluje validátor.
Model tím není chytřejší, ale je spolehlivější — nemusí dělat dvě rozhodnutí najednou. A vy konečně poznáte, kde se stala chyba, což je možná stejně důležité jako vyšší přesnost. Když jeden obří prompt vrátí špatnou fakturu, nevíte, jestli selhala kalkulace, výběr větve, přepočet, nebo formát. Když je postup rozdělený, má chyba svoji adresu: vidíte, který krok spadl, a opravujete jednu věc místo celého systému.
Větší model není automatická oprava všeho. Nejdřív ověřte, jestli složený prompt nejde rozpadnout na kroky, které umíte samostatně kontrolovat. Vyhnete se tím dražšímu modelu, ušetříte peníze a získáte násobně vyšší spolehlivost. Cenou je práce a úvaha, kterou musíte odvést dřív, než takového agenta postavíte.
Co ta studie naopak nedokazuje
Slabin má studie hodně. Rekordní číslo není dokonale doložené, systém je proprietární a testy na barevných mřížkách nejsou dostatečný základ pro hluboké závěry o inteligenci — ani univerzální návod pro každý prompt.
To ale vůbec nevadí. Autoři chtěli ukázat rekord v ceně za myšlení a cestou vytvořili mnohem zajímavější mapu toho, jak model pracuje s příklady, kde se jejich přenos láme a jak moc dokáže jediná ukázka změnit výsledek. Někdy je vedlejší produkt práce cennější než její cíl a tohle je přesně ten případ.
Třicet vstupů a jeden ošklivý příklad navíc
Stejná zásada platí i u vás. To nejcennější, co máte, je seznam vyřešených případů, na kterých vám prompt nefunguje. Připravte si zhruba třicet reálných vstupů, u kterých znáte správnou odpověď — a ne těch třicet nejhezčích. Dejte mezi ně překlepy, chybějící údaje, neobvyklé pořadí, špatně nakreslené věci, nejdelší vstupy a všechny možné vstupní kategorie. Pak pusťte prompt, o kterém si myslíte, že by měl fungovat.
Potom do příkladů přidejte jediný bezchybně vyřešený případ na samé hranici reálné obtížnosti — nejlépe právě ten, na kterém první verze selhala. Nic jiného neměňte a pusťte stejných třicet vstupů znovu. Neměřte jen celkovou přesnost, sledujte, které kategorie vám odpadávají. U několika vstupů zkuste parafráze a významově stejné varianty. A pokud pracujete s nedeterministickým nastavením, zopakujte několik běhů, abyste odlišili náhodu od skutečného efektu.
Jak si výsledek přeložit
Výsledek se pak čte snadno. Když to pomůže dramaticky, je to silný signál, že vaše příklady byly příliš úzké. Když to pomůže jen trochu, narážíte spíš na limity modelu. A když to nepomůže vůbec, zkontrolujte konfliktní instrukce, chybějící data, formát a chyby ve vzorovém výstupu, který modelu předkládáte. Teprve pak zkuste práci rozdělit na menší kroky — a měnit model až úplně na konci.
Je to otravné, ale funguje to. Spousta lidí postupuje přesně obráceně: prompt selže, tak přidají slova. Selže znovu, tak zapnou dražší model. Selže potřetí, tak přidají ještě víc slov.
Ukázaná platí
Instrukce popisuje pravidlo. Příklad ukazuje, jak to pravidlo vypadá v praxi a kam až s ním chcete dojít. Studie chtěla ukázat, že malý model dokáže levně uvažovat beze slov, a docela dobře to ukázala. Cestou ale ukázala něco užitečnějšího: rozdíl mezi promptem, který jednou vyšel, a systémem, který skutečně funguje.
Ten rozdíl nepoznáte podle toho, jak sebevědomě vám AI odpoví. Poznáte ho podle toho, co udělá na druhém, třetím a na tom úplně nejbrutálnějším příkladu — na tom, který jste jí původně vůbec nechtěli ukázat, protože jste si říkali, že z takového nepořádku stejně nic nepochopí.
Takže až vám příště AI odpoví naprostou pitomost nebo se vaše automatizace složí, položte si místo obvyklé výtky o nedostatku inteligence jinou otázku: ukázal jsem jí, co skutečně chci, nebo jen tu nejhezčí verzi toho, co si představuju? Možná ten návrh neselhává proto, že by byl špatný. Možná jen neví, co má dělat.