Šta su tokeni?
Tokeni su osnovne jedinice teksta koje obrađuju OpenAI modeli. Mogu biti kratki poput jednog znaka ili dugi poput cijele riječi, zavisno od jezika i konteksta. Razmaci, interpunkcijski znakovi i dijelovi riječi doprinose ukupnom broju tokena. API na ovaj način interno dijeli vaš tekst prije generiranja odgovora.
Korisna okvirna pravila za engleski jezik:
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 zavisno od modela i kodiranja. Za tačan broj za ciljni model upotrijebite alat Tokenizer ili tiktoken.encoding_for_model(model).
Primjeri
Evo nekoliko primjera stvarnih tekstova s približnim brojem tokena:
Citat Waynea Gretzkyja „Promašite 100% udaraca koje ne pokušate“ = 11 tokena
Povelja OpenAI-ja = 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 generira kao niz tokena, a zatim se ponovo pretvara u tekst.
Potrošnja tokena prati se u nekoliko kategorija:
Ulazni tokeni – tokeni u vašem zahtjevu.
Izlazni tokeni – tokeni generirani u odgovoru.
Keširani tokeni – ponovo korišteni tokeni iz historije razgovora (često se naplaćuju po nižoj cijeni).
Tokeni rezonovanja – kod nekih naprednih modela prije konačnog rezultata interno se uključuju dodatni „koraci razmišljanja“.
Ovi brojevi prikazuju se u metapodacima odgovora API-ja i koriste se za naplatu i praćenje potrošnje.
Za detaljnije istraživanje tokenizacije možete koristiti naš interaktivni alat Tokenizer, koji omogućava izračunavanje broja tokena i prikazuje kako se tekst dijeli na tokene.
Ako želite programski tokenizirati tekst, koristite Tiktoken, brzi BPE tokenizator posebno namijenjen OpenAI modelima.
Ograničenja tokena
Svaki model ima maksimalno ograničenje ukupnog broja tokena (ulaznih + izlaznih). Trenutni modeli velikog kapaciteta podržavaju kontekst od nekoliko stotina hiljada tokena, iako se praktična ograničenja mogu razlikovati zavisno od verzije modela i vašeg nivoa korištenja.
Ako prekoračite ograničenje, možete:
Skratiti ili preformulirati upite.
Podijeliti veliki tekst na manje dijelove.
Sažeti ili unaprijed obraditi ulazne podatke prije slanja.
Cijene tokena
Korištenje API-ja naplaćuje se po tokenu, a cijena zavisi od modela i od toga jesu li tokeni ulazni, izlazni ili keširani. Aktuelne cijene potražite na OpenAI-jevoj stranici s cijenama. Neki modeli za rezonovanje mogu interno koristiti više tokena, ali nastoje povećati efikasnost smanjenjem broja tokena potrebnih za završetak zadatka.
Istraživanje tokena
API obrađuje riječi u skladu s njihovim kontekstom u podacima korpusa. Modeli primaju upit, pretvaraju ulaz u listu tokena, obrađuju upit i pretvaraju predviđene tokene nazad u riječi koje vidimo u odgovoru.
Dvije riječi koje nama izgledaju isto mogu biti pretvorene u različite tokene, zavisno od njihove strukture u tekstu. Pogledajte kako API generira vrijednosti tokena za riječ „red“ na osnovu njenog konteksta u tekstu:
U prvom primjeru iznad token „2266“ za ‘ red’ uključuje završni razmak (napomena: ovo su primjeri ID-ova tokena namijenjeni demonstraciji).
Token „2296“ za ‘ Red’ (s razmakom ispred i početnim velikim slovom) razlikuje se od tokena „2266“ za ‘ red’ s malim slovom.
Kada se ‘Red’ koristi na početku rečenice, generirani token ne uključuje razmak ispred. Token „7738“ razlikuje se od prethodna dva primjera te riječi.
Zapažanja:
Što je token vjerovatniji ili učestaliji, to mu se dodjeljuje niži broj:
Token generiran za tačku isti je („13“) u sve 3 rečenice. Razlog je to što se tačka u podacima korpusa uglavnom koristi u sličnom kontekstu.
Token generiran za ‘red’ razlikuje se zavisno od položaja 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“)
