AI для початківцівПосібник
Вхідні та вихідні токени: за що AI API виставляє вам рахунок
Чому AI API рахує вхідні та вихідні токени окремо, де їх читати в полі usage і як обчислити вартість одного запиту.

На цій сторінці
Якщо ви щойно зробили свій перший API-виклик до мовної моделі, ви, ймовірно, побачили у відповіді блок usage і замислилися, що саме він рахує. Коротка відповідь: кожен запит має два лічильники. Один рахує токени, які ви надсилаєте (вхідні), інший — токени, які модель пише у відповідь (вихідні). Кожен лічильник має власну ціну, а вартість запиту — це сума обох.
Цей посібник показує, де знайти ці числа, як перетворити їх на долари та що можна змінити, щоб витрачати менше. Якщо слово «токен» досі нечітке, почніть з Що таке токен в AI?.
Що вважається вхідним, а що вихідним#
Вхідні токени — це все, що модель має прочитати, щоб відповісти вам:
- ваше останнє повідомлення;
- системний промпт (інструкції на кшталт «відповідай стисло, українською»);
- попередні повідомлення розмови, якщо ви надсилаєте їх знову;
- документи, код або результати пошуку, які ви вставляєте в запит.
Вихідні токени — це все, що модель генерує у відповідь. У форматі, сумісному з OpenAI, це текст у choices[0].. Деякі моделі в режимі міркування також генерують токени міркування перед остаточною відповіддю; перевірте сторінку цін моделі, щоб дізнатися, чи тарифікуються вони як вихідні.
Важливий момент для початківців: модель не пам'ятає вашу розмову між запитами. Чат-застосунок щоразу надсилає всю історію, тому вхідні дані довгої розмови зростають з кожним кроком, навіть якщо ваше нове повідомлення — один рядок.
Де читати числа: блок usage#
Кожна нестрімінгова відповідь від API, сумісного з OpenAI, завершується об'єктом 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 мільйон токенів, тому вартість одного запиту:
cost = input_tokens × input_price ÷ 1,000,000
+ output_tokens × output_price ÷ 1,000,000Ось вона з вигаданими круглими цінами, лише щоб показати арифметику (приклад, підставте поточні ціни з таблиці нижче):
# example, substitute current prices from the table
price_in = 0.20 # USD per 1M input tokens
price_out = 0.80 # USD per 1M output tokens
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 (input)
# 500 × 0.80 ÷ 1,000,000 = 0.0004 (output)
# 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.
Той самий запит на інших моделях з нашого списку:
| Модель | Вхід $/1М | Вихід $/1М | Вартість | 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 вихідних токенів загалом. Ціни за 1 млн токенів актуальні та змінюються разом із нашими тарифами; стовпець OpenRouter показує довідкові ціни для того самого навантаження.
Зверніть увагу, що вихідні тут — незначна частина кількості токенів (500 з 2 500), але більша частина рахунку, ніж їхня частка токенів, бо вихідні токени коштують дорожче (див. таблицю). Для цієї моделі саме на вихідній стороні також підтверджується економія порівняно з довідковою ціною OpenRouter, що корисно, якщо ваш застосунок пише довгі відповіді.
Використання в коді#
Ви можете читати usage з офіційного Python-пакета openai, вказавши базову URL-адресу 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": "Explain input and output tokens in two sentences."}],
)
usage = response.usage
print("input:", usage.prompt_tokens)
print("output:", usage.completion_tokens)
print("total:", usage.total_tokens)
# example, substitute current prices from the table above
price_in, price_out = 0.20, 0.80
cost = (usage.prompt_tokens * price_in + usage.completion_tokens * price_out) / 1_000_000
print(f"approx. cost: ${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.



