Odošlete požiadavku a o sekundu sa v termináli začne vypisovať odpoveď. Neobjaví sa celá naraz, ale naozaj sa vypisuje: kúsok po kúsku, akoby ju niekto práve teraz písal na klávesnici. Niekedy pred tým na obrazovke visí Thinking a odpoveď príde citeľne neskôr, zato je rozumnejšia.

To všetko sú dôsledky jedného mechanizmu. Poďme si rozobrať, ako funguje veľký jazykový model: čo robí s vaším textom, čím meria jeho dĺžku, odkiaľ berie znalosti a čo sa deje počas tých sekúnd, keď premýšľa. Žiadny z týchto faktov nepotrebujete, aby ste stlačili Enter. Zato spolu citeľne menia, čo od odpovede očakávate.

Komiks: muž natiera plot a ukazuje robotovi, ako sa to robí, a robot opakuje vzor ťahov štetcom namiesto toho, aby natrel každú dosku
Nakoľko je to zjednodušené

Materiál je zámerne zjednodušený. Vďaka tomu sa číta rýchlo a odpovedá na otázku, čo sa deje na vašej obrazovke. Presný rozbor tu nie je a ani byť nemôže - len samotný blok transformera by vydal na samostatnú prácu.

Jazykový model odhaduje pokračovanie

Začnime samotným predmetom. Veľký jazykový model, skrátene LLM (z anglického large language model), nie je program s oknom a tlačidlami ani chat. Je to mechanizmus, na ktorý sa iné programy obracajú: odovzdajú mu text rozhovoru a on vráti pokračovanie. Claude Code, webový chat, návrhy v editore - to všetko je obal okolo takéhoto volania a každý obal vyzerá inak.

Model pritom vie jedno: podľa začiatku textu odhadnúť, ktoré pokračovanie je pravdepodobnejšie. Nie nájsť správnu odpoveď, ale práve odhadnúť pravdepodobnosť, a to nie pre jednu možnosť, ale pre každú, ktorá je v jeho slovníku.

Najľahšie sa to ukáže na krátkej vete. Dokončite nahlas: "kávu pijem bez..." Ako prvé vám napadne "cukru", hneď potom "mlieka", ale "internetu" sa tam vôbec nehodí, hoci gramaticky je všetko v poriadku. Odhadli ste to za zlomok sekundy a bez premýšľania. Model robí to isté, len formálne a dôsledne až do konca: prejde celý slovník a každému kandidátovi priradí číslo.

Model odhaduje možnosti pokračovania vety: po "kávu pijem bez" je možnosť "cukru" veľmi pravdepodobná, "mlieka" sa tiež stáva, "internetu" takmer nikdyZačiatok vetyKávu pijem bezcukruveľmi pravdepodobnémliekatiež sa stávainternetutakmer nikdy
Každá možnosť má svoj odhad. Značku "správne" nemá ani jedna z nich

Všimnite si, čo na schéme nie je. Žiadna možnosť nie je označená ako správna: sú len viac a menej pravdepodobné pokračovania. A tie čísla nevznikajú počítaním, koľkokrát sa takéto spojenie objavilo v textoch - tak fungovala úplne iná, oveľa jednoduchšia technológia, od ktorej sa upustilo dávno pred dnešnými modelmi. Pravdepodobnosť sa vypočítava zo zákonitostí, ktoré sa v modeli zafixovali počas tréningu. Preto vychádza aj pre vetu, ktorú pred vami ešte nikto nenapísal.

Ako sa LLM líši od chatu a agenta

Tieto tri slová sa často používajú ako synonymá, hoci opisujú rôzne vrstvy systému.

  • LLM - samotný jazykový model. Dostane kontext a vygeneruje ďalšiu správu.
  • Chat - rozhranie a program okolo LLM. Uchováva históriu, zostavuje požiadavku, posiela ju modelu a zobrazuje odpoveď.
  • Agent - LLM s cieľom, pracovným cyklom a nástrojmi. Môže požiadať aplikáciu, aby prečítala súbor, spustila vyhľadávanie alebo test, potom si pozrie výsledok a vyberie ďalší krok.
Zjednodušená schéma troch vnorených vrstiev: agent obsahuje chat a chat obsahuje jazykový model. LLM generuje správu, chat pridáva históriu a rozhranie, agent pridáva cieľ, pracovný cyklus, nástroje a povoleniaAgentcieľ · pracovný cyklus · nástroje · povoleniaChatrozhranie · história · zostavenie kontextuLLMkontext → ďalšia správaKaždá vonkajšia vrstva pridáva možnosti okolo modelu
LLM - jadro; chat a agent pridávajú okolo modelu svoje možnosti

Stručne: LLM navrhuje riešenie, chat organizuje rozhovor, agent spája rozhodnutia modelu s činnosťami vo vonkajšom svete.

Tokeny, nie slová

K prvej schéme patrí oprava: slová na nej stoja celé len kvôli názornosti. V skutočnosti model rozkladá text na tokeny - kúsky z vlastného slovníka. Tokenom býva celé slovo, časť slova alebo interpunkčné znamienko, a medzera zvyčajne odcestuje dovnútra nasledujúceho tokenu a ako samostatná jednotka sa nepočíta.

Slovník sa zostavuje vopred na veľkom súbore textov, a to postupne: algoritmus hľadá často sa opakujúce postupnosti znakov a zlepuje ich do väčších kusov. Čo sa objavovalo často, dostane vlastný token. Preto v hotovom slovníku žijú vedľa seba celé slová aj útržky slov.

Každý token v slovníku má svoje číslo a do modelu vstupuje text už ako čísla: najprv sa reťazec rozreže na kusy, potom sa každý kus nahradí svojím číslom. Späť na čitateľný text sa odpoveď prevedie tým istým slovníkom.

Tá istá myšlienka v dvoch jazykoch: anglická fráza coffee every morning sa rozdelí na tri tokeny, slovenská kávu každé ráno pri tých istých troch slovách na päť. Medzera je znázornená sivým obdĺžnikom vnútri tokenu, pred ktorým stálaAngličtina3 slová, 3 tokenySlovenčina3 slová, ale tokenov už 5coffeeeverymorningkávukaždéráno
Sivý obdĺžnik je medzera: nikam nezmizne, len odcestuje dovnútra nasledujúceho tokenu. Rozdelenie je približné, každý model má vlastný slovník

Z toho vyplývajú dve veci, ktoré sa oplatí mať v hlave. Prvá: každá rodina modelov má vlastný slovník a ten istý reťazec nerozreže rovnako, a odhady typu "token je zhruba tri štvrtiny slova" sú len hrubé vodidlo pre angličtinu, nič viac. Druhá: jazyk, ktorého bolo v zdrojových textoch menej, sa reže jemnejšie. Slovenské slovo sa bežne rozpadne na dva až tri tokeny tam, kde sa anglické zmestí do jedného.

Toto všetko je lepšie raz vidieť, než o tom čítať. Otvorte The Tokenizer Playground, vložte tam pár svojich bežných požiadaviek a hneď po nich ten istý text po anglicky - a hneď uvidíte, na aké kusy sa reťazec rozpadne a koľko ich vyjde. Jedna výhrada: tamojší tokenizer patrí konkrétnemu modelu a ten, s ktorým pracujete vy, rozdelí text po svojom. Chodiť tam má zmysel kvôli samotnému javu, nie kvôli presnému číslu.

Praktický dôsledok je nečakaný. Model nevidí písmená, ale kusy, a otázky na písmená mu idú citeľne horšie než otázky na význam. Požiadajte ho, aby spočítal, koľko písmen "o" je v dlhom slove, a odpoveď pokojne môže byť nesprávna. Nie preto, že by úloha bola ťažká, ale preto, že slovo k modelu doputovalo v dvoch kusoch a jednotlivé písmená vnútri nich pre neho neexistujú.

Ako sa z tokenov zostavuje odpoveď

Teraz poskladáme mechanizmus dokopy a ukáže sa, že je jednoduchší, než by sa mohlo zdať. Model odhadne možnosti, jedna z nich sa vyberie a dopíše na koniec textu. Potom sa všetko začne odznova - s tým istým textom, len o jeden token dlhším.

Tri kroky generovania za sebou: k vete kávu pijem bez sa pridá token cukru, k výslednej vete token už, potom token desaťČo je už napísanéĎalší tokenKaždý vybraný token sa vracia do podmienky nasledujúceho krokuKávu pijem bezKávu pijem bez cukruKávu pijem bez cukru užcukruuždesať
Odpoveď sa neberie hotová: narastá po jednom tokene a každý nový ovplyvňuje ten ďalší

Hotová odpoveď nikde neležala a nebrala sa odnikiaľ - je poskladaná z toľkých krokov, koľko má tokenov. Ani nekončí podľa časovača: v istej chvíli sa ako najpravdepodobnejšie pokračovanie ukáže špeciálny token s významom "tu je koniec" a generovanie sa zastaví.

Z toho istého obrázka vyplýva ešte jeden detail. Vymazať napísané model nevie: token, ktorý sa dostal do textu, v ňom zostáva a vstupuje do podmienky každého ďalšieho kroku. Opraviť sa dokáže presne tak ako človek v rozhovore - ďalšou vetou.

A tu je dôsledok, ktorý mnohých prekvapí: tá istá otázka položená dvakrát môže dostať dve rôzne odpovede. Výber v každom kroku nemusí padnúť na najpravdepodobnejšiu možnosť a jeden odlišný token so sebou strhne všetko, čo ide po ňom. Najčastejšie sa zmení len formulácia, niekedy však aj navrhnuté riešenie.

Čo sa deje v termináli

To, ako sa odpoveď objavuje v okne Claude Code, nie je indikátor načítavania, ale samotné kroky generovania: model odovzdáva tokeny priebežne, ako ich vyberá, a program ich hneď vypisuje na obrazovku. Preto sa dlhá odpoveď objavuje postupne a nevyskočí celá naraz po pauze.

Prečo sa model nazýva veľký

Slovo "veľký" neopisuje veľkosť súboru, ktorý niekde leží. Stoja za ním dve úplne iné mierky a obe sa oplatí predstaviť si poctivo.

Prvá je objem textu, ktorým model prešiel pri tréningu: knihy, články, dokumentácia, fóra, kód - a to všetko v množstvách, ktoré by človek neprečítal ani za niekoľko životov. Druhá je počet parametrov. Parameter je jedno číslo vnútri modelu, jedno z nastavení, ktoré sa dolaďovali počas tréningu. Sú ich miliardy. Pri otvorených modeloch sa toto číslo dáva priamo do názvu: 7B, 14B, 70B, kde B znamená billion, teda miliardu.

A tu sa ľahko pomýlite. Počet parametrov nie je hodnotenie kvality. Na výsledok vplývajú aj dáta, na ktorých sa model učil, aj jeho architektúra, aj to, na aké úlohy ho ladili, aj to, ako ho zmenšili, aby sa niekam zmestil. Menší model pokojne môže na konkrétnej úlohe predbehnúť väčší. Veľké číslo v názve samo osebe nesľubuje nič.

A ešte jedna vec, ktorá pri takej mierke vzniká akoby sama od seba. Aby model plynulo pokračoval vo vete o spadnutom teste, nestačí vedieť, ktoré slová zvyčajne stoja vedľa seba. Treba zachytiť aj to, ako sú testy postavené. Model sa učil hádať slová, a popritom sa v jeho parametroch zafixovalo to, čo tie slová opisujú. Odtiaľ pochádza dojem, že model vie, o čom hovorí, hoci mechanizmus sa nezmenil ani o krok.

Odkiaľ má model svoje znalosti

Zdroje sú presne dva a ich zámena vyjde draho.

Prvý - parametre. Zafixovali sa v nich zákonitosti, ktoré si model osvojil pri tréningu. Nie je to kartotéka, kde má každý záznam uvedený zdroj: znalosť je rozotretá po množstve čísel a presný citát sa z nej vytiahnuť nedá. Preto model dokáže vydať niečo takmer správne: forma sedí, meno je známe, ale konkrétny detail nie je ten pravý.

Druhý - to, čo práve teraz leží v rozhovore: vaša požiadavka, všetko, čo zaznelo pred ňou, obsah otvorených súborov, výstup spustených príkazov. Tento zdroj je presný, ale krátkodobý. Do parametrov sa nepresúva a ďalší rozhovor o ňom už nič nevie.

Všetko ostatné, čo by sa žiadalo nazvať samostatným zdrojom - súbor pamäte, nájdená dokumentácia, odpoveď externej služby - prichádza tou istou cestou: najprv sa dostane do rozhovoru a až potom ovplyvní odpoveď. Vlastné dvere do projektu ani na internet model nemá.

Prvý zdroj má dátum a ten má meno - knowledge cutoff. Je to orientačný bod, do kedy sú vstavané znalosti modelu zvyčajne aktuálne. O knižnici, ktorá vyšla po tomto dátume, model vie toľko, koľko stihli vložiť do aktuálneho rozhovoru.

Výhrada je tu dôležitejšia než samotný dátum. Cutoff neznamená, že do toho dňa model vie všetko a po ňom nič. Medzery bývajú aj vnútri obdobia: o niečom bolo textov málo, niekde si protirečili, niečo sa do tréningových dát jednoducho nedostalo. Dátum stanovuje hornú hranicu, nie záruku úplnosti pod ňou.

A jedna drobnosť, ale užitočná. Pýtať sa na cutoff samotného modelu nie je dobrý nápad: na túto otázku odpovie generovaním, teda vyberie niečo pravdepodobné. Presný dátum nájdete v dokumentácii konkrétnej verzie a pri susedných modeloch tej istej rodiny sa pokojne môže líšiť.

Čo znamená Thinking

Keď sa na obrazovke objaví Thinking, model sa neprepol do nejakého iného režimu vedomia. Len dostal priestor premýšľať skôr, než začne odpovedať. Technicky je to presne to isté generovanie: model najprv napíše koncept pre seba - rozoberie úlohu, zváži možnosti, polemizuje sám so sebou - a až potom vydá finálny text. Ako dlho premýšľať, rozhodujú dnešné modely do veľkej miery samy: pri jednoduchej otázke je koncept krátky alebo žiadny, pri zamotanej dlhší.

Jedna požiadavka môže prejsť rovno k rýchlej odpovedi alebo prejsť cez rozbor úlohy a kontrolu pred finálnou odpoveďouJedna požiadavka - rôzny rozpočet pred odpoveďouRýchloPožiadavkaRýchla odpoveďThinkingPožiadavkaRozborKontrolaOdpoveďDruhá cesta minie pred finálnou odpoveďou viac času a tokenov
Tá istá požiadavka môže dostať rýchlu odpoveď alebo čas navyše na rozbor a kontrolu

Načo je to dobré, ukáže príklad. Agent hľadá príčinu padajúceho testu. Prvé vierohodné vysvetlenie ukazuje na klienta externej služby, ale susedný test a text chyby hovoria o niečom inom: problém je v spracovaní dát. S priestorom navyše model stihne všimnúť si rozpor a zmeniť smer skôr, než navrhne opravu. Zisk tu nie je v dĺžke úvahy, ale v tom, že kontrola zmenila ďalší krok.

Prvé vysvetlenie vôbec často nebýva to pravé. Je vierohodné, lenže práve vierohodnosť bola kritériom, podľa ktorého ho mechanizmus vybral.

Teraz k tomu, kedy sa úvaha navyše oplatí. Stojí čas, a zapínať ju na každú drobnosť nemá zmysel.

Zvyčajne stačí rýchla odpoveďOplatí sa dať priestor úvahe
vysvetliť, čo robí kus kódu na obrazovkenájsť príčinu padajúceho testu, keď je v hre niekoľko súborov
opraviť preklep alebo formátovanieporovnať dve riešenia aj s ich obmedzeniami
prerozprávať text, ktorý ste práve vložilinaplánovať prerábku, kde kroky závisia jeden od druhého

Vodidlo je jednoduché: čím viac je v úlohe rázcestí a závislostí, tým viac sa oplatí nechať model rozvinúť úvahu. Pri premenovaní premennej si hotový výsledok pozriete rýchlejšie, než by ste prečítali úvahu o ňom.

A poctivá hranica. Zobrazená úvaha nie je presný záznam toho, čo sa dialo vnútri; často je to prerozprávanie zostavené pre čitateľa. Dlhý a úhľadný reťazec môže pokojne vyrásť z nesprávneho predpokladu a práve preto vyzerať spoľahlivejšie, než je. Stáva sa aj opak: odpoveď je už nájdená, ale model ďalej pochybuje, chodí v kruhu a zamotáva sa sám do seba. Aj to má svoj názov - overthinking.

Čo funguje lepšie než "poriadne sa zamysli"

Prosba, aby model premýšľal dlhšie, je slabá páka: dĺžka konceptu sama osebe nič nezlepší. Oveľa silnejšie fungujú jasný cieľ, pomenované obmedzenia a zrozumiteľné kritérium, podľa ktorého je úloha vyriešená. Vtedy má model čo kontrolovať vo vlastnej úvahe.

Čo model nevie robiť

Zoznam je krátky a je lepšie poznať ho vopred, než na neho prísť pri živej úlohe.

  • Zaručiť, že fakt je správny. Mechanizmus vyberá pravdepodobné pokračovanie, neoveruje tvrdenie podľa zdroja. Vymyslené, ale vierohodné podrobnosti sa nazývajú halucinácie.
  • Nezávisieť od formulácie. Prehodené slová a pridané spresnenie menia odpoveď, pretože o všetkom rozhoduje text, ktorý stojí pred týmto miestom.
  • Sám sa dozvedať nové veci. Bez externých zdrojov sa vstavané znalosti neaktualizujú: o včerajšom vydaní knižnice model vie len to, čo mu ukázali.
  • Opakovať sa slovo po slove. Tá istá požiadavka môže dať iný výsledok a je to vlastnosť mechanizmu, nie porucha.
  • Byť bez skreslení zdrojových textov. Čo tam bolo opísané jednostranne alebo vôbec, to sa ozve aj v odpovediach.

Takmer všetko, čo okolo modelov vyrástlo, je odpoveďou na niektorý bod z tohto zoznamu. Vyhľadávanie a práca s dokumentáciou vznikli preto, že vstavané znalosti zastarávajú. Nástroje a agenti - preto, že samotný model vie len hovoriť.

Čo to vysvetľuje v správaní agenta

Toto z celého mechanizmu vidno priamo na obrazovke Claude Code:

  • odpoveď sa vypisuje po kúskoch, pretože tak naozaj vzniká. Je to proces, nie efekt;
  • dve rovnaké požiadavky dostali rôzne odpovede - tak to má byť, generovanie sa slovo po slove neopakuje. Potrebujete predchádzajúci výsledok - spoľahlivejšie je vrátiť sa k tomu, čo už máte, než sa pýtať znova;
  • Thinking dáva priestor na koncept, nie záruku správnosti. Pri rozbore viackrokovej úlohy sa oplatí, pri premenovaní premennej skôr prekáža;
  • kým agent súbor neprečítal, odpoveď o ňom stojí na všeobecných zákonitostiach. Všetko, čo sa dostalo do rozhovoru, váži viac než všetko, čo sa zafixovalo v parametroch;
  • o čerstvých verziách knižníc model v predvolenom stave vie málo a najjednoduchšie sa to napraví dokumentáciou vloženou do rozhovoru;
  • ak sa odpoveď vydala zlým smerom, užitočnejšie je doplniť, čo chýba, než zopakovať prosbu tými istými slovami. Mechanizmus stavia na texte pred odpoveďou, nie na naliehaní.

Znalosť mechanizmu nerobí model horším, než je. Len vysvetľuje, čo od neho čakať: nie príručku so zárukou, ale veľmi dobrého pokračovateľa textu, ktorému začiatok zadávate vy.

Video: rovnaký mechanizmus v obrázkoch

Kanál 3Blue1Brown má krátke video, ktoré zhŕňa to podstatné do jednej názornej animácie: tokeny, pravdepodobnosti ďalšieho slova, pozornosť (attention) a to, odkiaľ sa vôbec berú parametre modelu. Volá sa Large Language Models explained briefly.

Originál je v angličtine, ale video má niekoľko zvukových stôp s prekladom, prepínajú sa v nastaveniach prehrávača. Ak stopa vášho jazyka chýba, otvorte video priamo na YouTube: vo webovom prehrávači je výber širší.

Tým sa kanál nekončí. Nájdete tam celú sériu o neurónových sieťach, transformeroch a attention - tie isté myšlienky, len podrobnejšie a s matematikou. Ak po článku budete chcieť pochopiť nie "čo sa deje", ale "prečo to vôbec funguje", začnite práve tam.