Назад до блогу

AI для початківцівПосібник

Вхідні та вихідні токени: за що AI API виставляє вам рахунок

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

Автор: CheapTokens TeamОпубліковано Оновлено 5 хв читання

Обкладинка із заголовком «Вхідні та вихідні токени» і рядком «За що ви платите в API-запиті» на темному сітчастому тлі
На цій сторінці
  1. Що вважається вхідним, а що вихідним
  2. Де читати числа: блок usage
  3. Чому дві сторони мають різні ціни
  4. Формула
  5. Розгорнутий приклад із реальною моделлю
  6. Використання в коді
  7. Як витрачати менше токенів
  8. Що запам'ятати

Якщо ви щойно зробили свій перший API-виклик до мовної моделі, ви, ймовірно, побачили у відповіді блок usage і замислилися, що саме він рахує. Коротка відповідь: кожен запит має два лічильники. Один рахує токени, які ви надсилаєте (вхідні), інший — токени, які модель пише у відповідь (вихідні). Кожен лічильник має власну ціну, а вартість запиту — це сума обох.

Цей посібник показує, де знайти ці числа, як перетворити їх на долари та що можна змінити, щоб витрачати менше. Якщо слово «токен» досі нечітке, почніть з Що таке токен в AI?.

Що вважається вхідним, а що вихідним#

Вхідні токени — це все, що модель має прочитати, щоб відповісти вам:

  • ваше останнє повідомлення;
  • системний промпт (інструкції на кшталт «відповідай стисло, українською»);
  • попередні повідомлення розмови, якщо ви надсилаєте їх знову;
  • документи, код або результати пошуку, які ви вставляєте в запит.

Вихідні токени — це все, що модель генерує у відповідь. У форматі, сумісному з OpenAI, це текст у choices[0].message.content. Деякі моделі в режимі міркування також генерують токени міркування перед остаточною відповіддю; перевірте сторінку цін моделі, щоб дізнатися, чи тарифікуються вони як вихідні.

Важливий момент для початківців: модель не пам'ятає вашу розмову між запитами. Чат-застосунок щоразу надсилає всю історію, тому вхідні дані довгої розмови зростають з кожним кроком, навіть якщо ваше нове повідомлення — один рядок.

Де читати числа: блок usage#

Кожна нестрімінгова відповідь від API, сумісного з OpenAI, завершується об'єктом usage. Це навчальний приклад його структури:

json
{
  "choices": [
    { "message": { "role": "assistant", "content": "..." }, "finish_reason": "stop" }
  ],
  "usage": {
    "prompt_tokens": 2000,
    "completion_tokens": 500,
    "total_tokens": 2500
  }
}
Поле Що воно означає Тарифікується як
prompt_tokens Токени у всьому, що ви надіслали Вхідні
completion_tokens Токени, які згенерувала модель Вихідні
total_tokens prompt_tokens + completion_tokens Не окрема ціна: це лише сума

Поширена помилка початківців — множити total_tokens на одну ціну. Оскільки вхідні та вихідні мають різні ціни, вам потрібні ці два числа окремо.

Деякі провайдери додають додаткові поля. Наприклад, власний API DeepSeek також розділяє prompt_tokens на prompt_cache_hit_tokens і prompt_cache_miss_tokens та в режимі міркування повідомляє 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 мільйон токенів, тому вартість одного запиту:

text
cost = input_tokens × input_price ÷ 1,000,000
     + output_tokens × output_price ÷ 1,000,000

Ось вона з вигаданими круглими цінами, лише щоб показати арифметику (приклад, підставте поточні ціни з таблиці нижче):

python
# 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.

Той самий запит на інших моделях з нашого списку:

Модель Вартість OpenRouter
GLM-5.3-Flash $0.00006 $0.00012
DeepSeek-V4-Flash $0.00008 $0.00017
MiniMax-M2.7 $0.00018 $0.0012

2 000 вхідних і 500 вихідних токенів загалом. Ціни за 1 млн токенів актуальні та змінюються разом із нашими тарифами; стовпець OpenRouter показує довідкові ціни для того самого навантаження.

Зверніть увагу, що вихідні тут — незначна частина кількості токенів (500 з 2 500), але більша частина рахунку, ніж їхня частка токенів, бо вихідні токени коштують дорожче (див. таблицю). Для цієї моделі саме на вихідній стороні також підтверджується економія порівняно з довідковою ціною OpenRouter, що корисно, якщо ваш застосунок пише довгі відповіді.

Використання в коді#

Ви можете читати usage з офіційного Python-пакета openai, вказавши базову URL-адресу CheapTokens:

python
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-агента.

Що запам'ятати#

  1. Кожен запит має вхідні токени (prompt_tokens) і вихідні токени (completion_tokens).
  2. Вони мають окремі ціни, зазвичай вихідні дорожчі.
  3. Вартість = вхідні токени × ціна вхідних + вихідні токени × ціна вихідних, де ціни за 1M токенів.
  4. Читайте числа з usage у відповіді, а не вгадуйте.

На CheapTokens один передплачений баланс покриває всі моделі, ціни за модель фіксовані без пікового тарифу, а API сумісний з OpenAI Chat Completions і Anthropic Messages. Щоб спробувати приклад вище, отримайте API-ключ і надішліть свій перший запит.

Поточні ціни для кожної моделі: Ціни CheapTokens.