OpenAI
Ova je stranica strojno prevedena. Pogledajte izvorni članak na engleskom jeziku.

Što su tokeni i kako ih brojati?

Ažurirano: 2 days ago

Što su tokeni?

Tokeni su osnovne jedinice teksta koje obrađuju modeli OpenAI-ja. Mogu biti kratki poput jednog znaka ili dugi poput cijele riječi, ovisno o jeziku i kontekstu. Razmaci, interpunkcijski znakovi i dijelovi riječi ulaze u ukupan broj tokena. API na taj način interno segmentira vaš tekst prije generiranja odgovora.

Korisne okvirne procjene za engleski:

  • 1 token ≈ 4 znaka

  • 1 token ≈ ¾ riječi

  • 100 tokena ≈ 75 riječi

  • 1–2 rečenice ≈ 30 tokena

  • 1 odlomak ≈ 100 tokena

  • ~1.500 riječi ≈ 2.048 tokena

Tokenizacija se razlikuje ovisno o modelu i kodiranju. Za točan broj za ciljni model upotrijebite alat za tokenizaciju ili tiktoken.encoding_for_model(model).

Primjeri

Evo nekoliko primjera tekstova iz stvarnog svijeta s približnim brojem tokena:

  • Citat Waynea Gretzkyja „Promašite 100 % udaraca koje ne pokušate“ = 11 tokena

  • Povelja OpenAI-ja = 476 tokena

  • Deklaracija neovisnosti SAD-a = 1.695 tokena

Kako se izračunava broj tokena

Kada pošaljete tekst API-ju:

  1. Tekst se dijeli na tokene.

  2. Model obrađuje te tokene.

  3. Odgovor se generira kao niz tokena, a zatim se ponovno pretvara u tekst.

Upotreba tokena prati se u nekoliko kategorija:

  • Ulazni tokeni – tokeni u vašem zahtjevu.

  • Izlazni tokeni – tokeni generirani u odgovoru.

  • Predmemorirani tokeni – ponovno upotrijebljeni tokeni iz povijesti razgovora (često se naplaćuju po nižoj cijeni).

  • Tokeni rasuđivanja – kod nekih naprednih modela prije izrade konačnog rezultata interno se izvode dodatni „koraci razmišljanja“.

Ti se brojevi prikazuju u metapodacima odgovora API-ja te se upotrebljavaju za naplatu i praćenje upotrebe.

Za dodatno istraživanje tokenizacije možete upotrijebiti naš interaktivni alat za tokenizaciju, koji omogućuje izračun broja tokena i prikazuje kako se tekst dijeli na tokene.

Ako pak želite programski tokenizirati tekst, upotrijebite Tiktoken, brzi BPE tokenizator namijenjen modelima OpenAI-ja.

Ograničenja tokena

Svaki model ima maksimalno ukupno ograničenje tokena (ulaz + izlaz). Trenutačni modeli velikog kapaciteta podržavaju kontekst od nekoliko stotina tisuća tokena, iako se praktična ograničenja mogu razlikovati ovisno o verziji modela i vašoj razini upotrebe.

Ako prekoračite ograničenje, možete:

  • Skratiti ili preoblikovati upite.

  • Podijeliti velike tekstove na manje dijelove.

  • Sažeti ili prethodno obraditi ulazne podatke prije slanja.

Cijene tokena

Upotreba API-ja naplaćuje se po tokenu, a cijena ovisi o modelu i tome jesu li tokeni ulazni, izlazni ili predmemorirani. Aktualne cijene potražite na stranici s cijenama OpenAI-ja. Neki modeli za rasuđivanje mogu interno upotrebljavati više tokena, ali nastoje povećati učinkovitost smanjenjem broja tokena potrebnih za dovršavanje zadatka.

Istraživanje tokena

API obrađuje riječi u skladu s njihovim kontekstom u korpusnim podacima. Modeli primaju upit, pretvaraju ulaz u popis tokena, obrađuju upit te predviđene tokene ponovno pretvaraju u riječi koje vidimo u odgovoru.

Dvije riječi koje nama izgledaju jednako mogu se pretvoriti u različite tokene, ovisno o tome kako su strukturirane u tekstu. Pogledajte kako API generira vrijednosti tokena za riječ „red“ na temelju njezina konteksta u tekstu:

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

U prvom gornjem primjeru token „2266“ za „ red“ uključuje završni razmak (napomena: ovo su primjeri ID-jeva tokena navedeni radi demonstracije).

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“ za „ Red“ (s početnim razmakom i velikim početnim slovom) razlikuje se od tokena „2266“ za „ red“ s malim početnim slovom.

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

Kada se „Red“ nalazi na početku rečenice, generirani token ne uključuje početni razmak. Token „7738“ razlikuje se od prethodna dva primjera te riječi.

Zapažanja:

Što je token vjerojatniji ili učestaliji, to mu se dodjeljuje manji broj:

  • Token generiran za točku jednak je („13“) u sve tri rečenice. Razlog je to što se točka u kontekstu upotrebljava prilično slično u cijelom korpusu podataka.

  • Token generiran za „red“ razlikuje se ovisno o položaju riječi u rečenici:

    • Malo početno slovo u sredini rečenice: „ red“ – (token: „2266“)

    • Veliko početno slovo u sredini rečenice: „ Red“ – (token: „2297“)

    • Veliko početno slovo na početku rečenice: „Red“ – (token: „7738“)

Je li vam ovaj članak bio koristan?