Mitä tokenit ovat?
Tokenit ovat tekstin rakennuspalikoita, joita OpenAI:n mallit käsittelevät. Ne voivat olla niin lyhyitä kuin yksi merkki tai niin pitkiä kuin kokonainen sana kielen ja kontekstin mukaan. Välilyönnit, välimerkit ja sanan osat kaikki vaikuttavat token-määriin. Näin API jaksottaa tekstisi sisäisesti ennen vastauksen luomista.
Hyödyllisiä nyrkkisääntöjä englannille:
1 token ≈ 4 merkkiä
1 token ≈ ¾ sanasta
100 tokenia ≈ 75 sanaa
1–2 virkettä ≈ 30 tokenia
1 kappale ≈ 100 tokenia
~1 500 sanaa ≈ 2 048 tokenia
Tokenisointi voi vaihdella kielen mukaan. Esimerkiksi ”Cómo estás” (espanjaa ja tarkoittaa ”Mitä kuuluu?”) sisältää 5 tokenia 10 merkille. Muunkielinen kuin englanninkielinen teksti tuottaa usein suuremman tokeni–merkki-suhteen, mikä voi vaikuttaa kustannuksiin ja rajoihin.
Esimerkkejä
Tässä on joitakin oikean maailman tekstinäytteitä ja niiden likimääräiset token-määrät:
Wayne Gretzkyn sitaatti ”You miss 100% of the shots you don’t take” = 11 tokenia
OpenAI Charter = 476 tokenia
Yhdysvaltain itsenäisyysjulistus = 1 695 tokenia
Miten token-määrät lasketaan
Kun lähetät tekstiä APIin:
Teksti jaetaan tokeneiksi.
Malli käsittelee nämä tokenit.
Vastaus luodaan token-jonona ja muunnetaan sitten takaisin tekstiksi.
Tokenien käyttöä seurataan useissa luokissa:
Syötetokenit – pyynnössäsi olevat tokenit.
Tulostetokenit – vastauksessa luodut tokenit.
Välimuistitokenit – keskusteluhistoriassa uudelleenkäytetyt tokenit (joista veloitetaan usein alemmalla hinnalla).
Päättelytokenit – joissakin kehittyneissä malleissa lopullista tulostetta ennen sisältyy sisäisesti ylimääräisiä ”ajatteluvaiheita”.
Nämä määrät näkyvät API-vastauksesi metatiedoissa, ja niitä käytetään laskutukseen ja käytön seurantaan.
Jos haluat tutkia tokenisointia tarkemmin, voit käyttää interaktiivista Tokenizer-työkaluamme, jonka avulla voit laskea tokenien määrän ja nähdä, miten teksti pilkotaan tokeneiksi.
Vaihtoehtoisesti, jos haluat tokenisoida tekstiä ohjelmallisesti, käytä Tiktokenia nopeana BPE-tokenisoijana, jota käytetään erityisesti OpenAI:n malleissa.
Token-rajoitukset
Jokaisella mallilla on enimmäisraja yhdistetylle token-määrälle (syöte + tuloste). Nykyiset suuren kapasiteetin mallit tukevat kontekstissa jopa satojatuhansia tokeneita, vaikka käytännön rajat voivat vaihdella malliversion ja käyttötasosi mukaan.
Jos ylität rajan, voit:
Lyhentää tai muotoilla kehotteita uudelleen.
Jakaa suuren tekstin pienempiin osiin.
Tiivistää tai esikäsitellä syötteitä ennen niiden lähettämistä.
Token-hinnoittelu
API:n käyttö hinnoitellaan tokenia kohden, ja hinta vaihtelee mallin sekä sen mukaan, ovatko tokenit syöte-, tuloste- vai välimuistitokeneita. Katso ajantasaiset hinnat OpenAI:n hinnoittelusivulta. Jotkin päättelymallit voivat käyttää sisäisesti enemmän tokeneita, mutta niiden tavoitteena on parantaa tehokkuutta vähentämällä valmista tehtävää kohden tarvittavien tokenien määrää.
Tokenien tarkastelu
API käsittelee sanoja niiden kontekstin mukaan korpusaineistossa. Mallit ottavat kehotteen, muuttavat syötteen token-luetteloksi, käsittelevät kehotteen ja muuttavat ennustetut tokenit takaisin sanoiksi, jotka näemme vastauksessa.
Se, mikä voi näyttää meille kahdelta samalta sanalta, voidaan tuottaa eri tokeneina sen mukaan, miten ne on jäsennetty tekstissä. Tarkastellaan, miten API luo token-arvoja sanalle ”red” sen tekstikontekstin perusteella:
Yllä olevassa ensimmäisessä esimerkissä token ”2266” sanalle ” red” sisältää perässä olevan välilyönnin (huomaa, että nämä ovat esimerkinomaisia token-tunnuksia havainnollistamistarkoituksiin).
Token ”2296” sanalle ” Red” (edeltävä välilyönti ja alkukirjain isolla) on eri kuin token ”2266” sanalle ” red”, jossa alkukirjain on pieni.
Kun ”Red” esiintyy lauseen alussa, luotu token ei sisällä edeltävää välilyöntiä. Token ”7738” on eri kuin sanan kaksi aiempaa esimerkkiä.
Huomioita:
Mitä todennäköisempi/yleisempi token on, sitä pienempi token-numero sille annetaan:
Pisteelle luotu token on sama (”13”) kaikissa 3 virkkeessä. Tämä johtuu siitä, että kontekstin kannalta pistettä käytetään melko samalla tavalla koko korpusaineistossa.
Sanalle ”red” luotu token vaihtelee sen mukaan, missä kohdassa lausetta se on:
Pienellä kirjaimella lauseen keskellä: ” red” - (token: ”2266”)
Isolla kirjaimella lauseen keskellä: ” Red” - (token: ”2297”)
Isolla kirjaimella lauseen alussa: ”Red” - (token: ”7738”)
