Що таке токени?
Токени — це складові тексту, які обробляють моделі OpenAI. Залежно від мови й контексту вони можуть складатися як з одного символу, так і з цілого слова. Пробіли, розділові знаки та частини слів також враховуються в кількості токенів. Саме так API внутрішньо розбиває ваш текст перед генеруванням відповіді.
Корисні орієнтири для англійської мови:
1 токен ≈ 4 символи
1 токен ≈ ¾ слова
100 токенів ≈ 75 слів
1–2 речення ≈ 30 токенів
1 абзац ≈ 100 токенів
~1 500 слів ≈ 2 048 токенів
Токенізація залежить від моделі та кодування. Щоб отримати точну кількість для цільової моделі, скористайтеся інструментом Tokenizer або tiktoken.encoding_for_model(model).
Приклади
Ось кілька реальних зразків тексту з приблизною кількістю токенів:
Цитата Вейна Грецкі «Ви не влучаєте у 100% кидків, яких не робите» = 11 токенів
Хартія OpenAI = 476 токенів
Декларація незалежності США = 1 695 токенів
Як обчислюється кількість токенів
Коли ви надсилаєте текст до API:
Текст розбивається на токени.
Модель обробляє ці токени.
Відповідь генерується як послідовність токенів, а потім перетворюється назад на текст.
Використання токенів відстежується за кількома категоріями:
Вхідні токени — токени у вашому запиті.
Вихідні токени — токени, згенеровані у відповіді.
Кешовані токени — повторно використані токени з історії розмови (часто тарифікуються за зниженою ціною).
Токени міркування — у деяких передових моделях перед створенням остаточного результату внутрішньо виконуються додаткові «кроки мислення».
Ці показники містяться в метаданих відповіді API та використовуються для виставлення рахунків і відстеження використання.
Щоб докладніше ознайомитися з токенізацією, скористайтеся нашим інтерактивним інструментом Tokenizer, який дає змогу обчислити кількість токенів і побачити, як текст розбивається на токени.
А щоб токенізувати текст програмно, скористайтеся Tiktoken — швидким BPE-токенізатором, спеціально призначеним для моделей OpenAI.
Обмеження токенів
Кожна модель має максимальне загальне обмеження токенів (вхідні + вихідні). Сучасні моделі з великою місткістю підтримують у контексті до сотень тисяч токенів, хоча практичні обмеження можуть залежати від версії моделі та вашого рівня використання.
Якщо ви перевищили обмеження, можна:
Скоротити або перефразувати запити.
Розділити великий текст на менші частини.
Узагальнити або попередньо обробити вхідні дані перед надсиланням.
Вартість токенів
Вартість використання API розраховується за токенами й залежить від моделі та типу токенів: вхідні, вихідні чи кешовані. Актуальні тарифи наведено на сторінці цін OpenAI. Деякі моделі міркування можуть внутрішньо використовувати більше токенів, але водночас підвищувати ефективність, зменшуючи кількість токенів, потрібних для виконання завдання.
Токени не стандартизовані між різними моделями ШІ та постачальниками. Різні моделі можуть обробляти або генерувати той самий текст із різною кількістю токенів, тому нижча заявлена ціна за мільйон токенів не обов’язково означає нижчу загальну вартість.
Видима довжина відповіді також не дає повної картини. Деякі моделі перед формуванням відповіді внутрішньо використовують токени міркування, тому довша видима відповідь не обов’язково означає, що модель загалом використала більше токенів.
Порівнюючи моделі, враховуйте загальну потрібну кількість токенів і вартість кожного успішного результату. Тести продуктивності можуть бути корисною відправною точкою, але найкращий спосіб оцінити фактичну вартість і продуктивність моделей — перевірити їх на власних сценаріях використання.
Дослідження токенів
API обробляє слова відповідно до їхнього контексту в корпусі даних. Моделі отримують запит, перетворюють вхідні дані на список токенів, обробляють запит і перетворюють прогнозовані токени назад на слова, які ми бачимо у відповіді.
Два слова, які здаються нам однаковими, можуть перетворюватися на різні токени залежно від їхнього розташування в тексті. Розгляньмо, як API генерує значення токенів для слова «red» залежно від його контексту в тексті:
У першому прикладі вище токен «2266» для « red» містить кінцевий пробіл (зауважте, що це приклади ідентифікаторів токенів лише для демонстрації).
Токен «2296» для « Red» (із пробілом на початку та великою першою літерою) відрізняється від токена «2266» для « red» із малої літери.
Коли «Red» стоїть на початку речення, згенерований токен не містить початкового пробілу. Токен «7738» відрізняється від токенів у двох попередніх прикладах цього слова.
Спостереження:
Що ймовірніший або частіше вживаний токен, то менший присвоєний йому номер:
Згенерований для крапки токен однаковий («13») у всіх трьох реченнях. Це пояснюється тим, що в усьому корпусі даних крапка використовується в доволі схожих контекстах.
Токен, згенерований для «red», залежить від розташування слова в реченні:
З малої літери всередині речення: « red» — (токен: «2266»)
З великої літери всередині речення: « Red» — (токен: «2297»)
З великої літери на початку речення: «Red» — (токен: «7738»)
