Как текст превращается в токены
Токенизатор режет строку на частые последовательности символов. Короткое английское слово обычно занимает один токен, длинное разбивается на два-три. Русский текст дробится мельче: в обучающих данных его было меньше, поэтому целых слов в словаре токенизатора почти нет. Пробелы, переносы строк и знаки препинания тоже занимают место.
Где это всплывает
Счёт от провайдера считается по токенам входа и выхода, и тарифы у них разные. Отсюда типичная неожиданность: диалог кажется коротким, а счёт заметно выше ожидаемого. Обычно виноват вход - вся история и приложенные файлы уезжают в каждый запрос заново.
Второе место - лимит контекстного окна. Оно измеряется в токенах, а не в символах или строках, поэтому фраза "файл на 500 строк" ничего не говорит о том, влезет он или нет. У AI-агента вход разбухает быстрее всего: каждый вызов инструмента дописывает в историю свой лог.
Практика
- Считать заранее: у провайдеров есть эндпоинт подсчёта, есть и локальные библиотеки токенизации.
- Держать в голове, что код и JSON дороже прозы: скобки, отступы и кавычки съедают отдельные токены.
- Смотреть на разбивку входа и выхода в биллинге: кэшированный вход часто тарифицируется по своей ставке.
Коэффициенты вроде "столько-то символов на токен" зависят от токенизатора конкретной модели. Проверять их надо на своём тексте, а не по чужой памятке.