OpenAI
Ova stranica je mašinski prevedena. Pogledaj originalni članak na engleskom jeziku.

Šta su tokeni i kako ih brojati?

Ažurirano: 2 days ago

Š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:

  1. Tekst se dijeli na tokene.

  2. Model obrađuje te tokene.

  3. 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:

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 primjeru iznad token „2266“ za ‘ red’ uključuje završni razmak (napomena: ovo su primjeri ID-ova tokena namijenjeni demonstraciji).

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

Da li je ovaj članak bio koristan?