AI для новичковИнструкция
Входные и выходные токены: за что платите в API
Почему AI API считает входные и выходные токены отдельно, где их увидеть в поле usage и как посчитать стоимость одного запроса.

Содержание
Если вы только что сделали первый запрос к языковой модели через API, то наверняка заметили в ответе блок usage и задумались, что именно он считает. Коротко: у каждого запроса два счётчика. Один считает токены, которые вы отправили (вход), другой — токены, которые модель написала в ответ (выход). У каждого счётчика своя цена, а стоимость запроса — сумма обоих.
В этом руководстве: где взять числа, как перевести их в доллары и что можно изменить, чтобы тратить меньше. Если слово «токен» пока непонятно, начните со статьи Что такое токен в AI.
Что считается входом, а что выходом#
Входные токены — всё, что модель должна прочитать, чтобы ответить:
- ваше последнее сообщение;
- системный промпт (инструкции вроде «отвечай кратко, по-русски»);
- предыдущие сообщения диалога, если вы отправляете их снова;
- документы, код или результаты поиска, которые вы вставляете в запрос.
Выходные токены — всё, что модель сгенерировала в ответ. В OpenAI-совместимом формате это текст в choices[0].. Некоторые модели в режиме рассуждений перед финальным ответом генерируют ещё и токены рассуждений; тарифицируются ли они как выход, смотрите на странице цен конкретной модели.
Важное для новичков: модель не помнит ваш чат между запросами. Чат-приложение каждый раз отправляет всю историю заново, поэтому вход длинного диалога растёт с каждым ходом, даже если новое сообщение — одна строка.
Где взять числа: блок usage#
Каждый ответ OpenAI-совместимого API без стриминга заканчивается объектом usage. Учебный пример его формы:
{
"choices": [
{ "message": { "role": "assistant", "content": "..." }, "finish_reason": "stop" }
],
"usage": {
"prompt_tokens": 2000,
"completion_tokens": 500,
"total_tokens": 2500
}
}Прокрутите таблицу вправо →
| Поле | Что означает | Как тарифицируется |
|---|---|---|
prompt_tokens |
Токены всего, что вы отправили | Вход |
completion_ |
Токены, которые сгенерировала модель | Выход |
total_tokens |
prompt_tokens + completion_ |
Отдельной цены нет: это просто сумма |
Частая ошибка новичков — умножить total_tokens на одну цену. Цены входа и выхода разные, поэтому нужны оба числа по отдельности.
У некоторых провайдеров есть дополнительные поля. Например, собственный API DeepSeek делит prompt_tokens на prompt_ и prompt_, а в режиме рассуждений сообщает reasoning_tokens (источник: документация DeepSeek API, проверено 21 октября 2026 года). Три поля из таблицы — те, на которые можно рассчитывать в любом OpenAI-совместимом ответе.
При стриминге usage в начале ответа ещё неизвестен. В собственном API DeepSeek он приходит в последнем чанке с контентом перед data: [DONE] (документация DeepSeek API, проверено 21 октября 2026 года); другие API могут отправлять его иначе или только по запросу, поэтому проверьте, что получает ваш клиент. О самом стриминге — в статье Стриминг ответов в Python.
Почему у сторон разные цены#
Читать промпт и писать ответ — разная работа. Модель обрабатывает весь промпт за один проход, а ответ должна выдавать по одному токену, и каждый новый токен зависит от предыдущих. Поэтому провайдеры обычно ставят выход дороже входа, и в любом прайсе у модели два числа.
Модель из примера ниже — MiniMax-M2.7 (id minimax-m2.7) — следует этой схеме. Текущие цены за 1M токенов: $0.05 за вход и $0.15 за выход.
Формула#
Цены указывают за 1 миллион токенов, поэтому стоимость одного запроса такая:
стоимость = входные_токены × цена_входа ÷ 1 000 000
+ выходные_токены × цена_выхода ÷ 1 000 000То же самое с выдуманными круглыми ценами — только чтобы показать арифметику (пример, подставьте текущие цены из таблицы ниже):
# пример, подставьте текущие цены из таблицы
price_in = 0.20 # USD за 1M входных токенов
price_out = 0.80 # USD за 1M выходных токенов
prompt_tokens = 2000
completion_tokens = 500
cost = (prompt_tokens * price_in + completion_tokens * price_out) / 1_000_000
# 2000 × 0.20 ÷ 1 000 000 = 0.0004 (вход)
# 500 × 0.80 ÷ 1 000 000 = 0.0004 (выход)
# 0.0004 + 0.0004 = 0.0008 USDРазбор на реальной модели#
Возьмём запрос из примера usage выше: 2 000 входных и 500 выходных токенов. На MiniMax-M2.7 через CheapTokens он стоит $0.00018. Число считается по текущему прайсу при каждом показе страницы.
Один запрос копеечный, поэтому полезно умножить. Небольшое приложение, которое отправляет 10 000 таких запросов, тратит 20 000 000 входных и 5 000 000 выходных токенов — это $1.75.
Тот же запрос на других моделях из нашего списка:
| Модель | Вход $/1M | Выход $/1M | Стоимость | OpenRouter |
|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.00006 | $0.00012 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.00008 | $0.00017 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00018 | $0.0012 |
2 000 входных и 500 выходных токенов всего. Цены за 1M токенов актуальны и меняются вместе с нашими тарифами; столбец OpenRouter показывает справочные цены для той же нагрузки.
Обратите внимание: выход здесь — небольшая часть токенов (500 из 2 500), но бóльшая часть счёта, чем их доля в токенах, потому что выходные токены стоят дороже (см. таблицу). У этой модели именно по выходу подтверждена экономия относительно референсной цены OpenRouter — это удобно, если ваше приложение пишет длинные ответы.
Как это выглядит в коде#
Поле usage можно прочитать через официальный Python-пакет openai, указав базовый адрес CheapTokens:
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key="YOUR_API_KEY",
)
response = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7",
messages=[{"role": "user", "content": "Объясни входные и выходные токены в двух предложениях."}],
)
usage = response.usage
print("вход:", usage.prompt_tokens)
print("выход:", usage.completion_tokens)
print("всего:", usage.total_tokens)
# пример, подставьте текущие цены из таблицы выше
price_in, price_out = 0.20, 0.80
cost = (usage.prompt_tokens * price_in + usage.completion_tokens * price_out) / 1_000_000
print(f"примерная стоимость: ${cost:.6f}")Если вы ещё не отправляли запрос, сначала пройдите Первый запрос к API CheapTokens.
Как тратить меньше токенов#
- Сократите промпт. Уберите из системного промпта лишние инструкции. Каждый отправленный токен оплачивается в каждом запросе.
- Обрезайте историю. В длинном чате оставляйте последние несколько реплик или краткое резюме вместо всего диалога.
- Отправляйте только нужную часть документа. Страница текста дешевле целого файла.
- Просите нужный формат. «Ответь тремя пунктами» даёт меньше выходных токенов, чем свободное эссе.
- Ставьте
max_tokensосознанно. Параметр ограничивает только выход. Слишком маленькое значение обрежет ответ; подробности — в статье Почему ответ AI обрывается на полуслове. MiniMax-M2.7 в CheapTokens допускает до 8 192 выходных токенов в одном ответе и имеет контекст 180K.
Для оценки стоимости большого сценария см. Как оценить стоимость AI-агента.
Что запомнить#
- В каждом запросе есть входные токены (
prompt_tokens) и выходные (completion_).tokens - У них раздельные цены, обычно выход дороже.
- Стоимость = входные токены × цена входа + выходные токены × цена выхода, цены — за 1M токенов.
- Берите числа из
usageв ответе, а не угадывайте.
В CheapTokens один предоплаченный баланс на все модели, цены каждой модели фиксированы и без пиковых часов, а API совместим с OpenAI Chat Completions и Anthropic Messages. Чтобы повторить пример выше, получите API-ключ и отправьте первый запрос.
Актуальные цены всех моделей — на странице тарифов CheapTokens.



