Cost per Token
cost per token — расчёт стоимости использования языковой модели
Cost per Token описывает тарификацию LLM API по объёму входа и выхода. К итоговой сумме могут добавляться кэш, инструменты, хранение и повторные вызовы. Конкретные ставки меняются, поэтому бюджет строят по текущему прайсу и реальным данным о расходе из API.
Коротко
Коротко. Стоимость вызова языковой модели обычно считается отдельно для входных и выходных токенов. Реальный счёт включает также повторные попытки, кэш, инструменты и служебный контекст. Сравнивать полезнее не цену миллиона токенов, а стоимость принятого результата на своей задаче.
Базовая формула
Если ставки указаны за миллион токенов, стоимость одного вызова можно записать так:
uncached_input_tokens × input_rate / 1 000 000
+ output_tokens × output_rate / 1 000 000
+ cache_cost
+ tool_cost
+ storage_cost
Здесь uncached_input_tokens — входные токены, не учтённые отдельно в стоимости кэша. Если API включает кэшированные токены в общий input_tokens, их нельзя повторно оплатить в обеих строках расчёта. Состав полей нужно сверить с документацией.
Ставки input_rate и output_rate берутся из актуального прайса точной модели. Алиас модели, дата версии, регион и режим обработки могут влиять на цену.
Что входит во вход
Вход — не только последняя фраза пользователя. В него могут попасть:
- системные инструкции и правила приложения;
- история диалога;
- документы из RAG;
- описания инструментов и JSON-схемы;
- результаты прежних вызовов;
- служебные разделители и мультимодальные представления.
Поэтому короткий видимый вопрос иногда создаёт большой вход. Надёжный источник числа — поле usage в ответе API или журнал провайдера.
Почему выход считают отдельно
Генерация новых токенов и обработка готового контекста имеют разный вычислительный профиль. Провайдеры могут назначать для них разные ставки. Соотношение не является законом и меняется между моделями и режимами.
Ограничение длины ответа помогает бюджету, но слишком жёсткий предел приводит к обрыву и повторному вызову. Считать стоит весь завершённый процесс.
Кэш и пакетная обработка
Кэширование промпта позволяет повторно использовать вычисления для совпадающего начала запроса. Провайдер может отдельно считать запись в кэш, чтение и срок хранения. Фактическая выгода зависит от повторного использования и всех начислений. Например, запись и чтение кэша отдельно описаны в документации Claude.
Пакетный режим может уменьшить расходы на несрочные задачи, но увеличить ожидание. Для расчёта нужны условия именно этого режима: обычный тариф синхронного API может не подойти.
Инструменты и другие модальности
Поиск, выполнение кода, работа с файлами, изображения и аудио могут тарифицироваться:
- за вызов;
- по объёму обработанных данных;
- как дополнительные токены;
- как отдельное вычислительное время.
Фраза «инструмент встроен» не означает, что он бесплатен. Формулу проверяют в документации провайдера и подтверждают по usage.
Наглядный пример
Редакция генерирует описания для карточек. Два кандидата показывают похожую цену токена, но ведут себя по-разному:
- модель A чаще выдаёт готовый текст с первой попытки;
- модель B дешевле за вызов, но требует длинной инструкции и повторной редакции.
В лог записывают вход, выход, кэш, инструменты, число попыток и результат проверки редактором. После этого считают:
все расходы на серию, включая неудачные попытки
/ число результатов, принятых редактором
Если ни один результат не принят, делить не на что: серия показывает отсутствие пригодного результата. Время редактора можно учитывать отдельно или добавить к расходам по заранее выбранному правилу.
Как оценить месячный бюджет
Для каждой категории запроса берут реальное распределение, а не один «средний» пример:
- Собирают небольшой набор типичных, коротких и тяжёлых запросов.
- Запускают его через точную модель и сохраняют usage.
- Добавляют повторы, ошибки, кэш и инструменты.
- Умножают на ожидаемый объём.
- Закладывают резерв на пики и изменение поведения пользователей.
Отдельно полезно поставить технический лимит расходов и уведомление, чтобы ошибка цикла не превратилась в неожиданный счёт.
Токен не равен слову
Разные модели используют разные токенизаторы. Один русский текст может разбиться на разное число токенов, а служебные сообщения добавят собственный объём. Универсального коэффициента «слов на токен» нет.
Для предварительной оценки нужен токенизатор конкретной модели. Для финансового отчёта — фактический usage от API.
Облако и локальный запуск
При запуске на собственной инфраструктуре нет внешнего тарифа за токен, но остаются:
- аренда или амортизация ускорителя;
- электричество и охлаждение;
- время простоя;
- работа инженеров;
- хранение, сеть и мониторинг;
- запас мощности для пиков.
Сравнение проводят по полной стоимости на одинаковой нагрузке и одинаковом качестве. Универсального порога запросов, после которого локальный сервер выгоднее, не существует.
Как снижать расходы
- Убирать повторяющийся и нерелевантный контекст.
- Кэшировать стабильный префикс там, где это поддерживается.
- Ограничивать бесконечные агентские циклы.
- Использовать меньшую модель только после проверки качества.
- Сжимать документы до релевантных фрагментов.
- Не пересылать один и тот же результат инструмента без необходимости.
- Маршрутизировать запросы по сложности и измерять ошибки маршрутизатора.
- Настраивать разумный предел выхода и обработку обрыва.
Экономия, которая повышает число повторов или ручных исправлений, может оказаться мнимой.
Частые ошибки
- Сравнивать только цену входа. Выход и инструменты способны изменить итог.
- Считать один запрос одной операцией. Агент может сделать несколько вызовов.
- Использовать среднюю длину без распределения. Редкие длинные запросы заметно влияют на счёт.
- Забывать служебный контекст. Схемы инструментов и история тоже тарифицируются.
- Переносить коэффициент между языками и моделями. Токенизация различается.
- Считать дорогую модель лучшей. Цена не измеряет качество конкретной задачи.
Частые вопросы
Где брать ставки?
В официальном прайсе провайдера для точного идентификатора модели и режима. Сравнительные таблицы удобны для поиска кандидатов, но не для финального расчёта.
Можно ли посчитать запрос заранее?
Примерно — токенизатором совместимой модели. Точное число зависит от служебной упаковки API, инструментов и фактического ответа.
Как учитывать ошибки?
По фактическим начислениям: не каждая техническая ошибка оплачивается одинаково. Повторный вызов может создать новый расход, а ответ, который не прошёл вашу проверку, обычно уже был сгенерирован. В бюджете стоит отдельно учитывать повторы, тайм-ауты и отбракованные результаты.
Как сравнить две модели?
Запустить один набор задач с одинаковыми критериями, а затем сравнить качество, задержку и стоимость принятого результата.
Главное
Цена токена помогает оценить один вызов. Для бюджета полезнее короткий пробный запуск: сколько потрачено на всю серию, сколько результатов принято и сколько потребовалось исправлений. Такой расчёт можно повторить при смене модели или тарифа, не выбирая инструмент по одной цифре в прайсе.