Регистрация
Все статьи
Деньги 22.07.2026 7 мин

Сколько стоит токен и как не переплатить

Входные и выходные токены, цена system-промпта и истории диалога, кэширование префикса и выбор модели под задачу. С расчётами на моделях из каталога.

Счёт за LLM-API складывается из двух чисел: сколько токенов вы отправили и сколько модель сгенерировала. Обе величины приходят в поле usage каждого ответа, обе управляются кодом. Разбираем, из чего они состоят и где чаще всего утекают деньги.

Токен — не символ и не слово

Токенизатор режет текст на куски по частотности. В английском один токен — это примерно четыре символа или три четверти слова. В русском тексте символов на токен приходится меньше: кириллица реже встречается в обучающих корпусах токенизатора, поэтому слова чаще распадаются на части. Код, JSON и разметка расходуются ещё быстрее — каждая скобка, отступ и кавычка отдельны.

Практический вывод один: не оценивайте расход по длине строки. Точное число всегда есть в ответе.

"usage": {
  "prompt_tokens": 1740,
  "completion_tokens": 253,
  "total_tokens": 1993
}

При потоковой выдаче usage приходит в последнем чанке, если передать stream_options: { "include_usage": true }. Разбор — в разделе streaming.

Вход и выход — две разные цены

В каталоге у каждой модели две цены за 1M токенов. openai/gpt-4.1-mini — 34 ₽ на входе и 134 ₽ на выходе. anthropic/claude-4.5-sonnet — 252 ₽ и 1 260 ₽. Разница в четыре-пять раз стабильно повторяется у всех вендоров, и это не маркетинг.

Почему выход дороже

Обработка запроса делится на две фазы с принципиально разной экономикой.

  • Prefill. Весь промпт прогоняется через модель одним батчем: токены обрабатываются параллельно, GPU загружен полностью. Тысяча входных токенов стоит почти столько же машинного времени, сколько сотня.
  • Decode. Ответ рождается по одному токену за проход. Каждый следующий токен требует полного прохода по весам модели и не может быть посчитан раньше предыдущего. Параллелить нечего, GPU упирается в пропускную способность памяти, а KV-кэш растёт с каждым шагом.

Отсюда правило: сокращать выход выгоднее, чем сокращать вход. Если модель отвечает на вопрос классификации словом «да» вместо абзаца рассуждений, вы экономите на самой дорогой части счёта. Просите короткий ответ прямо в system-промпте и ставьте max_tokens — это ещё и страховка от бесконечной генерации.

Отдельно про reasoning-модели вроде openai/o4-mini и deepseek/deepseek-r2: скрытые токены рассуждений тарифицируются как выходные, хотя в ответе вы их не видите. На простых задачах reasoning-модель может обойтись дороже флагмана.

Из чего складывается вход

prompt_tokens — это не только вопрос пользователя. Туда попадает всё, что вы отправили.

System-промпт

Он уходит на сервер с каждым запросом. Инструкция на 800 токенов при 40 000 запросов в месяц — это 32M входных токенов, то есть 1 088 ₽ на openai/gpt-4.1-mini только за то, что модель заново читает одни и те же правила. Держите system-промпт коротким: убирайте примеры, которые модель и так отрабатывает, и вежливые обороты, которые ни на что не влияют.

История диалога

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

Ход диалога Токенов в запросе Накоплено токенов
1 500 500
5 2 100 6 500
10 4 100 23 000
20 8 100 86 000

Что с этим делать: держать скользящее окно из последних N ходов, суммировать старую часть диалога в короткую справку и класть в system-промпт, обрезать историю по бюджету токенов, а не по числу сообщений.

Описания функций и документы

Массив tools уходит в промпт целиком, вместе с JSON Schema каждого параметра. Двадцать функций по 150 токенов — это 3 000 токенов на каждом запросе. Отдавайте модели только те функции, которые уместны в текущем шаге сценария.

То же с RAG: подмешивайте три релевантных фрагмента вместо десяти. Качество ответа от этого чаще растёт, чем падает, — длинный контекст размывает внимание модели.

Кэширование префикса

Часть провайдеров умеет кэшировать общее начало промпта: если следующий запрос начинается ровно теми же токенами, prefill для них не пересчитывается, и повторное чтение префикса стоит дешевле обычного входного токена. Поддержка и размер скидки зависят от провайдера — фактическое списание всегда видно в разделе «Расходы» в консоли.

Чтобы кэш вообще имел шанс сработать, порядок сообщений должен быть стабильным:

  • неизменяемое — в начало: system-промпт, описания функций, справочники;
  • переменное — в конец: текущий вопрос, метки времени, идентификаторы сессии;
  • никаких случайных элементов в начале промпта — один изменившийся токен обнуляет весь префикс.

Типовая ошибка — подставлять текущую дату первой строкой system-промпта. Она ломает кэш на каждом запросе.

Выбор модели под задачу

Самая крупная экономия — не в промпте, а в решении, какая модель нужна для этой конкретной операции. Разброс цен в каталоге — три порядка.

Модель Вход, ₽ за 1M Выход, ₽ за 1M
anthropic/claude-4.5-opus 1 260 6 300
openai/gpt-5 105 840
openai/gpt-4.1-mini 34 134
google/gemini-2.5-flash-lite 8 34
mistral/mistral-small-3.2 4 13
deepseek/deepseek-flash-0731 1 3

Ориентир по типам задач:

  • Классификация, извлечение полей, определение интента. Маленькая открытая модель, короткий ответ, temperature: 0. Флагман здесь не даст прироста точности, за который стоит платить.
  • Диалог с пользователем. Средний класс: openai/gpt-4.1-mini, google/gemini-2.5-flash, anthropic/claude-4-haiku.
  • Сложное рассуждение, длинный код, анализ документов. Флагман — но точечно, а не на каждый запрос.
  • Эмбеддинги. Отдельная категория: openai/text-embedding-3-large стоит 11 ₽ за 1M входных токенов, выходных у неё нет. Раздел embeddings.

Рабочая схема — каскад: дешёвая модель отвечает сама, а сложные случаи по явному признаку передаёт наверх. Если наверх уходит 10% запросов, счёт падает почти во столько же раз, во сколько отличаются цены.

Расчёт на живом примере

Поддержка в чате: 40 000 обращений в месяц, в каждом system-промпт 400 токенов, история 1 200 токенов, вопрос 100 токенов, ответ 250 токенов. Итого 68M входных и 10M выходных токенов.

Модель Вход Выход В месяц
anthropic/claude-4.5-sonnet 17 136 ₽ 12 600 ₽ 29 736 ₽
openai/gpt-5 7 140 ₽ 8 400 ₽ 15 540 ₽
google/gemini-2.5-flash 1 700 ₽ 2 100 ₽ 3 800 ₽
openai/gpt-4.1-mini 2 312 ₽ 1 340 ₽ 3 652 ₽
deepseek/deepseek-v3.2 272 ₽ 170 ₽ 442 ₽

Два наблюдения из таблицы.

Первое: google/gemini-2.5-flash дешевле на входе, но дороже на выходе, и по итогу проигрывает openai/gpt-4.1-mini на профиле с длинными ответами. Сравнивать модели по одной цифре бессмысленно — считайте на своём соотношении вход/выход.

Второе: если срезать историю с 1 200 до 300 токенов скользящим окном, вход падает с 68M до 32M, и месяц на openai/gpt-4.1-mini стоит 2 428 ₽ вместо 3 652 ₽. Треть счёта — за одно изменение в коде сборки сообщений.

Что сделать в первую очередь

  1. Включите stream_options.include_usage и пишите prompt_tokens и completion_tokens в свои логи рядом с именем сценария. Без этого любая оптимизация — гадание.
  2. Посмотрите в консоли, какой ключ и какая модель дают основную долю расхода. Обычно это один сценарий из десяти.
  3. Ограничьте историю бюджетом токенов и поставьте max_tokens на всех вызовах.
  4. Проверьте, не решается ли самый массовый сценарий моделью классом ниже. Прогон на сотне реальных запросов занимает вечер.
  5. Сократите system-промпт — он уходит на сервер с каждым запросом, поэтому каждая лишняя сотня токенов умножается на весь месячный объём.

Порядок списания и работа с балансом описаны в разделе биллинг, актуальные цены — в витрине цен.

Проверьте на своей задаче

Ключ выдаётся сразу после регистрации — базовый URL и баланс уже в консоли.