Mik azok a tokenek?
A tokenek azok a szöveges építőelemek, amelyeket az OpenAI modelljei feldolgoznak. Lehetnek akár egyetlen karakter rövidek, vagy akár egy teljes szó hosszúságúak is, a nyelvtől és a kontextustól függően. A szóközök, az írásjelek és a szórészletek mind beleszámítanak a tokenszámba. Az API így szegmentálja belsőleg a szöveget, mielőtt választ generálna.
Hasznos ökölszabályok angol nyelvhez:
1 token ≈ 4 karakter
1 token ≈ egy szó ¾-e
100 token ≈ 75 szó
1–2 mondat ≈ 30 token
1 bekezdés ≈ 100 token
~1500 szó ≈ 2048 token
A tokenizálás modellenként és kódolásonként eltérő. A célmodell pontos értékének lekéréséhez használja a Tokenizer eszközt vagy a tiktoken.encoding_for_model(model) függvényt.
Példák
Íme néhány valós szövegminta a hozzávetőleges tokenszámukkal:
Wayne Gretzky idézete: „You miss 100% of the shots you don’t take” = 11 token
Az OpenAI Alapokmány = 476 token
Az Egyesült Államok Függetlenségi Nyilatkozata = 1695 token
Hogyan számítják ki a tokenszámokat
Amikor szöveget küld az API-nak:
A szöveg tokenekre lesz bontva.
A modell feldolgozza ezeket a tokeneket.
A válasz tokensorozatként generálódik, majd visszaalakul szöveggé.
A tokenhasználat több kategóriában követhető:
Bemeneti tokenek – a kérésben lévő tokenek.
Kimeneti tokenek – a válaszban generált tokenek.
Gyorsítótárazott tokenek – a beszélgetési előzményekből újrahasznált tokenek (gyakran kedvezményes díjszabással).
Érvelési tokenek – egyes fejlett modelleknél a végső kimenet előállítása előtt belsőleg extra „gondolkodási lépések” is szerepelnek.
Ezek a számok az API-válasz metaadataiban jelennek meg, és a számlázás, valamint a használat követésének alapjául szolgálnak.
A tokenizálás további felfedezéséhez használhatja interaktív Tokenizer eszközünket, amellyel kiszámíthatja a tokenek számát, és megnézheti, hogyan bomlik a szöveg tokenekre.
Másik lehetőségként, ha programozott módon szeretne szöveget tokenizálni, használja a Tiktoken eszközt, amely egy gyors BPE-tokenizáló, kifejezetten OpenAI modellekhez.
Tokenkorlátok
Minden modellnek van egy maximális kombinált tokenkorlátja (bemenet + kimenet). A jelenlegi nagy kapacitású modellek akár több százezer tokent is támogatnak a kontextusban, bár a gyakorlati korlátok a modellverziótól és a használati szinttől függően változhatnak.
Ha túllépi a korlátot, a következőket teheti:
Rövidítse vagy fogalmazza át az utasításokat.
Bontsa a nagy szöveget kisebb részekre.
Foglalja össze vagy dolgozza elő a bemeneteket, mielőtt elküldené őket.
Tokenalapú árazás
Az API-használat ára tokenenként kerül meghatározásra, és modellenként, valamint attól függően változik, hogy a tokenek bemeneti, kimeneti vagy gyorsítótárazott tokenek-e. Az aktuális díjakért tekintse meg az OpenAI árazási oldalát. Egyes érvelési modellek belsőleg több tokent használhatnak, de céljuk a hatékonyság javítása azáltal, hogy csökkentik a befejezett feladatonként szükséges tokenek számát.
A tokenek felfedezése
Az API a szavakat a korpuszadatokban szereplő kontextusuk szerint kezeli. A modellek megkapják az utasítást, a bemenetet tokenek listájává alakítják, feldolgozzák az utasítást, majd a megjósolt tokeneket visszaalakítják azokká a szavakká, amelyeket a válaszban látunk.
Ami számunkra két azonos szónak tűnhet, az a szövegen belüli szerkezetétől függően különböző tokenekké generálódhat. Nézzük meg, hogyan generál az API tokenértékeket a „red” szóhoz a szövegen belüli kontextusa alapján:
A fenti első példában a „2266” token a ‘ red’ esetében egy záró szóközt tartalmaz (megjegyzés: ezek demonstrációs célú tokenazonosító-példák).
A ‘ Red’ „2296” tokenje (kezdő szóközzel és nagy kezdőbetűvel) eltér a kisbetűs ‘ red’ „2266” tokenjétől.
Amikor a ‘Red’ a mondat elején szerepel, a generált token nem tartalmaz kezdő szóközt. A „7738” token eltér a szó előző két példájától.
Megfigyelések:
Minél valószínűbb/gyakoribb egy token, annál alacsonyabb tokenszámot rendelnek hozzá:
A pont számára generált token mindhárom mondatban ugyanaz („13”). Ennek az az oka, hogy kontextuálisan a pontot a korpuszadatokban nagyjából hasonló módon használják.
A ‘red’ számára generált token a mondaton belüli helyétől függően változik:
Kisbetűvel a mondat közepén: ‘ red’ - (token: „2266”)
Nagybetűvel a mondat közepén: ‘ Red’ - (token: „2297”)
Nagybetűvel a mondat elején: ‘Red’ - (token: „7738”)
