Токен – это элементарный блок текста, которым оперирует модель, часто это несколько символов. Упрощенно, на каждом прогоне модели во внутреннем цикле получается один токен, он и является единицей тарификации. Входящий текст разбивается на токены и этот процесс называется токенизацией.
Какие бывают токены:
Input – весь входной контекст: системный промпт, история диалога, код, файлы, описания инструментов и результаты их вызовов. Все, что поступает на вход модели.
Output – сгенерированный моделью ответ или рассуждения, необходимые для его получения.
Базово это все, но выделяют еще дополнительные типы, необходимые для тарификации и аналитики.
Reasoning или thinking – внутренние рассуждения модели. Они входят в output. Что это за токены и откуда они появляются, рассмотрим в другом посте. Считаются отдельно исключительно для аналитики, чтобы понимать, чем агент занимался.
В агентском цикле на вход каждый раз подается весь контекст, и чтобы его не пересчитывать, используется кэш, который тарифицируется отдельно. Это очень важно, поскольку в противном случае скорость работы снижается и растет стоимость.
Cache read – часть входного контекста, для которой часть вычислений уже была проведена ранее. Провайдер использует готовый кэш и не производит часть операций, поэтому такие токены стоят дешевле обычного input.
Cache write – собственно запись контекста или его части в кэш. К примеру у Anthropic, отдельно учитывается запись на 5 минут и на 1 час. Некоторые провайдеры Cache write не тарифицируют.
Итого полная стоимость считается так, с текущим способом организации инференса:
Стоимость запроса =
(Input × тариф Input
+ Cache Read × тариф Cache Read
+ Cache Write × тариф Cache Write
+ Output × тариф Output) / 1 000 000
– @tthread