Что такое токены в LLM и почему от них зависят цена и качество
Основы3 минРедакция Innovialabs
Коротко
Токен — это кусочек текста, которым оперирует модель; за токены вы платите в API, и ими же измеряются лимиты, поэтому один и тот же текст на русском или узбекском обычно стоит дороже, чем на английском.
Что такое токен
Токен — минимальная единица текста, с которой работает языковая модель. Это не слово и не буква, а фрагмент: целое короткое слово, часть длинного слова, знак препинания или пробел вместе с началом слова.
Модель не видит текст напрямую. Сначала токенизатор превращает строку в последовательность чисел — идентификаторов токенов из словаря модели. Модель читает эти числа и генерирует ответ тоже по одному токену за раз.
Например, английская фраза «Hello, world» может разбиться на три-четыре токена: Hello, ,, world. Длинное или редкое слово распадётся на несколько частей.
Почему русский и узбекский «дороже» английского
Словари токенизаторов строятся на больших массивах текста, где английского больше всего. Поэтому:
- частые английские слова часто становятся одним токеном;
- русские слова с окончаниями и приставками дробятся на несколько кусков;
- узбекский текст, особенно с символами вроде ‘ и ’, нередко дробится ещё сильнее, потому что в обучающих данных его меньше.
Итог: одна и та же мысль на русском или узбекском может занять заметно больше токенов, чем на английском. Насколько больше — зависит от конкретной модели и её токенизатора. Новые модели обычно лучше работают с неанглийскими языками, но разница чаще всего сохраняется.
Как токены влияют на цену
API большинства моделей тарифицируются за токены, причём отдельно:
- входные токены — ваш промпт, системная инструкция, история диалога, вложенные документы;
- выходные токены — то, что сгенерировала модель (обычно дороже входных).
Что из этого следует на практике:
- длинная системная инструкция оплачивается в каждом запросе;
- история чата растёт с каждым сообщением, и каждый новый ответ стоит дороже предыдущего;
- просьба «ответь подробно» напрямую увеличивает счёт.
Как токены влияют на лимиты и качество
У каждой модели есть контекстное окно — максимум токенов, которые она обрабатывает за раз (вход и выход вместе). Кроме того, есть отдельный лимит на длину ответа.
Чем больше токенов уходит на «служебное», тем меньше места остаётся для полезного:
- длинный документ на узбекском может не поместиться туда, куда помещается тот же документ на английском;
- если ответ упирается в лимит, он обрывается на полуслове;
- перегруженный контекст ухудшает внимание модели к деталям.
Как экономить токены без потери качества
- Сократите системный промпт. Уберите повторы и вежливые обороты, оставьте правила и примеры.
- Не тащите всю историю. Храните последние сообщения, а старые заменяйте кратким резюме.
- Ограничивайте длину ответа — и в инструкции, и параметром максимального числа токенов.
- Передавайте только нужное. Вместо целого документа — релевантные фрагменты (для этого используют RAG).
- Используйте кэширование промптов, если провайдер его поддерживает: повторяющаяся часть запроса обходится дешевле.
- Подбирайте модель под задачу. Для классификации или извлечения полей часто хватает небольшой и дешёвой модели.
Как посчитать токены заранее
У крупных провайдеров есть токенизаторы или эндпоинты для подсчёта токенов. Для моделей OpenAI можно использовать библиотеку tiktoken:
import tiktoken
enc = tiktoken.get_encoding("cl100k_base")
text = "Сколько токенов в этой фразе?"
print(len(enc.encode(text)))
Учтите, что у разных моделей разные токенизаторы, поэтому считайте тем инструментом, который соответствует вашей модели. Перед запуском проекта полезно прогнать через подсчёт типичные запросы на всех нужных языках — так бюджет будет опираться на ваши реальные данные.