Mitä tokenit ovat?
Tokenit ovat tekstin rakenneosia, joita OpenAI-mallit käsittelevät. Ne voivat olla yhden merkin tai kokonaisen sanan pituisia kielen ja asiayhteyden mukaan. Välilyönnit, välimerkit ja sanojen osat vaikuttavat kaikki tokenien määrään. Näin API jakaa tekstisi sisäisesti osiin ennen vastauksen luomista.
Hyödyllisiä nyrkkisääntöjä englannin kielelle:
1 token ≈ 4 merkkiä
1 token ≈ ¾ sanaa
100 tokenia ≈ 75 sanaa
1–2 virkettä ≈ 30 tokenia
1 kappale ≈ 100 tokenia
noin 1 500 sanaa ≈ 2 048 tokenia
Tokenisointi vaihtelee mallin ja koodauksen mukaan. Saat tarkan määrän kohdemallillesi Tokenizer-työkalulla tai komennolla tiktoken.encoding_for_model(model).
Esimerkkejä
Tässä on käytännön tekstiesimerkkejä ja niiden likimääräiset tokenimäärät:
Wayne Gretzkyn sitaatti ”Kaikki laukaukset, joita et lauo, menevät varmasti ohi” = 11 tokenia
OpenAI-peruskirja = 476 tokenia
Yhdysvaltain itsenäisyysjulistus = 1 695 tokenia
Tokenimäärien laskeminen
Kun lähetät tekstiä APIin:
Teksti jaetaan tokeneiksi.
Malli käsittelee nämä tokenit.
Vastaus luodaan tokenien sarjana ja muunnetaan sitten takaisin tekstiksi.
Tokenien käyttöä seurataan useissa luokissa:
Syötetokenit – pyyntösi tokenit.
Tulostokenit – vastaukseen luodut tokenit.
Välimuistiin tallennetut tokenit – keskusteluhistoriasta uudelleen käytetyt tokenit (usein edullisemmalla hinnalla).
Päättelytokenit – joissakin edistyneissä malleissa käytetään sisäisesti ylimääräisiä ”ajatteluvaiheita” ennen lopullisen tuloksen tuottamista.
Nämä määrät näkyvät API-vastauksen metatiedoissa, ja niitä käytetään laskutukseen sekä käytön seurantaan.
Voit tutustua tokenisointiin tarkemmin interaktiivisella Tokenizer-työkalullamme, jolla voit laskea tokenien määrän ja nähdä, miten teksti jaetaan tokeneiksi.
Jos haluat tokenisoida tekstiä ohjelmallisesti, käytä Tiktokenia. Se on nopea BPE-tokenisoija, joka on suunniteltu erityisesti OpenAI-malleille.
Tokenirajat
Jokaisella mallilla on syöte- ja tulostokenien yhteinen enimmäismäärä. Nykyiset suuren kapasiteetin mallit tukevat kontekstissa jopa satojatuhansia tokeneita, mutta käytännön rajat voivat vaihdella malliversion ja käyttötason mukaan.
Jos ylität rajan, voit:
Lyhentää tai muotoilla kehotteet uudelleen.
Jakaa pitkän tekstin pienempiin osiin.
Tiivistää tai esikäsitellä syötteet ennen lähettämistä.
Tokenien hinnoittelu
API-käyttö hinnoitellaan tokeneittain. Hinta riippuu mallista sekä siitä, ovatko tokenit syöte-, tulos- vai välimuistitokeneita. Ajantasaiset hinnat ovat OpenAI:n hinnoittelusivulla. Jotkin päättelymallit voivat käyttää sisäisesti enemmän tokeneita, mutta pyrkivät tehostamaan toimintaa vähentämällä tehtävän suorittamiseen tarvittavien tokenien määrää.
Tokenien tarkastelu
API käsittelee sanoja korpusaineistossa esiintyvän asiayhteyden mukaan. Mallit ottavat kehotteen, muuntavat syötteen tokeniluetteloksi, käsittelevät kehotteen ja muuntavat ennustetut tokenit takaisin vastauksessa näkyviksi sanoiksi.
Kaksi meistä samalta näyttävää sanaa voidaan muuntaa eri tokeneiksi sen mukaan, miten ne sijoittuvat tekstiin. Tarkastellaan, miten API luo sanalle ”red” tokenarvoja sen tekstiyhteyden perusteella:
Yllä olevassa ensimmäisessä esimerkissä ilmauksen ” red” token ”2266” sisältää lopussa välilyönnin. (Nämä token-tunnukset ovat vain havainnollistavia esimerkkejä.)
Ilmauksen ” Red” token ”2296” (alussa välilyönti ja iso alkukirjain) eroaa pienellä kirjaimella kirjoitetun ilmauksen ” red” tokenista ”2266”.
Kun ”Red” on virkkeen alussa, luotu token ei sisällä edeltävää välilyöntiä. Token ”7738” eroaa sanan kahdesta edellisestä esimerkistä.
Huomioita:
Mitä todennäköisempi tai yleisempi token on, sitä pienempi numero sille annetaan:
Pisteelle luotu token on sama (”13”) kaikissa kolmessa virkkeessä. Tämä johtuu siitä, että pistettä käytetään asiayhteyden kannalta varsin samalla tavalla koko korpusaineistossa.
Sanalle ”red” luotu token vaihtelee sen mukaan, missä kohdassa virkettä sana on:
Pienellä kirjaimella virkkeen keskellä: ” red” – (token: ”2266”)
Isolla kirjaimella virkkeen keskellä: ” Red” – (token: ”2297”)
Isolla kirjaimella virkkeen alussa: ”Red” – (token: ”7738”)
