Šta su tokeni?
Tokeni su osnovni gradivni elementi teksta koje OpenAI modeli obrađuju. Mogu biti kratki kao jedan znak ili dugi kao cijela riječ, u zavisnosti od jezika i konteksta. Razmaci, interpunkcija i dijelovi riječi doprinose broju tokena. Tako API interno segmentira vaš tekst prije generisanja odgovora.
Korisna okvirna pravila za engleski:
1 token ≈ 4 znaka
1 token ≈ ¾ riječi
100 tokena ≈ 75 riječi
1–2 rečenice ≈ 30 tokena
1 pasus ≈ 100 tokena
~1.500 riječi ≈ 2.048 tokena
Tokenizacija se razlikuje prema modelu i kodiranju. Koristite alat Tokenizer ili tiktoken.encoding_for_model(model) da dobijete tačan broj za svoj ciljni model.
Primjeri
Evo nekoliko stvarnih uzoraka teksta s njihovim približnim brojem tokena:
Citat Waynea Gretzkyja „Promašite 100% šuteva koje ne uputite“ = 11 tokena
OpenAI povelja = 476 tokena
Deklaracija nezavisnosti 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 generiše kao niz tokena, a zatim se ponovo pretvara u tekst.
Korištenje tokena prati se u nekoliko kategorija:
Ulazni tokeni – tokeni u vašem zahtjevu.
Izlazni tokeni – tokeni generisani u odgovoru.
Keširani tokeni – ponovo korišteni tokeni u historiji razgovora (često se naplaćuju po nižoj cijeni).
Tokeni rezonovanja – u nekim naprednim modelima, dodatni „koraci razmišljanja“ interno se uključuju prije stvaranja konačnog izlaza.
Ovi brojevi se prikazuju u metapodacima vašeg API odgovora i koriste se za naplatu i praćenje korištenja.
Za dodatno istraživanje tokenizacije možete koristiti naš interaktivni alat Tokenizer, koji vam omogućava da izračunate broj tokena i vidite kako se tekst razlaže na tokene.
Alternativno, ako želite programski tokenizirati tekst, koristite Tiktoken kao brzi BPE tokenizer posebno korišten za OpenAI modele.
Ograničenja tokena
Svaki model ima maksimalno kombinovano ograničenje tokena (ulaz + izlaz). Trenutni modeli velikog kapaciteta podržavaju do stotine hiljada tokena u kontekstu, iako praktična ograničenja mogu varirati zavisno od verzije modela i vašeg nivoa korištenja.
Ako premašite ograničenje, možete:
Skratiti ili preformulisati upite.
Podijeliti veliki tekst na manje dijelove.
Sažeti ili unaprijed obraditi unose prije slanja.
Cijene tokena
Korištenje API-ja naplaćuje se po tokenu, a cijena varira prema modelu i prema tome jesu li tokeni ulazni, izlazni ili keširani. Pogledajte OpenAI stranicu s cijenama za aktuelne cijene. Neki modeli rezonovanja mogu interno koristiti više tokena, ali im je cilj poboljšati efikasnost smanjenjem broja tokena potrebnih po završenom zadatku.
Istraživanje tokena
API tretira riječi prema njihovom kontekstu u podacima korpusa. Modeli uzimaju upit, pretvaraju unos u listu tokena, obrađuju upit i pretvaraju predviđene tokene nazad u riječi koje vidimo u odgovoru.
Ono što nama može izgledati kao dvije identične riječi može se generisati u različite tokene, u zavisnosti od toga kako su strukturirane unutar teksta. Razmotrite kako API generiše vrijednosti tokena za riječ ‘red’ na osnovu njenog konteksta unutar teksta:
U prvom primjeru iznad 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 početnim velikim slovom) razlikuje se od tokena „2266“ za ‘ red’ s malim slovom.
Kada se ‘Red’ koristi na početku rečenice, generisani token ne uključuje početni razmak. Token „7738“ razlikuje se od prethodna dva primjera te riječi.
Zapažanja:
Što je token vjerovatniji/češći, to je broj tokena koji mu se dodjeljuje niži:
Token generisan za tačku isti je („13“) u sve 3 rečenice. To je zato što se, kontekstualno, tačka koristi prilično slično kroz podatke korpusa.
Token generisan za ‘red’ varira u zavisnosti od njegovog položaja 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“)
