Оптимізація витратПосібник
Порахуйте токени перед надсиланням запиту: tiktoken у Python
Оцініть кількість токенів запиту офлайн за допомогою tiktoken, перевірте її щодо контекстного вікна, оцініть вартість і порівняйте з полем usage від API.

На цій сторінці
Ви можете порахувати токени запиту на власній машині ще до його надсилання: встановіть tiktoken, закодуйте текст, візьміть len() від результату. tiktoken — це токенізатор OpenAI, тому для моделей DeepSeek, GLM і MiniMax це число є оцінкою. Справжнє значення повертається в usage. після першого виклику, і порівняти ці два числа — це ще один рядок.
Навіщо це робити? Бо і рахунок, і помилки починаються з розміру вхідних даних. Вставте довгий контракт у скрипт — і ви дізнаєтеся, що він завеликий, лише коли API відповість 400. Запустіть пакет із п'яти тисяч листів — і дізнаєтеся, скільки це коштувало, лише коли баланс зменшиться. Попередній підрахунок перетворює обидві несподіванки на число, яке можна прочитати заздалегідь.
П'ять рядків, що рахують токени#
README tiktoken (перевірено 1 листопада 2026) показує всю ідею: виберіть кодування, закодуйте текст, і довжина списку — це кількість токенів.
pip install tiktokenimport tiktoken
enc = tiktoken.get_encoding('o200k_base')
text = 'Hello world'
tokens = enc.encode(text)
print(len(tokens)) # how many tokens the text is
enc. повертає оригінальний текст — зручна перевірка, що ви дивитеся на той самий текст, який побачить модель. README також згадує tiktoken., який вибирає токенізатор для конкретної моделі OpenAI. Ось у чому річ, яку варто запам'ятати: токенізатори належать до родин моделей. Емпіричне правило з README — приблизно чотири байти тексту на токен, і воно описує лише токенізатори OpenAI.
То що робити для моделі DeepSeek? Використовуйте той самий підрахунок як робочу оцінку й відкалібруйте його, як показано нижче.
Вгадайте число
Приблизно скільки токенів у англійському тексті з 2 000 символів?
Ваше припущення
02 000
Показати відповідь
Відповідь: 500
Близько 500. За емпіричним правилом із README — чотири байти на токен, а звичайний англійський текст — приблизно один байт на символ, тож 2 000 ÷ 4 = 500. Інші мови та емодзі займають більше байтів на символ, тому ті самі 2 000 символів за цим правилом зазвичай означають більше токенів.
Чи вміщується запит у вікно?#
Кожна модель має контекстне вікно, і ваші вхідні дані разом із дозволеною відповіддю мають у нього вміститися. Вікна для моделей, які ми обслуговуємо: DeepSeek-V4-Flash 380K, GLM-5.3-Flash 390K, MiniMax-M2.7 180K токенів. Найдовша відповідь — 32 768 токенів для DeepSeek-V4-Flash і 8 192 для двох інших (список моделей CheapTokens, 1 листопада 2026).
Перевірка перед викликом — це чотири рядки:
CONTEXT = {
'deepseek-ai/DeepSeek-V4-Flash-0731': 380_000,
'zai-org/GLM-5.3-Flash': 390_000,
'MiniMaxAI/MiniMax-M2.7': 180_000,
}
def fits(prompt_tokens, max_tokens, model):
return prompt_tokens + max_tokens <= CONTEXT[model]Скажімо, у вас документ на 250 000 токенів. fits(250_ дорівнює False, тож ви спрямовуєте це завдання на модель із більшим вікном або розбиваєте документ, і 400 більше не трапляється. fits(250_ дорівнює True. Якщо хочете повну історію про те, як виглядає помилка, request too long: 400 vs 413, context window and max_tokens розбирає це.
Скільки це коштуватиме?#
Тепер бюджет. Візьміть один типовий елемент, порахуйте його й помножте. Припустімо, ви класифікуєте 5 000 листів із замовленнями. Ви рахуєте один репрезентативний лист і отримуєте близько 800 вхідних токенів, а мітку й коротке пояснення обмежуєте 200 вихідними токенами. Підсумки: 5 000 × 800 = 4 000 000 вхідних токенів і 5 000 × 200 = 1 000 000 вихідних токенів.
Таблиця нижче оцінює саме таке навантаження за актуальними цінами, з урахуванням вхідних і вихідних токенів разом:
| Модель | Вхід $/1М | Вихід $/1М | За запит | 5 000 запитів | OpenRouter, 5 000 запитів |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000024 | $0.12 | $0.217 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000032 | $0.16 | $0.42 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00007 | $0.35 | $4.20 |
800 вхідних і 200 вихідних токенів на запит. Ціни за 1 млн токенів актуальні та змінюються разом із нашими тарифами; стовпець OpenRouter показує довідкові ціни для того самого навантаження.
Загалом, з урахуванням вхідних і вихідних токенів разом, стовпець CheapTokens дешевший за OpenRouter для цих моделей. Змініть три числа на власні підрахунки — і матимете бюджет ще до першого запиту. Про різницю між двома частинами рахунку дивіться input vs output tokens: what an AI API bills you for, а реальні виміряні приклади — how many tokens an API request uses. Актуальні ціни завжди на сторінці цін.

Порівняйте оцінку з використанням#
Оцінка — це здогад про чужий токенізатор, тож звірте її один раз із відповідями. Кожна відповідь містить поле usage, а usage. — це те, що API порахував для ваших вхідних даних. Поставте ці два числа поруч і поділіть.
Крок за кроком
Запустіть порівняння
Налаштування
Встановіть пакети й покладіть ключ у змінну середовища. Ніколи не вставляйте його в скрипт.
pip install tiktoken openai
export CHEAPTOKENS_API_KEY='your-key-here'Запустіть скрипт
Збережіть це як compare.py. Він рахує локально, надсилає запит до https:/ і виводить обидва числа. Ідентифікатор моделі — повний, зі списку моделей CheapTokens, оскільки скорочені назви не приймаються.
import os
import tiktoken
from openai import OpenAI
MODEL = 'deepseek-ai/DeepSeek-V4-Flash-0731'
enc = tiktoken.get_encoding('o200k_base')
messages = [{'role': 'user',
'content': 'Classify this email as order, refund or other: Hi, my parcel from last Tuesday has not arrived yet.'}]
estimate = sum(len(enc.encode(m['content'])) for m in messages)
client = OpenAI(base_url='https://api.cheaptokens.dev/v1',
api_key=os.environ['CHEAPTOKENS_API_KEY'])
r = client.chat.completions.create(model=MODEL, messages=messages, max_tokens=200)
real = r.usage.prompt_tokens
print(f'estimate {estimate}, usage.prompt_tokens {real}, ratio {real / estimate:.2f}')Прочитайте розбіжність
Останній рядок виводить три числа. Скажімо, він показує estimate 24, usage.. Тоді множте свої майбутні оцінки на це співвідношення перед складанням бюджету. Справжній запит також обгортається у формат чату, тож реальний підрахунок може вийти трохи більшим за оцінку для простого тексту. Запустіть це на кількох типових запитах, а не на одному, і використовуйте середнє співвідношення.
Відтоді routine така: оцініть локально, перевірте вікно, застосуйте своє співвідношення до бюджету й дозвольте usage у кожній відповіді тримати вас у курсі. Якщо вам також потрібен накопичувальний підсумок за все завдання, track AI agent token cost in Python будує це на тому самому полі. Новачок у самому підключенні? Your first API request with CheapTokens розповідає про це, а решта — у документації.
З'єднайте пари
Зіставте кожну назву з тим, що вона вам каже
Торкніться елемента ліворуч, потім його пари
- len(enc.encode(text))Ваша локальна оцінка розміру вхідних даних
- usage.prompt_tokensРозмір вхідних даних, як його порахував API
- usage.completion_tokensРозмір відповіді, що тарифікується на вихідній стороні
- max_tokensОбмеження довжини відповіді, яке ви резервуєте під час перевірки вікна
Підрахунок дешевий, локальний і займає секунди. Робіть його перед викликом, який коштує грошей.



