„Spočítej mi, kolik nakonec zaplatím: mikrovlnka za 2 490 korun, sleva 20 procent, k tomu poštovné 99 korun, a na konci ještě uplatním věrnostní kupon na dalších 10 procent z celé objednávky.” Model odpověděl za dvě vteřiny, s jistotou v hlase i s přesným číslem na haléře. Jenže když jsem si to přepočítal na kalkulačce, vyšlo mi o padesát korun jinak. Model sečetl obě slevy dohromady na 30 procent z původní ceny mikrovlnky a poštovné do výpočtu vůbec nezahrnul.

Zkusil jsem to znovu, se stejným zadáním, jen jsem přidal jednu větu: „Rozepiš to krok za krokem, u každého kroku napiš mezivýsledek.” Model tentokrát nejdřív odečetl slevu od ceny mikrovlnky, zvlášť připočetl poštovné, a teprve na závěr strhl věrnostní slevu z celého součtu. Vyšlo to do haléře přesně.

Model byl mezi těmi dvěma pokusy úplně stejný. Změnila se jenom jedna přidaná věta.

Proč pomůže, když si to model rozepíše nahlas

Jazykový model negeneruje odpověď jako celek najednou. Skládá ji kousek po kousku (odborně se těm kouskům říká tokeny, zhruba části slov) a každý další kousek volí na základě všeho, co je před ním, včetně toho, co sám před chvílí napsal. Když má vystřelit rovnou finální číslo, opírá se jen o zadání. Když si nejdřív napíše mezivýsledek, ten se stane součástí textu, ze kterého počítá dál, podobně jako když si na papír vypíšete dílčí součet, než se pustíte do dalšího kroku výpočtu. Model tak v podstatě čte svoji vlastní odpověď o řádek zpátky, ne že by si ji pamatoval jako člověk v hlavě.

Anglicky se tomu říká chain-of-thought, česky nejčastěji řetězec myšlenek. Jako techniku ji v roce 2022 popsal tým výzkumníků Google vedený Jasonem Weiem, ve studii nazvané Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. Tehdy ještě nešlo o žádnou kouzelnou jednu větu. Testovali kombinaci s několika vzorovými příklady, kde byl u každého vidět celý postup výpočtu, ne jen výsledek, tedy vlastně few-shot prompting obohacený o zdůvodnění mezi otázkou a odpovědí. Až později se ukázalo, že u řady úloh stačí i mnohem jednodušší varianta, prostá věta typu „mysli krok za krokem” bez jediného příkladu, a přesnost přesto citelně stoupne.

Kde se ta jedna věta vážně vyplatí

Kdykoli má úloha víc kroků, které na sebe navazují, dává smysl nechat model postup rozepsat. Typicky počty se slevami, poplatky nebo daní z předchozího příkladu, ale stejně dobře to funguje u plánování, kde je potřeba poskládat víc podmínek najednou: „Schůzka končí v 10:30, cesta na druhý konec města trvá 40 minut, další schůzka začíná v 11:00, stihnu to?” Bez mezikroku model občas odpoví rovnou ano nebo ne z pocitu. S mezikrokem si napřed spočítá čas příjezdu a teprve pak ho porovná s termínem.

Podobně to platí u porovnávání víc možností podle víc kritérií najednou, třeba tří tarifů podle ceny, datového limitu a výpovědní lhůty. Rozepsaný postup donutí model projít každé kritérium zvlášť, místo aby jen napsal, který tarif „zní” nejlíp.

U kontroly kódu nebo hledání chyby v delším textu pomáhá stejný princip. „Projdi funkci řádek po řádku a popiš, co v ní který příkaz dělá, teprve pak řekni, kde je chyba” najde víc chyb než rovnou otázka „je tu chyba?”, protože model si napřed musí ověřit, co kód skutečně dělá, místo aby hádal od oka.

Společný jmenovatel všech těchhle případů je ověřitelný mezivýsledek. Tam, kde jde postup rozdělit na kroky a každý krok jde zkontrolovat, tahle jedna věta reálně sníží počet chyb ve výsledku.

Jak si o to říct

Nejjednodušší je přesně ta věta z úvodu. Fungují i příbuzné formulace: „než odpovíš, vypiš si mezivýsledky”, „popiš postup a teprve pak uveď finální odpověď”, nebo pro dodatečnou kontrolu „na konci zkontroluj, jestli ti výpočet sedí, a případně si ho oprav”. Tahle poslední věta je užitečný doplněk, model si tím sám nastaví druhé kolo kontroly a občas při něm najde vlastní chybu z prvního průchodu.

Celé zadání z úvodu textu vypadalo takhle:

Mikrovlnka stojí 2 490 Kč. Mám slevu 20 % na produkt, k tomu poštovné 99 Kč,
a nakonec věrnostní kupon na dalších 10 % z celé objednávky.
Kolik nakonec zaplatím? Rozepiš postup krok za krokem, u každého kroku
napiš mezivýsledek, a teprve na konci uveď celkovou částku.

Pro plánovací úlohu s víc podmínkami se osvědčuje podobná stavba: nejdřív fakta, pak žádost o postup, na závěr přesná otázka.

Schůzka A končí v 10:30. Cesta na schůzku B trvá 40 minut. Schůzka B
začíná v 11:00. Postupuj krok za krokem: nejdřív spočítej čas příjezdu,
pak ho porovnej se začátkem schůzky B, a teprve pak odpověz, jestli to stihnu.

V obou příkladech dělá rozdíl to, že model musí napsat mezivýsledek (kolik korun po první slevě, v kolik hodin dorazím), než se pustí do dalšího kroku. Kdybyste chtěli jen holé číslo nebo ano či ne bez žádosti rozepsat postup, o tenhle mezikrok byste ho připravili a vrátili se rovnou k prvnímu, míň spolehlivému pokusu.

Když si to model „odmyslí” ještě dřív, než začne psát

U dnešních velkých modelů se podobný krok po krocích odehrává automaticky, ještě než se objeví první slovo odpovědi. Zatímco dřív šlo o zvláštní řadu „uvažovacích” modelů vedle běžných, dnes je přemýšlení zabudované rovnou do hlavní řady: OpenAI ho u modelů GPT-5 nabízí jako nastavitelnou úroveň, Google u Gemini podobně a Anthropic má u modelů Claude Opus 5 a Claude Sonnet 5 takzvané adaptivní přemýšlení, kdy si model sám určí, kdy a jak dlouho má nad odpovědí přemýšlet. Model si sám pro sebe napíše obdobu řetězce myšlenek, jenom ho většinou neuvidíte celý, nebo ho uvidíte jen jako sbalenou, zkrácenou verzi schovanou pod tlačítkem pro zobrazení uvažování.

V praxi to znamená, že věta „mysli krok za krokem” u těchhle modelů málokdy uškodí, ale taky často nic nepřidá, protože přesně tohle už dělají bez vyzvání. Poznáte to podle drobného zpoždění před odpovědí a podle toho, že rovnou dostanete hotový výsledek, i když jste o mezivýsledky vůbec nežádali. U běžnějších a rychlejších modelů bez tohohle režimu naopak žádná automatika neběží, a tam ono jedno explicitní přidání pořád dělá znatelný rozdíl.

Na co si dát pozor

Delší odpověď stojí čas i tokeny. U jednoduchého dotazu, na který by stačila jedna věta, přidaná žádost o rozepsaný postup jen natáhne odpověď o odstavec, který nikdo nebude číst do konce.

Na čistou faktickou otázku technika nemá vliv. Kdy začala stavba Karlova mostu nebo jaké je hlavní město Chorvatska, model buď ví, nebo neví, žádný mezikrok mu chybějící údaj nedodá.

Rozepsaný postup se navíc nemusí přesně krýt s tím, jak model k číslu doopravdy dospěl. Víckrát se mi stalo, že model napsal tři věrohodně vyhlížející kroky výpočtu a na konci přesto uvedl číslo, které z nich neplyne. Vypsaný postup je tedy dobrá pomůcka ke kontrole, ne záruka, že je výsledek správný, přepočítat se vyplatí i tak.

Chybějící znalost tahle technika taky nenahradí. Když model neví, kolik dní trvá výpovědní lhůta u konkrétní pojistky, mezikrok mu ten údaj nevymyslí o nic přesněji, jen ho zabalí do přesvědčivěji vyhlížející úvahy.

U kreativního zadání, básně, sloganu nebo otevřeného vyprávění, tahle technika většinou nemá co dělat. Neexistuje tam jeden ověřitelný mezivýsledek, který by šlo zkontrolovat, jen různé stejně platné cesty k výsledku. Stejně tak se netýká generování obrázků, tam pojem „krok za krokem” nedává smysl, protože nejde o žádný ověřitelný mezivýsledek, ale o popis scény. Jak na obrazový prompt, píšu v článku Jak napsat prompt pro generování obrázku (s příklady).

Účtenka jako test

Kdykoli model vrátí hotové číslo, srovnání nebo plán bez jediného mezikroku a jde přitom o výpočet nebo víc navazujících podmínek, zkuste tu jednu větu navíc. U jednoduchého dotazu ji radši vynechte, ušetříte si odstavec, který by stejně nikdo nečetl.

A výsledek si, aspoň tam, kde jde o peníze nebo termín, který se pak objeví na faktuře nebo v kalendáři, přepočítejte sami. Tentokrát mi ta jedna věta ušetřila padesát korun. Příště to může vyjít úplně jinak, a proto se to vyplatí zkontrolovat pokaždé, ne jen když máte pocit, že něco nesedí.