Kamarád, co si rozjíždí menší e-shop, mi minulý měsíc ukázal fakturu za OpenAI API. Čekal skromnou částku, dostal číslo, které ho vážně zaskočilo. Nikdo mu neřekl, že AI modely neúčtují podle počtu dotazů, ale podle tokenů, a že čeština je v tomhle ohledu drahý jazyk.

Token je jednotka, ve které si AI modely měří všechno: kolik textu si pamatují, kolik ho zvládnou najednou přečíst, a hlavně kolik to bude stát. Kdo tohle nezná, snadno se spálí, přesně jako ten kamarád.

Token není slovo, i když to tak vypadá

Token je kousek textu, obvykle kratší než celé slovo. Model si vstupní text nejdřív rozseká na tyhle kousky, teprve pak s nimi pracuje. Slovo „pes” bývá jeden token. Delší nebo méně obvyklé slovo, třeba „nesrozumitelnost”, se může rozpadnout na tři čtyři menší kousky.

Jak přesně tohle rozsekávání (odborně tokenizace) uvnitř funguje a proč to modelu vůbec pomáhá, podrobně rozepisujeme v samostatném vysvětlení principu LLM. Tady se soustředíme na to, co token znamená pro vaši peněženku a pro to, kolik textu model unese.

Proč čeština vyjde dráž

OpenAI ve své dokumentaci k tokenizeru uvádí orientační přepočet pro angličtinu: zhruba čtyři znaky na jeden token. Jenže tenhle přepočet platí právě jen pro angličtinu. Čeština má bohatou skloňování a časování, navíc diakritiku, kterou tokenizer často řeže na samostatné kousky. Stejná myšlenka napsaná česky se typicky rozpadne na víc tokenů než ta samá věta v angličtině.

Je to jako platit za taxi podle najetých kilometrů, ne podle toho, kam jste chtěli dojet. Trasa přes zácpy a oklikami (čeština s dlouhými skloňovanými tvary) vás vyjde dráž než přímá cesta dálnicí (úspornější angličtina), i když jste nakonec dorazili do stejného cíle.

Proto se anglicky psaný prompt i s odpovědí vejde do míň tokenů než ten samý dotaz v češtině. Kamarádův e-shop komunikoval s API výhradně česky, popisy produktů, dotazy zákazníků, odpovědi chatbota, takže platil za víc tokenů, než by platil kdokoliv, kdo pracuje anglicky.

Zkuste si to na téhle větě, kterou právě čtete. Má necelých třicet českých slov, ale kvůli skloňování a diakritice se pravděpodobně rozpadne na víc než třicet tokenů. Stejně dlouhá anglická věta by se často vešla do tokenů méně, prostě proto, že angličtina píše kratší a jednodušší tvary slov.

Kolik se toho vejde najednou

Kontextové okno je maximální počet tokenů, které model zvládne mít najednou „na stole”, tedy přečíst si a pamatovat si v rámci jedné konverzace. Jakmile se konverzace přehoupne přes tenhle limit, model začne nejstarší část zapomínat, aby se vešla nová.

Prakticky to poznáte na dlouhém chatu, který vám najednou přestane rozumět odkazům na to, co jste psali na začátku. Model si to prostě už nepamatuje, vypadlo mu to z okna. Podrobněji o kontextovém okně a jeho limitech píšeme jinde, tady stačí vědět, že se měří ve stejné jednotce jako cena: v tokenech.

Obyčejný report na pět stran popsaného textu spotřebuje řádově jen pár tisíc tokenů, tedy zlomek i menšího kontextového okna. Kam se poděje ten zbylý prostor, pochopíte až u dlouhé, hodiny trvající konverzace nebo u nahraného dokumentu na desítky stran. Tam se limit najednou stane citelně reálným.

Output, tedy vygenerovaná odpověď, se navíc obvykle počítá zvlášť a bývá dražší než input, tedy to, co do modelu pošlete. Dává to smysl: model musí odpověď teprve vymyslet, token po tokenu, zatímco vaše zadání jen přečte.

Tady se skrývá past, na kterou kamarád přišel pozdě. Chatovací API si totiž při každé nové zprávě nepamatuje konverzaci samo od sebe. Aplikace mu musí poslat celou dosavadní historii znovu jako součást vstupu, otázku, odpověď, další otázku, a tak dál. Desátá zpráva v dlouhém chatu tak zaplatí i za všech devět předchozích, protože se posílají znovu s ní.

Na co si dát pozor

Než pošlete modelu velký dokument nebo dávku dotazů, odhadněte si předem, kolik to bude stát. Většina poskytovatelů nabízí kalkulačku tokenů nebo aspoň ukazatel spotřeby přímo v administraci účtu. OpenAI má navíc na webu veřejný nástroj Tokenizer, kam vložíte libovolný text a hned vidíte, na kolik tokenů se rozpadne, zdarma a bez založeného účtu. Pár minut s takovým nástrojem ušetří nepříjemné překvapení na konci měsíce.

Dávejte pozor i na to, že se nepočítá jen běžný text. Programový kód, tabulky nebo dlouhé číselné řady se často tokenizují méně úsporně než plynulá věta, protože obsahují spoustu neobvyklých znaků a mezer.

Odpověď, která se uprostřed věty utne, není nutně chyba modelu. Často jde jen o nastavený limit výstupních tokenů, který si nastavil vývojář aplikace, ne o to, že by model „nevěděl”, jak větu dokončit.

Shrnutí

Token je jednotka, ve které AI model měří svět: cenu, paměť i to, kolik toho najednou unese přečíst. Kdo tohle ví, nezaskočí ho faktura ani chatbot, co si najednou nepamatuje, o čem jste mluvili před chvílí.

A kamarádovi z e-shopu jsem nakonec poradil jednoduchou věc: kratší a věcnější prompty. Ušetří tokeny stejně spolehlivě, jako ušetří benzin řidič, který jede rovnou, ne oklikou přes tři vesnice.