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

Šta su tokeni i kako ih brojati?

Ažurirano: 8 days ago

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

  1. Tekst se dijeli na tokene.

  2. Model obrađuje te tokene.

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

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-jeva tokena u demonstracijske svrhe).

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 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, 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“)

Da li je ovaj članak bio koristan?