Что такое токен в 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 слова на токен. Для русского и украинского соотношение хуже: слова часто дробятся на две-три части из-за окончаний и кириллицы. Практический вывод — один и тот же текст на английском обходится дешевле.
Почему за токены берут плату отдельно на входе и выходе?
Потому что генерация ответа требует больше вычислений, чем чтение запроса: каждый новый токен модель предсказывает отдельно. Поэтому выходные токены обычно стоят в несколько раз дороже входных, и длинный ответ дороже длинного вопроса.
Как уменьшить расход токенов?
Убирают лишний контекст: не отправляют весь документ, если нужен один раздел, сокращают историю диалога, просят краткий ответ и задают ограничение по длине. Для повторяющихся запросов помогает кеширование неизменной части промпта.
Почему модель не может посчитать буквы в слове?
Она не видит букв: текст попадает в неё уже разбитым на токены, и слово может быть одним неделимым фрагментом. Поэтому подсчёт символов, перестановка букв и похожие задачи решаются ненадёжно — их лучше выполнять обычным кодом.