Токеномика для самых маленьких: почему короткий запрос к ИИ обходится дорого
Разговоры с нейросетями давно стали повседневностью, но мало кто задумывается, во что обходится каждый диалог. Разбираемся, что такое токены, почему русский язык нередко выходит дороже английского и куда на самом деле уходят деньги между коротким запросом и обстоятельным ответом модели.
Автор развёрнутого материала, опубликованного в потоке «Разработка», предлагает разобраться в экономике токенов на фоне собственного опыта работы с подписками на генеративные модели. Отправной точкой становится знакомая многим ситуация: пользователь формулирует запрос, модель долго рассуждает, а затем приходит уведомление об исчерпании лимита ещё до того, как получен содержательный ответ. Особенно наглядно это проявляется в работе с ИИ-агентами, которые самостоятельно читают файлы проекта, запускают тесты, вносят правки и составляют отчёты, расходуя токены за каждый шаг. Автор отмечает, что при активном использовании ИИ ему хватает подписки за 100 долларов в месяц, тогда как некоторые знакомые упираются в лимиты даже на тарифе за 200 долларов, что подталкивает к вопросу о том, какая доля ресурсов уходит на полезный результат, а какая — на саму организацию общения с моделью.
Ключевое понятие материала — токен как единица, в которую языковая модель преобразует текст. Для человека сообщение остаётся последовательностью слов, а для модели оно превращается в набор числовых идентификаторов, каждый из которых соответствует слову, части слова, знаку препинания или фрагменту байтов. Этим занимается отдельный компонент — токенизатор, а на выходе выполняется обратное преобразование, дающее читаемый текст; соответственно различают входные и выходные токены. Автор поясняет, почему нельзя обойтись посимвольным чтением или отдельным токеном для каждого слова: первый подход даёт слишком длинные последовательности, второй упирается в размер словаря, новые слова, опечатки и многообразие языков. Разбиение на части оказывается компромиссом, а сам токенизатор при этом не обязан следовать школьной морфологии и делит слова по алгоритму и данным, на которых строился его словарь.
Технические детали автор иллюстрирует поведением кодировок cl100k_base и o200k_base из библиотеки tiktoken: одно и то же слово при смене регистра первой буквы может распадаться на разное количество токенов, а пробел нередко оказывается внутри токена. Из этого следует практический вывод — правило «один токен равен примерно четырём символам» годится лишь для грубой прикидки, а точный подсчёт даёт токенизатор конкретной модели. Отдельно разбирается вопрос о «дороговизне» русского языка: исследование Language Model Tokenizers Introduce Unfairness Between Languages показывает, что один и тот же смысл на разных языках занимает разное число токенов. Причина в алгоритме BPE, который объединяет в токены часто встречающиеся фрагменты: если английских текстов в обучающей выборке заметно больше, английские слова получают больше готовых «кирпичиков», а русские разбиваются на более мелкие куски, да ещё и разнообразие окончаний и словоформ добавляет вариантов в словарь.
При этом универсальный курс вроде «одно русское слово равно трём токенам» автор устанавливать не спешит. На примере двух эквивалентных фраз — английской и русской — он показывает, что результат зависит от версии токенизатора: в tiktoken 0.14.0 разница сократилась с почти двукратной до примерно 17 процентов. Речь идёт о подсчёте двух конкретных строк без служебных сообщений приложения, поэтому выводы стоит переносить на реальные сценарии осторожно. Автор добавляет, что сам часто обращается к моделям через переводчик, если не хватает собственного английского, экономя токены и подтягивая язык, но предупреждает: если ради экономии приходится дольше формулировать запрос и терять оттенки смысла, стоит посчитать ещё и стоимость собственного времени.
Отдельный блок посвящён тому, куда уходят токены между сообщением и ответом. Когда пользователь пишет короткую фразу вроде просьбы добавить тесты, модель обычно получает гораздо больше этих слов: системные инструкции, правила проекта, предыдущие сообщения и ответы, содержимое файлов, результаты поиска и описания инструментов. Приложение собирает из этого контекст для очередного шага, а контекстное окно ограничивает объём информации, доступной модели в одном вызове. Расход же за всю задачу складывается из множества вызовов, поэтому агент вполне может потратить миллион токенов, ни разу не имея миллиона токенов в контексте одновременно. Дополнительно модель может расходовать токены на внутреннее рассуждение, которое не показывается пользователю целиком, — именно это объясняет ситуации, когда лимит заканчивается ещё до первого видимого ответа.
В контексте отрасли материал продолжает линию обсуждения практической экономики генеративных моделей, которая становится всё более актуальной по мере распространения агентных сценариев. Если раньше пользователь платил в основном за длину диалога, то теперь существенная часть расходов приходится на фоновые процессы, периодические задачи и работу, выполняемую без постоянного участия человека, — об этом автор говорит и на собственном примере, отмечая, что тарифа за 20 долларов ему уже не всегда хватает. Показательно, что рядом в потоке «Разработка» обсуждаются совсем другие продуктовые сюжеты, например новый интерфейс ВК Видео и задача реализовать функции, которые затем скопируют конкуренты, — там речь идёт о неопределённости гипотез и итерациях. Токеномика же относится к категории измеримых издержек, где цена ошибки видна в счёте за подписку, а не в продуктовых метриках.
Понимание того, как устроены токены, даёт пользователю несколько практических рычагов экономии, хотя автор и не сводит всё к простым рецептам. Во-первых, полезно осознавать, что стоимость запроса определяется не длиной видимого сообщения, а объёмом собранного контекста, поэтому избыточные файлы и лишние истории диалога стоят денег. Во-вторых, выбор языка и формулировки влияет на расход, но неодинаково в разных моделях и версиях токенизаторов, так что проверять гипотезы об экономии стоит на конкретном инструменте. В-третьих, агентные сценарии требуют отдельного контроля: задача, запущенная в фоне, может обойтись дороже, чем кажется в момент постановки. Открытым остаётся вопрос, насколько прозрачно провайдеры будут показывать распределение расходов между служебными сообщениями, рассуждением и полезным результатом, и появится ли у пользователей удобная аналитика, позволяющая оптимизировать не только промпты, но и саму архитектуру взаимодействия с моделями.