Čo sú tokeny?
Tokeny sú základné stavebné prvky textu, ktoré spracúvajú modely OpenAI. Môžu byť krátke ako jeden znak alebo dlhé ako celé slovo, v závislosti od jazyka a kontextu. Medzery, interpunkcia aj časti slov sa započítavajú do počtu tokenov. Takto API interne segmentuje váš text pred vygenerovaním odpovede.
Užitočné orientačné pravidlá pre angličtinu:
1 token ≈ 4 znaky
1 token ≈ ¾ slova
100 tokenov ≈ 75 slov
1 – 2 vety ≈ 30 tokenov
1 odsek ≈ 100 tokenov
~1 500 slov ≈ 2 048 tokenov
Tokenizácia sa líši podľa modelu a kódovania. Presný počet pre cieľový model získate pomocou nástroja Tokenizer alebo tiktoken.encoding_for_model(model).
Príklady
Tu je niekoľko ukážok skutočných textov s ich približným počtom tokenov:
Citát Waynea Gretzkyho „Netrafíte 100 % striel, ktoré nevystrelíte“ = 11 tokenov
Charta OpenAI = 476 tokenov
Deklarácia nezávislosti USA = 1 695 tokenov
Ako sa počítajú počty tokenov
Keď odošlete text do API:
Text sa rozdelí na tokeny.
Model tieto tokeny spracuje.
Odpoveď sa vygeneruje ako postupnosť tokenov a potom sa prevedie späť na text.
Používanie tokenov sa sleduje v niekoľkých kategóriách:
Vstupné tokeny – tokeny vo vašej požiadavke.
Výstupné tokeny – tokeny vygenerované v odpovedi.
Tokeny vo vyrovnávacej pamäti – opätovne použité tokeny v histórii konverzácie (často účtované za zníženú cenu).
Tokeny na uvažovanie – v niektorých pokročilých modeloch sa pred vytvorením konečného výstupu interne zahŕňajú ďalšie „kroky premýšľania“.
Tieto počty sa zobrazujú v metadátach vašej odpovede API a používajú sa na fakturáciu a sledovanie používania.
Ak chcete ďalej skúmať tokenizáciu, môžete použiť náš interaktívny nástroj Tokenizer, ktorý vám umožní vypočítať počet tokenov a zistiť, ako sa text rozdeľuje na tokeny.
Prípadne, ak chcete tokenizovať text programovo, použite Tiktoken ako rýchly BPE tokenizátor špeciálne používaný pre modely OpenAI.
Limity tokenov
Každý model má maximálny kombinovaný limit tokenov (vstup + výstup). Súčasné vysokokapacitné modely podporujú v kontexte až stovky tisíc tokenov, hoci praktické limity sa môžu líšiť podľa verzie modelu a vašej úrovne používania.
Ak limit prekročíte, môžete:
Skrátiť alebo preformulovať príkazy.
Rozdeliť veľký text na menšie časti.
Zhrnúť alebo predspracovať vstupy pred ich odoslaním.
Ceny tokenov
Používanie API sa účtuje za token a cena sa líši podľa modelu a podľa toho, či ide o vstupné, výstupné alebo uložené tokeny. Aktuálne sadzby nájdete na stránke s cenami OpenAI. Niektoré uvažovacie modely môžu interne používať viac tokenov, no ich cieľom je zlepšiť efektivitu znížením počtu tokenov potrebných na dokončenú úlohu.
Skúmanie tokenov
API zaobchádza so slovami podľa ich kontextu v korpusových dátach. Modely prevezmú príkaz, prevedú vstup na zoznam tokenov, spracujú príkaz a predikované tokeny prevedú späť na slová, ktoré vidíme v odpovedi.
To, čo sa nám môže javiť ako dve identické slová, sa môže vygenerovať ako rôzne tokeny v závislosti od toho, ako sú v texte štruktúrované. Pozrite sa, ako API generuje hodnoty tokenov pre slovo „red“ na základe jeho kontextu v texte:
V prvom príklade vyššie token „2266“ pre „ red“ zahŕňa koncovú medzeru (poznámka: toto sú ukážkové ID tokenov na demonštračné účely).
Token „2296“ pre „ Red“ (s úvodnou medzerou a začínajúci veľkým písmenom) sa líši od tokenu „2266“ pre „ red“ s malým písmenom.
Keď sa „Red“ použije na začiatku vety, vygenerovaný token nezahŕňa úvodnú medzeru. Token „7738“ sa líši od predchádzajúcich dvoch príkladov tohto slova.
Pozorovania:
Čím je token pravdepodobnejší/častejší, tým nižšie číslo tokenu je mu priradené:
Token vygenerovaný pre bodku je rovnaký („13“) vo všetkých 3 vetách. Je to preto, že z kontextového hľadiska sa bodka v korpusových dátach používa pomerne podobne.
Token vygenerovaný pre „red“ sa líši podľa jeho umiestnenia vo vete:
Malé písmeno uprostred vety: „ red“ – (token: „2266“)
Veľké písmeno uprostred vety: „ Red“ – (token: „2297“)
Veľké písmeno na začiatku vety: „Red“ – (token: „7738“)
