Pošlete požadavek a za sekundu se v terminálu začne psát odpověď. Neobjeví se celá najednou, ale opravdu se píše: kousek za kouskem, jako by ji někdo právě teď psal na klávesnici. Někdy předtím na obrazovce visí Thinking a odpověď přijde znatelně později, zato je rozumnější.

To všechno jsou důsledky jednoho mechanismu. Pojďme si vysvětlit, jak funguje velký jazykový model: co dělá s vaším textem, čím měří jeho délku, odkud bere znalosti a co se děje během těch sekund, kdy přemýšlí. Žádný z těchto faktů nepotřebujete znát, abyste stiskli Enter. Zato dohromady výrazně mění, co od odpovědi očekáváte.

Komiks: muž natírá plot a ukazuje robotovi, jak se to dělá, a robot opakuje vzor tahů štětcem místo toho, aby natřel každé prkno
Jak moc je to zjednodušeno

Materiál je záměrně zjednodušený. Díky tomu se čte rychle a odpovídá na otázku, co se děje na vaší obrazovce. Přesný rozbor tu není a ani být nemůže - jen samotný blok transformeru by vydal na samostatnou práci.

Jazykový model odhaduje pokračování

Začneme definicí. Velký jazykový model, neboli LLM (large language model), není program s oknem a tlačítky ani chat. Je to mechanismus, na který se ostatní programy obracejí: předají mu text konverzace a on vrátí pokračování. Claude Code, webový chat, našeptávač v editoru - to vše je jen obal kolem takového volání a každý obal vypadá jinak.

Model umí jen jednu věc: na základě začátku textu odhadnout, jaké pokračování je nejpravděpodobnější. Nejedná se o hledání správné odpovědi, ale o odhad pravděpodobnosti - a to ne jen pro jednu variantu, ale pro každou položku ve svém slovníku.

Nejsnáze se to ukáže na krátké větě. Doplňte nahlas: "kávu piju bez..." Jako první vás napadne "cukru", hned potom "mléka", ale "internetu" se tam vůbec nehodí, přestože gramaticky je všechno v pořádku. Odhadli jste to za zlomek sekundy a bez přemýšlení. Model dělá totéž, jen formálně a důsledně až do konce: projde celý slovník a každému kandidátovi přiřadí číslo.

Model hodnotí varianty pokračování věty: po "kávu piju bez" je varianta "cukru" velmi pravděpodobná, "mléka" se také vyskytuje, "internetu" téměř nikdyZačátek větyKávu piju bezcukruvelmi pravděpodobněmlékataké se stáváinternetutéměř nikdy
Každá varianta má svůj odhad. Značku "správně" nemá ani jedna z nich

Všimněte si, co na schématu chybí. Žádná varianta není označena jako správná - existují jen více a méně pravděpodobná pokračování. A tato čísla nepocházejí z počítání, kolikrát se taková kombinace vyskytla v textech - tak fungovala úplně jiná, mnohem jednodušší technologie, od které se upustilo dávno před dnešními modely. Pravděpodobnost se počítá ze zákonitostí, které se uvnitř modelu usadily během tréninku. Proto vychází i pro větu, kterou před vámi nikdo nenapsal.

Jak se LLM liší od chatu a agenta

Tato tři slova se často používají jako synonyma, přestože popisují různé vrstvy systému.

  • LLM - samotný jazykový model. Přijímá kontext a generuje následující zprávu.
  • Chat - rozhraní a program kolem LLM. Uchovává historii, sestavuje požadavek, posílá ho modelu a zobrazuje odpověď.
  • Agent - LLM s cílem, pracovním cyklem a nástroji. Může požádat aplikaci, aby přečetla soubor, provedla vyhledávání nebo spustila test, podívala se na výsledek a zvolila další krok.
Zjednodušené schéma tří vnořených vrstev: uvnitř agenta je chat a uvnitř chatu jazykový model. LLM generuje zprávu, chat přidává historii a rozhraní, agent přidává cíl, pracovní cyklus, nástroje a oprávněníAgentcíl · pracovní cyklus · nástroje · oprávněníChatrozhraní · historie · sestavení kontextuLLMkontext → další zprávaKaždá vnější vrstva přidává možnosti kolem modelu
LLM - jádro; chat a agent přidávají kolem modelu své možnosti

Krátce: LLM nabízí řešení, chat organizuje konverzaci, agent propojuje rozhodnutí modelu s akcemi ve vnějším světě.

Tokeny, ne slova

K prvnímu schématu patří oprava: slova na něm stojí celá jen kvůli názornosti. Ve skutečnosti model rozkládá text na tokeny - kousky z vlastního slovníku. Tokenem bývá celé slovo, část slova nebo interpunkční znaménko, a mezera obvykle odjede dovnitř následujícího tokenu a jako samostatná jednotka se nepočítá.

Slovník se sestavuje předem na velkém souboru textů, a to postupně: algoritmus hledá často se opakující posloupnosti znaků a slepuje je do větších kusů. Co se objevovalo často, dostane vlastní token. Proto v hotovém slovníku žijí vedle sebe celá slova i útržky slov.

Každý token ve slovníku má své číslo a do modelu text vstupuje už jako čísla: nejdřív se řetězec rozřeže na kusy, pak se každý kus nahradí svým číslem. Zpátky na čitelný text se odpověď převede tímtéž slovníkem.

Stejná myšlenka ve dvou jazycích: anglická fráze coffee every morning se rozdělí na tři tokeny, česká kávu každé ráno při stejných třech slovech na pět. Mezera je znázorněna šedým obdélníkem uvnitř tokenu, před kterým stálaAngličtina3 slova, 3 tokenyČeština3 slova, ale tokenů už 5coffeeeverymorningkávukaždéráno
Šedý obdélník je mezera: nikam nemizí, jen odjede dovnitř následujícího tokenu. Rozdělení je přibližné, každý model má svůj vlastní slovník

Z toho plynou dvě věci, které stojí za to mít v hlavě. Za prvé: každá rodina modelů má vlastní slovník a tentýž řetězec nerozřeže stejně, a odhady typu "token je zhruba tři čtvrtiny slova" jsou jen hrubé vodítko pro angličtinu, nic víc. Za druhé: jazyk, kterého bylo ve zdrojových textech méně, se řeže jemněji. České slovo se běžně rozpadne na dva až tři tokeny tam, kde se anglické vejde do jednoho.

Tohle všechno je lepší jednou vidět než o tom číst. Otevřete The Tokenizer Playground, vložte tam pár svých obvyklých požadavků a hned po nich tentýž text anglicky - a hned uvidíte, na jaké kusy se řetězec rozpadne a kolik jich vyjde. Jedna výhrada: tamní tokenizer patří konkrétnímu modelu a ten, se kterým pracujete vy, rozdělí text po svém. Chodit tam má smysl kvůli samotnému jevu, ne kvůli přesnému číslu.

Praktický důsledek je nečekaný. Model nevidí písmena, ale kusy, a otázky na písmena mu jdou znatelně hůř než otázky na význam. Požádejte ho, aby spočítal, kolik "e" je v dlouhém slově, a odpověď klidně může být špatně. Ne proto, že by úloha byla těžká, ale proto, že slovo k modelu dorazilo ve dvou kusech a jednotlivá písmena uvnitř nich pro něj neexistují.

Jak se odpověď skládá z tokenů

Teď složíme mechanismus dohromady a ukáže se, že je jednodušší, než by se mohlo zdát. Model ohodnotí varianty, jedna z nich se vybere a připíše na konec textu. Pak všechno začne znovu - se stejným textem, jen o jeden token delším.

Tři kroky generování za sebou: k větě kávu piju bez se přidá token cukru, k výsledné větě token už, pak token desetCo už je napsánoNásledující tokenKaždý vybraný token se vrací jako podmínka dalšího krokuKávu piju bezKávu piju bez cukruKávu piju bez cukru užcukruuždeset
Odpověď se nebere hotová: roste po jednom tokenu a každý nový ovlivňuje ten další

Hotová odpověď nikde neležela a odnikud se nevytahovala - složila se v tolika krocích, kolik má tokenů. Ani nekončí podle časovače: v určitou chvíli je nejpravděpodobnějším pokračováním speciální token s významem "tady konec" a generování se zastaví.

Z téhož obrázku plyne ještě jeden detail: model nemůže smazat, co napsal. Token, který se dostal do textu, tam zůstane a je součástí podmínky každého dalšího kroku. Opravit se může stejně jako člověk v rozhovoru - další větou.

A tady je důsledek, který mnohé překvapí: stejná otázka položená dvakrát může dostat dvě různé odpovědi. Výběr v každém kroku nemusí padnout na nejpravděpodobnější variantu a jeden odlišný token s sebou strhne všechno, co následuje po něm. Nejčastěji se změní jen formulace, někdy ale i navržené řešení.

Co se děje v terminálu

To, jak odpověď postupně naskakuje v okně Claude Code, není indikátor načítání, ale samotné kroky generování: model odesílá tokeny tak, jak je vybírá, a program je hned vypisuje na obrazovku. Proto se dlouhá odpověď objevuje postupně a nevyskočí celá až po pauze.

Proč se model nazývá velký

Slovo "velký" nepopisuje velikost souboru, který někde leží. Stojí za ním dvě úplně jiná měřítka a obě je dobré si poctivě představit.

První je objem textu, kterým model prošel během tréninku: knihy, články, dokumentace, fóra, kód, a to všechno v množství, které by člověk nepřečetl ani za několik životů. Druhé je počet parametrů. Parametr je jedno číslo uvnitř modelu, jedno z nastavení, která se během tréninku dolaďovala. Jsou jich miliardy. U otevřených modelů se tohle číslo píše přímo do názvu: 7B, 14B, 70B, kde B znamená billion, miliarda.

A teď místo, kde se snadno splete. Počet parametrů není hodnocení kvality. Na výsledek mají vliv data, na kterých se model učil, jeho architektura, úlohy, na které ho ladili, i to, jak ho zmenšili, aby se někam vešel. Menší model klidně může na konkrétní práci porazit větší. Velké číslo v názvu samo o sobě nic neslibuje.

A ještě jedna věc, která se v takovém měřítku objeví jakoby sama od sebe. Aby šlo souvisle pokračovat ve větě o spadlém testu, nestačí vědět, která slova obvykle stojí vedle sebe. Je potřeba zachytit i to, jak jsou testy uspořádané. Model se učil hádat slova a mimochodem se v jeho parametrech usadilo i to, co tato slova popisují. Odtud pochází dojem informovanosti, přestože se mechanismus nezměnil ani o krok.

Odkud má model znalosti

Zdroje jsou přesně dva a jejich záměna vyjde draho.

První jsou parametry. Usadily se v nich zákonitosti osvojené během tréninku. Není to kartotéka, kde má každý záznam uvedený zdroj: znalost je rozetřená přes spoustu čísel a přesnou citaci z nich vytáhnout nejde. Proto model dokáže vydat něco skoro správného: forma sedí, jméno je povědomé, ale konkrétní detail je jiný.

Druhý je to, co právě teď leží v konverzaci: váš požadavek, všechno, co zaznělo před ním, obsah otevřených souborů, výstup spuštěných příkazů. Tento zdroj je přesný, ale krátkodobý. Do parametrů se nepřenese a další konverzace o něm už nic neví.

Všechno ostatní, co by člověk rád nazval samostatným zdrojem - soubor paměti, nalezená dokumentace, odpověď externí služby - přichází touž cestou: nejdřív se dostane do konverzace a teprve potom ovlivní odpověď. Vlastní dveře do projektu ani na internet model nemá.

První zdroj má datum a to datum má jméno - knowledge cutoff. Je to orientační bod, do kdy jsou vestavěné znalosti modelu obvykle aktuální. O knihovně vydané po tomto datu model ví jen tolik, kolik se stihlo vložit do aktuální konverzace.

Výhrada je tu důležitější než samotné datum. Cutoff neznamená, že do toho dne model ví všechno a potom nic. Mezery bývají i uvnitř období: o něčem bylo textů málo, někde si navzájem odporovaly, něco se do trénovacích dat prostě nedostalo. Datum určuje horní hranici, ne úplnost pod ní.

A drobnost, ale užitečná. Ptát se na cutoff samotného modelu není moc dobrý nápad: na tuto otázku odpoví generováním, tedy vybere něco věrohodného. Přesné datum žije v dokumentaci konkrétní verze a u sousedních modelů téže rodiny se může lišit.

Co znamená Thinking

Když se na obrazovce objeví Thinking, model se nepřepnul do nějakého jiného režimu vědomí. Jen dostal prostor na přemýšlení dřív, než začne odpovídat. Technicky je to úplně stejné generování: model nejdřív napíše koncept pro sebe - rozebere úlohu, zváží varianty, polemizuje sám se sebou - a teprve potom vydá finální text. Jak dlouho přemýšlet, o tom dnešní modely do velké míry rozhodují samy: u jednoduché otázky je koncept krátký nebo žádný, u zamotané delší.

Jeden požadavek může jít rovnou k rychlé odpovědi, nebo před finální odpovědí projít rozborem úlohy a ověřenímJeden požadavek - různý rozpočet do odpovědiRychlePožadavekRychlá odpověďThinkingPožadavekAnalýzaOvěřeníOdpověďDruhá cesta spotřebuje před finální odpovědí víc času a tokenů
Stejný požadavek může získat rychlou odpověď nebo další čas na analýzu a ověření

Proč je to potřeba, je vidět na příkladu. Agent hledá důvod padajícího testu. První věrohodné vysvětlení ukazuje na klienta k externí službě, ale sousední test a chybový text říkají něco jiného: jde o zpracování dat. S prostorem navíc model stihne rozpor zaznamenat a změnit směr dřív, než navrhne opravu. Zisk zde není v délce úvahy, ale v tom, že ověření změnilo následující krok.

První vysvětlení vůbec často nebývá to pravé. Je věrohodné, ale právě věrohodnost byla kritériem, podle kterého ho mechanismus vybral.

Teď k tomu, kdy se úvahy navíc vyplatí. Stojí čas a zapínat je kvůli každé maličkosti nemá smysl.

Obvykle stačí rychlá odpověďVyplatí se dát prostor úvahám
vysvětlit, co dělá kousek kódu na obrazovcenajít příčinu padajícího testu, když je ve hře několik souborů
opravit překlep nebo formátporovnat dvě řešení spolu s jejich omezeními
převyprávět text, který jste právě vložilinaplánovat přepracování, kde na sobě kroky závisejí

Vodítko je jednoduché: čím víc je v úloze rozcestí a závislostí, tím užitečnější je nechat model rozvinout úvahu. U přejmenování proměnné se na hotový výsledek podíváte rychleji, než byste přečetli úvahy o něm.

A poctivě o hranicích. Zobrazené úvahy nejsou přesným záznamem toho, co se dělo uvnitř; často je to převyprávění sestavené pro čtenáře. Dlouhý a úhledný řetězec klidně může vyrůst z chybného předpokladu a díky tomu vypadat spolehlivěji, než ve skutečnosti je. Bývá to i obráceně: odpověď už je nalezená, ale model dál pochybuje, chodí v kruhu a sám sebe zamotává. Tohle má dokonce jméno - overthinking.

Co funguje lépe než "pořádně se zamysli"

Prosba, ať model přemýšlí déle, je slabá páka: délka konceptu sama o sobě nic nezlepší. Mnohem víc zabere jasný cíl, pojmenovaná omezení a srozumitelné znamení, že je úloha vyřešená. Pak má model co kontrolovat ve svých vlastních úvahách.

Co model neumí

Seznam je krátký a je lepší ho znát předem, než na něj přijít u skutečné úlohy.

  • Zaručit, že fakt je správný. Mechanismus vybírá pravděpodobné pokračování, neověřuje tvrzení podle zdroje. Vymyšlené, ale věrohodné detaily se nazývají halucinace.
  • Nezáviset na formulaci. Přeházená slova a přidané upřesnění mění odpověď, protože o všem rozhoduje text, který stojí před tímto místem.
  • Sám se dozvídat nové věci. Bez externích zdrojů se vestavěné znalosti neaktualizují: o včerejším vydání knihovny ví model jen to, co mu někdo ukázal.
  • Opakovat se slovo od slova. Stejný požadavek může dát různý výsledek a je to vlastnost mechanismu, ne porucha.
  • Být prostý zkreslení zdrojových textů. Co tam bylo popsáno jednostranně nebo nebylo popsáno vůbec, to se v odpovědích ozve.

Téměř všechno, co kolem modelů vyrostlo, je odpovědí na některý bod tohoto seznamu. Vyhledávání a práce s dokumentací se objevily proto, že vestavěné znalosti zastarávají. Nástroje a agenti - protože sám model umí jen mluvit.

Co to vysvětluje v chování agenta

Tohle z celého mechanismu uvidíte přímo na obrazovce Claude Code:

  • odpověď se skládá po kouscích, protože tak skutečně vzniká. Je to proces, ne efekt;
  • dva stejné požadavky daly různé odpovědi - tak to má být, generování se doslova neopakuje. Potřebujete dřívější výsledek - spolehlivější je vrátit se k už získané odpovědi než se ptát znovu;
  • Thinking dává místo na koncept, ne záruku správnosti. U rozboru vícekrokové úlohy se vyplatí, u přejmenování proměnné spíš překáží;
  • dokud agent soubor nepřečetl, odpověď o něm stojí na obecných zákonitostech. Všechno, co se dostane do konverzace, váží více než to, co se usadilo v parametrech;
  • o čerstvých verzích knihoven model ve výchozím stavu ví málo a nejsnáz se to napraví dokumentací vloženou do konverzace;
  • když se odpověď ubírá špatným směrem, víc pomůže doplnit, co chybí, než zopakovat prosbu stejnými slovy. Mechanismus se staví na textu před odpovědí, ne na naléhavosti.

Znalost mechanismu nedělá model horším, než je. Jen vysvětluje, co od něj čekat: ne příručku se zárukou, ale velmi dobrého pokračovatele textu, kterému začátek zadáváte vy.

Video: stejný mechanismus v obrázcích

Kanál 3Blue1Brown má krátké video, které shrnuje základy do jedné názorné animace: tokeny, pravděpodobnosti dalšího slova, pozornost a to, odkud se vůbec berou parametry modelu. Jmenuje se Large Language Models explained briefly.

Originál je v angličtině, ale video má několik zvukových stop s překladem, přepínají se v nastavení přehrávače. Pokud stopa v potřebném jazyce chybí, otevřete video přímo na YouTube: ve webovém přehrávači je výběr širší.

Tímto videem kanál nekončí. Najdete tam celou sérii o neuronových sítích, transformerech a attention - stejné myšlenky, jen podrobněji a s matematikou. Pokud po článku budete chtít pochopit nejen "co se děje", ale "proč to vůbec funguje", začněte právě tam.