OpenAI
Тази страница е машинно преведена. Вижте оригиналната статия на английски език.

Какво са токените и как да ги броим?

Актуализирано: 9 days ago

Какво представляват токените?

Токените са градивните елементи на текста, които моделите на OpenAI обработват. Те могат да бъдат кратки колкото един знак или дълги колкото цяла дума, в зависимост от езика и контекста. Интервалите, пунктуацията и частите от думи също се отчитат в броя на токените. Така API вътрешно сегментира текста ви, преди да генерира отговор.

Полезни практически правила за английски език:

  • 1 токен ≈ 4 знака

  • 1 токен ≈ ¾ от дума

  • 100 токена ≈ 75 думи

  • 1–2 изречения ≈ 30 токена

  • 1 абзац ≈ 100 токена

  • ~1500 думи ≈ 2048 токена

Токенизацията варира според модела и кодирането. Използвайте инструмента Tokenizer или tiktoken.encoding_for_model(model), за да получите точния брой за целевия си модел.

Примери

Ето няколко реални примерни текста с приблизителния им брой токени:

  • Цитатът на Уейн Грецки „Пропускате 100% от ударите, които не правите“ = 11 токена

  • Хартата на OpenAI = 476 токена

  • Декларацията за независимост на САЩ = 1695 токена

Как се изчислява броят на токените

Когато изпратите текст към API:

  1. Текстът се разделя на токени.

  2. Моделът обработва тези токени.

  3. Отговорът се генерира като поредица от токени, след което се преобразува обратно в текст.

Използването на токени се проследява в няколко категории:

  • Входни токени – токените във вашата заявка.

  • Изходни токени – токени, генерирани в отговора.

  • Кеширани токени – повторно използвани токени в историята на разговора (често таксувани на по-ниска цена).

  • Токени за структурирано анализиране – при някои усъвършенствани модели допълнителни „стъпки на мислене“ се включват вътрешно, преди да се създаде крайният изход.

Тези броеве се показват в метаданните на отговора от API и се използват за таксуване и проследяване на употребата.

За да разгледате токенизацията по-подробно, можете да използвате нашия интерактивен инструмент Tokenizer, който ви позволява да изчислите броя на токените и да видите как текстът се разделя на токени.

Като алтернатива, ако искате да токенизирате текст програмно, използвайте Tiktoken като бърз BPE токенизатор, използван специално за моделите на OpenAI.

Ограничения за токени

Всеки модел има максимален общ лимит на токени (вход + изход). Текущите модели с голям капацитет поддържат до стотици хиляди токени в контекста, макар че практическите лимити може да варират според версията на модела и вашето ниво на използване.

Ако надвишите лимита, можете да:

  • Съкратите или преформулирате подканите.

  • Разделите големия текст на по-малки части.

  • Обобщите или предварително обработите входните данни, преди да ги изпратите.

Ценообразуване на токени

Използването на API се таксува на токен, като цената варира според модела и според това дали токените са входни, изходни или кеширани. Вижте страницата с цени на OpenAI за актуалните тарифи. Някои модели със структурирано анализиране може да използват повече токени вътрешно, но целят да подобрят ефективността, като намалят броя токени, необходими за изпълнена задача.

Изследване на токените

API третира думите според техния контекст в корпусните данни. Моделите вземат подканата, преобразуват входа в списък от токени, обработват подканата и преобразуват предсказаните токени обратно в думите, които виждаме в отговора.

Това, което за нас изглежда като две еднакви думи, може да бъде генерирано като различни токени в зависимост от структурата им в текста. Разгледайте как API генерира стойности на токени за думата „red“ според контекста ѝ в текста:

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

В първия пример по-горе токенът „2266“ за „ red“ включва последващ интервал (забележка: това са примерни идентификатори на токени с демонстрационна цел).

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

Токенът „2296“ за „ Red“ (с водещ интервал и започващ с главна буква) е различен от токена „2266“ за „ red“ с малка буква.

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

Когато „Red“ се използва в началото на изречение, генерираният токен не включва водещ интервал. Токенът „7738“ е различен от предишните два примера за думата.

Наблюдения:

Колкото по-вероятен/често срещан е даден токен, толкова по-нисък е номерът на токена, който му се присвоява:

  • Генерираният за точката токен е един и същ („13“) във всичките 3 изречения. Това е така, защото в контекст точката се използва доста сходно в корпусните данни.

  • Генерираният за „red“ токен варира в зависимост от мястото му в изречението:

    • С малка буква в средата на изречение: „ red“ – (токен: „2266“)

    • С главна буква в средата на изречение: „ Red“ – (токен: „2297“)

    • С главна буква в началото на изречение: „Red“ – (токен: „7738“)

Беше ли Ви полезна тази статия?