Što su tokeni?
Tokeni su osnovni gradivni elementi teksta koje OpenAI modeli obrađuju. Mogu biti kratki poput jednog znaka ili dugi poput cijele riječi, ovisno o jeziku i kontekstu. Razmaci, interpunkcija i dijelovi riječi također ulaze u broj tokena. Tako API interno segmentira vaš tekst prije generiranja odgovora.
Korisna praktična pravila 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. Upotrijebite alat Tokenizer ili tiktoken.encoding_for_model(model) kako biste dobili točan broj za ciljni model.
Primjeri
Evo nekoliko stvarnih primjera teksta s njihovim približnim brojem tokena:
Citat Waynea Gretzkyja „Promašiš 100 % udaraca koje ne uputiš” = 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:
Tekst se dijeli na tokene.
Model obrađuje te tokene.
Odgovor se generira kao niz tokena, a zatim se pretvara natrag 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 sniženoj cijeni).
Tokeni za rasuđivanje – u nekim naprednim modelima interno su uključeni dodatni „koraci razmišljanja” prije stvaranja konačnog izlaza.
Ti se brojevi pojavljuju u metapodacima vašeg API odgovora i upotrebljavaju se za naplatu i praćenje upotrebe.
Za daljnje istraživanje tokenizacije možete upotrijebiti naš interaktivni alat Tokenizer, koji vam omogućuje izračun broja tokena i prikaz načina na koji se tekst dijeli na tokene.
Ako pak želite programski tokenizirati tekst, upotrijebite Tiktoken kao brzi BPE tokenizer posebno namijenjen OpenAI modelima.
Ograničenja tokena
Svaki model ima maksimalno kombinirano ograničenje tokena (ulaz + izlaz). Trenutačni modeli velikog kapaciteta podržavaju do nekoliko stotina tisuća tokena u kontekstu, iako se praktična ograničenja mogu razlikovati ovisno o verziji modela i vašoj razini upotrebe.
Ako premašite ograničenje, možete:
Skratiti ili preformulirati upite.
Podijeliti velike tekstove na manje dijelove.
Sažeti ili unaprijed obraditi ulaze prije slanja.
Cijene tokena
Upotreba API-ja naplaćuje se po tokenu, a cijena se razlikuje ovisno o modelu i o tome jesu li tokeni ulazni, izlazni ili predmemorirani. Aktualne cijene potražite na OpenAI-jevoj stranici s cijenama. Neki modeli za rasuđivanje mogu interno upotrebljavati više tokena, ali nastoje poboljšati učinkovitost smanjenjem broja tokena potrebnih po dovršenom zadatku.
Istraživanje tokena
API obrađuje riječi prema njihovu kontekstu u podacima korpusa. Modeli uzimaju upit, pretvaraju ulaz u popis tokena, obrađuju upit i pretvaraju predviđene tokene natrag u riječi koje vidimo u odgovoru.
Ono što nama može izgledati kao dvije identične riječi može se generirati kao različiti tokeni, ovisno o tome kako su strukturirane u tekstu. Razmotrite kako API generira vrijednosti tokena za riječ „red” na temelju njezina konteksta u tekstu:
U prvom gornjem primjeru token „2266” za ‘ red’ uključuje završni razmak (napomena: ovo su primjeri ID-jeva tokena u demonstracijske svrhe).
Token „2296” za ‘ Red’ (s početnim razmakom i velikim početnim slovom) razlikuje se od tokena „2266” za ‘ red’ s malim slovom.
Kada se ‘Red’ upotrebljava 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/češći, to mu se dodjeljuje manji broj tokena:
Token generiran za točku isti je („13”) u sve 3 rečenice. To je zato što se, kontekstualno, točka upotrebljava prilično slično u cijelim podacima korpusa.
Token generiran za ‘red’ razlikuje se ovisno o njegovu položaju u rečenici:
Malo slovo u sredini rečenice: ‘ red’ - (token: „2266”)
Veliko slovo u sredini rečenice: ‘ Red’ - (token: „2297”)
Veliko slovo na početku rečenice: ‘Red’ - (token: „7738”)
