OpenAI
Táto stránka bola strojovo preložená. Prečítaj si pôvodný článok v angličtine.

Čo sú tokeny a ako ich počítať?

Aktualizované: yesterday

Čo sú tokeny?

Tokeny sú základné stavebné prvky textu, ktoré spracúvajú modely OpenAI. V závislosti od jazyka a kontextu môžu byť krátke ako jeden znak alebo dlhé ako celé slovo. Do počtu tokenov sa započítavajú medzery, interpunkcia aj časti slov. Takto rozhranie API interne rozdeľuje 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 funkcie tiktoken.encoding_for_model(model).

Príklady

Tu je niekoľko ukážok textov z praxe s ich približným počtom tokenov:

  • Citát Wayna Gretzkého „Miniete 100 % striel, ktoré nevystrelíte“ = 11 tokenov

  • Charta OpenAI = 476 tokenov

  • Deklarácia nezávislosti USA = 1 695 tokenov

Ako sa počíta počet tokenov

Keď odošlete text do rozhrania API:

  1. Text sa rozdelí na tokeny.

  2. Model tieto tokeny spracuje.

  3. Odpoveď sa vygeneruje ako postupnosť tokenov a potom sa skonvertuje späť na text.

Využitie 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 z histórie konverzácie (často účtované za nižšiu cenu).

  • Tokeny uvažovania – niektoré pokročilé modely pred vytvorením konečného výstupu interne vykonávajú ďalšie „kroky premýšľania“.

Tieto počty sa zobrazujú v metadátach odpovede rozhrania API a používajú sa na fakturáciu a sledovanie využitia.

Ak chcete tokenizáciu preskúmať podrobnejšie, môžete použiť náš interaktívny nástroj Tokenizer, pomocou ktorého vypočítate počet tokenov a uvidíte, ako sa text rozdeľuje na tokeny.

Ak chcete text tokenizovať programovo, použite Tiktoken – rýchly tokenizátor BPE určený špeciálne pre modely OpenAI.

Limity tokenov

Každý model má maximálny súhrnný 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 využitia.

Ak limit prekročíte, môžete:

  • Skrátiť alebo preformulovať príkazy.

  • Rozdeliť rozsiahly text na menšie časti.

  • Pred odoslaním vstupy zhrnúť alebo predbežne spracovať.

Ceny tokenov

Používanie rozhrania API sa účtuje za token. Cena sa líši podľa modelu a toho, či ide o vstupné, výstupné alebo uložené tokeny. Aktuálne sadzby nájdete na stránke s cenami OpenAI. Niektoré modely uvažovania môžu interne využívať viac tokenov, ich cieľom je však zvýšiť efektivitu znížením počtu tokenov potrebných na dokončenie úlohy.

Tokeny nie sú štandardizované naprieč modelmi ani poskytovateľmi AI. Rôzne modely môžu ten istý text spracovať alebo vygenerovať s odlišným počtom tokenov. Nižšia uvádzaná cena za milión tokenov preto nemusí znamenať nižšie celkové náklady.

Ani viditeľná dĺžka odpovede neposkytuje úplný obraz. Niektoré modely pred vytvorením odpovede interne používajú tokeny uvažovania, takže dlhšia viditeľná odpoveď nemusí znamenať, že model celkovo použil viac tokenov.

Pri porovnávaní modelov zohľadnite celkový počet potrebných tokenov aj náklady na úspešný výsledok. Porovnávacie testy môžu byť užitočným východiskom, no skutočné náklady a výkon modelov najlepšie zistíte testovaním na vlastných prípadoch použitia.

Skúmanie tokenov

Rozhranie API pracuje so slovami podľa ich kontextu v údajoch korpusu. Modely prevezmú príkaz, skonvertujú vstup na zoznam tokenov, príkaz spracujú a predpovedané tokeny skonvertujú späť na slová, ktoré vidíme v odpovedi.

Dve slová, ktoré sa nám zdajú rovnaké, môžu byť v závislosti od ich umiestnenia v texte vygenerované ako odlišné tokeny. Pozrite si, ako rozhranie API generuje hodnoty tokenov pre slovo „red“ podľa jeho kontextu v texte:

Sentence split into color-coded tokens with Text selected over Token IDs
Token ID output as a list of integers with the Token IDs tab selected

V prvom príklade vyššie token „2266“ pre „ red“ obsahuje medzeru na konci (poznámka: ide o vzorové identifikátory tokenov určené na demonštračné účely).

Sentence split into color-coded token blocks: My favorite color is Red.
Tokenizer output with Token IDs selected and a list of numeric token IDs

Token „2296“ pre „ Red“ (s medzerou na začiatku a veľkým prvým písmenom) sa líši od tokenu „2266“ pre „ red“ s malým písmenom.

Tokenizer example splitting “Red is my favorite color.” into color-coded tokens
Tokenizer output with Token IDs selected and a list of token ID numbers

Keď sa slovo „Red“ použije na začiatku vety, vygenerovaný token neobsahuje medzeru na začiatku. Token „7738“ sa líši od predchádzajúcich dvoch príkladov tohto slova.

Pozorovania:

Čím je token pravdepodobnejší alebo častejší, tým nižšie číslo sa mu priradí:

  • Token vygenerovaný pre bodku je vo všetkých troch vetách rovnaký („13“). Je to preto, že z hľadiska kontextu sa bodka používa v celom korpuse veľmi podobne.

  • Token vygenerovaný pre „red“ sa líši podľa umiestnenia slova 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“)

Bol tento článok užitočný?