OpenAI
Ova je stranica strojno prevedena. Pogledajte izvorni članak na engleskom jeziku.

Razumijevanje i brojanje tokena

Saznajte kako ulazni, izlazni, predmemorirani i tokeni rasuđivanja utječu na upotrebu API-ja, ograničenja modela i troškove.

Ažurirano: 15 days ago

Pregled

Tokeni su jedinice kojima se modeli OpenAI koriste za obradu teksta. Token može predstavljati znak, dio riječi, cijelu riječ ili interpunkcijski znak. Razmaci također utječu na podjelu teksta na tokene.

Broj tokena nije jednak broju riječi. Isti tekst može imati različit broj tokena ovisno o modelu, njegovu kodiranju i jeziku.

Saznajte kako tekst postaje skup tokena

Kada modelu pošaljete tekst:

  1. Tekst se dijeli na tokene.

  2. Model obrađuje te tokene.

  3. Model generira izlazne tokene. Oni mogu obuhvaćati tekst koji primate, a kod modela za rasuđivanje i interne tokene rasuđivanja koji nisu prikazani kao tekst odgovora.

Upotrebljavajte okvirne procjene za engleski tekst

Ove vam procjene mogu pomoći u određivanju veličine engleskog teksta:

  • 1 token približno je jednak četirima znakovima.

  • 1 token približno je jednak trima četvrtinama riječi.

  • 100 tokena približno je jednako 75 riječi.

To su procjene, a ne točni brojevi. Duljine rečenica i odlomaka razlikuju se, a u drugim jezicima odnosi između znakova, riječi i tokena mogu biti drukčiji.

Uzmite u obzir razmake i velika slova

Riječ se može podijeliti na različite tokene ovisno o načinu pisanja, velikim i malim slovima te okolnom tekstu.

Primjerice, red, Red i red nemaju identičan tekst: posljednji primjer sadržava početni razmak. Kodiranje ih može prikazati na različite načine.

ID-jevi tokena također ovise o kodiranju. Nemojte pretpostaviti da primjer ID-ja tokena vrijedi za svaki model.

Razlikujte ulazne i izlazne tokene

KategorijaŠto opisuje
Ulazni tokeniTokeni koji se modelu šalju u zahtjevu. Nazivaju se i tokenima upita.
Izlazni tokeniTokeni koje generira model. Chat Completions naziva ih tokenima dovršetka.
Predmemorirani ulazni tokeniUlazni tokeni ponovno upotrijebljeni predmemoriranjem upita. Njihova se cijena može razlikovati od cijene ulaznih tokena koji nisu predmemorirani.
Tokeni rasuđivanjaTokeni koje model za rasuđivanje interno upotrebljava prije nego što izradi vidljivi odgovor.

Tokeni rasuđivanja nisu vidljivi kao tekst odgovora, ali ubrajaju se u izlaznu upotrebu i naplaćuju kao izlazni tokeni.

Stoga se za kratak vidljivi odgovor može potrošiti više tokena nego što prikazani tekst daje naslutiti.

Prebrojite tokene prije slanja zahtjeva

Prebrojite tokene u običnom tekstu

Upotrijebite Tokenizer da biste vidjeli kako se tekst dijeli na tokene.

Za programsku tokenizaciju običnog teksta upotrijebite tiktoken. Odaberite kodiranje za ciljni model, primjerice pomoću tiktoken.encoding_for_model(model).

Broj tokena u običnom tekstu ne obuhvaća nužno sve tokene u API zahtjevu. Struktura poruka, alati, sheme, slike i datoteke mogu utjecati na ukupan broj ulaznih tokena.

Prebrojite tokene u cijelom ulazu za Responses

Za cijeli ulaz API-ja Responses upotrijebite API za brojanje ulaznih tokena.

Prihvaća ulazne formate za Responses, uključujući poruke, slike, datoteke, alate i razgovore. U broj su uključeni tokeni oblikovanja koji se upotrebljavaju za strukturu zahtjeva, kao što su uloge i granice poruka.

Broj ulaznih tokena ne predviđa koliko će izlaznih tokena model generirati.

Provjerite stvarnu upotrebu tokena

Nakon zahtjeva pregledajte podatke o njegovoj upotrebi. Nazivi polja razlikuju se ovisno o krajnjoj točki:

  • Chat Completions prikazuje prompt_tokens, completion_tokens i total_tokens.

  • Responses prikazuje input_tokens, output_tokens i total_tokens.

Aktivnost tijekom vremena možete pregledati i na nadzornoj ploči Usage. Upute, uključujući one za upotrebu streaminga, potražite ovdje: Pregled upotrebe i troškova API-ja.

Ostanite unutar ograničenja modela

U dokumentaciji svojeg modela provjerite njegov kontekstni prozor i najveću dopuštenu veličinu izlaza. Ta se ograničenja mogu razlikovati među modelima.

Kontekstni prozor ograničava broj tokena koje model može obraditi u jednom zahtjevu. Modeli imaju i ograničenje izlaza. Za modele za rasuđivanje ostavite prostora i za tokene rasuđivanja i za vidljivi odgovor.

Ako je vaš ulaz prevelik, možete:

  • Skratiti ili preoblikovati upit.

  • Ukloniti nepotreban ili ponovljen kontekst.

  • Podijeliti velike ulaze na manje dijelove.

  • Sažeti ili prethodno obraditi tekst prije slanja.

Upotrijebite postavku izlaznih tokena koju podržavaju vaša krajnja točka i model. Chat Completions upotrebljava max_completion_tokens, a Responses max_output_tokens.

Ta ograničenja veličine zahtjeva odvojena su od ograničenja učestalosti API zahtjeva te mjesečnih ograničenja upotrebe ili potrošnje. Pregledajte dokumentaciju modela koji upotrebljavate.

Razumijevanje cijena tokena

Kod određivanja cijena API-ja prema tokenima tarifa ovisi o modelu i kategoriji tokena. Ulazni, predmemorirani ulazni i izlazni tokeni mogu imati različite cijene. Druge mogućnosti API-ja mogu se naplaćivati u drugim jedinicama.

Trenutačne tarife provjerite na stranici s cijenama API-ja.

Pri usporedbi modela uzmite u obzir ukupan broj tokena i trošak potreban za dovršavanje zadatka. Niža cijena po milijunu tokena ne znači nužno niži ukupan trošak: modeli mogu različito tokenizirati isti tekst te generirati različite količine izlaza ili rasuđivanja.

Testirajte reprezentativne zadatke umjesto da uspoređujete samo duljinu vidljivog odgovora.

Uzmite u obzir više dovršetaka

Kada krajnja točka i model podržavaju generiranje više dovršetaka, i ti dodatni dovršeci troše tokene.

Ako se za Chat Completions n postavi na vrijednost veću od 1, generira se više mogućnosti. Naplaćuju vam se tokeni generirani u svim tim mogućnostima.

Za zastarjeli Completions API best_of može generirati kandidate koji se neće svi vratiti. Primjerice, best_of = 3 može među kandidatima generirati do 3 × max_tokens tokena dovršetka.

Ti su parametri specifični za pojedinu krajnju točku. Nemojte pretpostaviti da drugi API ili model podržava n ili best_of.

Je li vam ovaj članak bio koristan?