NormaHub knowledge base

Стоимость токенов

Итоговая цена зависит от входных и выходных токенов, кэша и размера workflow. Формула, примеры и способы снизить счёт — ниже.

1. Базовая формула

Токен — единица расчёта: слова, их части, пунктуация и служебные маркеры. Ставка всегда указана за миллион токенов и всегда раздельно за вход и выход. Ошибка новичка — умножать весь запрос на одну ставку: вход и выход тарифицируются отдельно и часто отличаются в разы.

Стоимость запроса =
  (input_tokens  / 1 000 000 × цена входа) +
  (output_tokens / 1 000 000 × цена выхода)
# Пример: 2 000 входных токенов при ставке $0.50 за 1M
#          + 500 выходных при ставке $1.00 за 1M
#   2000 / 1_000_000 × 0.50  =  $0.001
#    500 / 1_000_000 × 1.00  =  $0.0005
#   Итого до округления: $0.0015

Предварительная оценка считает максимум, фактическое списание — реально обработанные токены. Поэтому после запроса сверяйтесь с usage, а не со своей прикидкой. Актуальные ставки каждой модели — на странице моделей и цен, примеры ниже посчитаны на тарифах каталога и могут меняться.

2. Рост контекста в диалоге

Главная причина «вчера стоило копейки, сегодня дорого» — история диалога. Приложение обычно пересылает всю переписку при каждом новом сообщении, поэтому десятый запрос везёт в девять раз больше входа, чем первый, при одинаковом вопросе пользователя. Сюда же добавляются системные инструкции и вставки RAG.

# Почему 10-й запрос дороже 1-го при том же вопросе:
#   запрос 1:  системный промпт (500) + вопрос (100)            = 600 input
#   запрос 10: системный промпт (500) + история (9 × 400) + вопрос (100) = 4 200 input
# Вывод: бюджет считайте по медиане и 95-му перцентилю полного входа,
# а не по размеру одного сообщения пользователя.

Лекарства: суммаризация истории, скользящее окно последних сообщений, вынесение стабильного контекста в кэшируемые блоки. Измеряйте медиану и верхний перцентиль полного входа на реальных диалогах, а не на одном тестовом вопросе.

3. Кэш и image generation

Кэширование снижает цену повторного входа, но работает только при подтверждённом cached usage: каталог показывает отдельные ставки именно для этого случая. Для image-моделей действует другая единица — фиксированная цена за генерацию, и в интерфейсе её нужно отделять от тарифа за миллион токенов, чтобы не вводить пользователя в заблуждение.

Для сложного workflow считайте отдельно: число текстовых запросов с их input/output, число генераций изображений и возможные повторы после ошибок. Смешивание этих единиц в одну цифру — самая частая причина расхождения estimate и factura.

4. Практика экономии

Ограничивайте max_tokens каждому вызову: модель не должна иметь возможность сгенерировать роман за ваш счёт. Сокращайте повторяющийся контекст, переиспользуйте системные инструкции через кэш, выбирайте младшую модель для классификации и черновиков, а флагман — только для сложных шагов. Дорогой fallback (повтор на старшей модели) включайте лишь после дешёвых попыток.

Отслеживайте стоимость полной пользовательской операции, а не одного запроса: цепочка из пяти вызовов с ретраями — это пять списаний. Дашборд трат стройте по данным истории личного кабинета, а коды ошибок, из-за которых случаются повторы, разбирайте по гайду по ошибкам. Как считать агентские сессии целиком — в статье про стоимость workflow.

Частые вопросы

Почему счёт больше, чем цена за миллион токенов?

Ставка — только часть расчёта. В итог попадают системный промпт, история диалога, повторные попытки и правила кэширования. Источник истины — финальный usage и запись в истории личного кабинета, а не предварительная оценка.

Как считается image generation?

Отдельно от текстовых тарифов: одна генерация стоит фиксированную цену за изображение. Не подставляйте в этот расчёт token input/output rates текстовой модели.

Что такое cached input и как его считать?

Если каталог показывает отдельные cached-ставки, применяйте их только при подтверждённом cached usage в ответе. Нельзя выводить скидку умножением базовой цены на процент — это не заменяет фактическую структуру usage.

Где посмотреть финальную сумму запроса?

В истории запросов личного кабинета: каждый запрос сохраняется с usage и итоговой стоимостью с учётом применённых правил тарификации.