Що таке токен в AI та мовних моделях?
Токен — це мінімальний шматочок тексту, яким оперує мовна модель: слово, частина слова або розділовий знак. Модель не бачить літери та слова напряму — вона читає й генерує саме послідовність токенів.
Розбиття на токени виконує токенізатор. Коротке англійське слово зазвичай займає один токен, а довге чи рідкісне слово розбивається на кілька частин. Для української та російської мов токенів, як правило, потрібно більше, ніж для англійської того самого змісту.
Токени — це ще й одиниця тарифікації. Вартість звернення до API мовної моделі рахують за тисячу токенів, окремо за вхідні та вихідні. Тому довгі промпти й великі додані документи напряму впливають на ціну та швидкість відповіді.
Де застосовується
Токени — це одиниця обліку в роботі з моделями. За ними рахується вартість запиту, причому окремо за вхідні й вихідні, і за ними ж задається ліміт на довжину відповіді. Тому оцінка бюджету будь-якого AI-рішення починається з підрахунку, скільки токенів іде на типову операцію.
Знання токенізації пояснює і дивацтва в поведінці моделі. Слова українською та російською розбиваються на більшу кількість токенів, ніж англійські, — той самий текст обходиться дорожче. А задачі на кшталт «порахуй літери у слові» модель розвʼязує погано саме тому, що бачить не літери, а шматки тексту.
Приклад
Орієнтир для оцінки: близько 1000 токенів — це приблизно 700–750 англійських слів або трохи більше за сторінку звичайного тексту.
import tiktoken
encoder = tiktoken.get_encoding('cl100k_base')
text = 'Привіт! Розкажи про курси програмування.'
tokens = encoder.encode(text)
print(len(tokens)) # скільки токенів піде в запит
print(tokens[:10]) # самі ідентифікатори фрагментів Часті запитання
Скільки токенів в одному слові?
Для англійської в середньому близько 0,75 слова на токен. Для української та російської співвідношення гірше: слова часто дробляться на дві-три частини через закінчення й кирилицю. Практичний висновок — той самий текст англійською обходиться дешевше.
Чому за токени беруть плату окремо на вході й виході?
Бо генерація відповіді потребує більше обчислень, ніж читання запиту: кожен новий токен модель передбачає окремо. Тому вихідні токени зазвичай коштують у кілька разів дорожче за вхідні, і довга відповідь дорожча за довге запитання.
Як зменшити витрату токенів?
Прибирають зайвий контекст: не надсилають увесь документ, якщо потрібен один розділ, скорочують історію діалогу, просять коротку відповідь і задають обмеження за довжиною. Для повторюваних запитів допомагає кешування незмінної частини промпту.
Чому модель не може порахувати літери у слові?
Вона не бачить літер: текст потрапляє до неї вже розбитим на токени, і слово може бути одним неподільним фрагментом. Тому підрахунок символів, перестановка літер і схожі задачі розвʼязуються ненадійно — їх краще виконувати звичайним кодом.