Как считать токены в LLM: tokenizer, формулы, и точная стоимость запроса до отправки
Каждый запрос к LLM — это деньги в токенах. Чтобы платить ровно столько, сколько нужно, и не получать сюрпризов в счёте на конец месяца, надо уметь считать токены до отправки, а не только по факту в response.usage. В этом гайде — три рабочих способа подсчёта (через tiktoken, anthropic-tokenizer и SDK Gemini), точные формулы стоимости в рублях для всех актуальных моделей через Promptra, реальные коэффициенты плотности «символы → токены» для русского и английского, и шаблон функции, которая возвращает прогноз чека до того, как запрос ушёл в API.
Если вы уже мигрировали на единый эндпоинт по гайду «Миграция с OpenAI API на Promptra» и работаете на юр.лицо российское юр.лицо с полным пакетом закрывающих документов через ЭДО — этот материал поможет дожать юнит-экономику до копейки.
TL;DR — формула, которую надо запомнить
Input считаем заранее через tokenizer. Output прогнозируем по средней длине ответа на вашем трафике + 25% запаса. Тарифы — для Claude Opus 4.7 это 350/1790 ₽ за 1М, для GPT-5.5 — 350/2150 ₽, для Gemini 3.1 Pro — 140/860 ₽, для DeepSeek V4 Pro — 30/60 ₽. Один tokenizer на все модели не работает — у каждого вендора свой.
Что такое токен и почему он не равен слову
Токен — это атомарная единица текста, которую модель видит как одно целое. Один токен может быть целым словом (hello), куском слова (unbeliev+able), отдельным символом (!) или сразу несколькими байтами Unicode. Tokenizer — алгоритм, который преобразует строку в последовательность номеров из словаря. Современные LLM используют Byte-Pair Encoding (BPE) или близкие варианты: словарь строится так, чтобы частые подпоследовательности байт получали короткие коды, редкие — длинные. Эта статья — часть pillar-гида: полный технический гид по LLM API на Python — токены, function calling, streaming, RAG, batch.
Практические следствия:
- Английский текст плотный: ~3.5–4 символа на токен в среднем. Слово production — один токен.
- Русский текст разреженный: ~1.5–2 символа на токен. Слово производство — обычно 3–4 токена (про+из+вод+ство или похожее разбиение).
- Код плотнее английского: ~3–5 символов на токен, потому что в словаре заранее есть частые ключевые слова и identifier'ы.
- JSON и XML — между обычным текстом и кодом по плотности, скобки и кавычки часто становятся отдельными токенами.
Это значит: один и тот же смысловой запрос на русском обычно стоит в 2–2.5 раза дороже, чем тот же запрос на английском. На больших объёмах это аргумент рассмотреть Gemini 3.1 Pro (140/860 ₽) или Claude Opus 4.7 с новым токенайзером, который стал заметно плотнее на кириллице.
Считаем токены для GPT через tiktoken
OpenAI выпускает официальный пакет tiktoken — это С++-биндинг к их BPE, работает быстро, считает точно. Через единый шлюз Promptra та же модель доступна по знакомому SDK — токенайзер используется тот же:
Минимальный пример для GPT-5.5:
Для chat-формата с системой и историей считают так:
Вызов:
Эта же функция работает для GPT-5.4 (170/1070 ₽), GPT-5.4 mini, и старых семейств — tiktoken.encoding_for_model сам подберёт нужный encoding.
Считаем токены для Claude через anthropic-tokenizer
У Claude — свой токенайзер, своя плотность, и tiktoken для него не подходит. Anthropic выпускает anthropic-tokenizer (Python — через anthropic SDK):
count_tokens делает полноценный round-trip к API, но не списывает деньги — это бесплатный endpoint. Удобство — токенайзер всегда тот, что у текущей версии модели. С новым Claude Opus 4.7 токенайзер обновлён: тот же русский текст теперь даёт примерно на 10–20% меньше токенов, чем у Sonnet 3.5 годовой давности.
Если делать оффлайн (без round-trip) — есть пакет tokenizers (от Hugging Face) с загружаемыми весами токенайзера Claude, но это для продвинутого юзкейса. Для большинства задач count_tokens через SDK достаточно — он быстрый (десятки миллисекунд), и его результат гарантированно совпадает с тем, что модель посчитает реально.
Считаем токены для Gemini
Google в google-genai SDK предоставляет метод count_tokens:
Gemini-токенайзер исторически плотнее на кириллице, чем OpenAI/Anthropic — отчасти потому что Google обучает модели на более многоязычном корпусе. На том же русском тексте Gemini 3.1 Pro обычно даёт на 15–30% меньше токенов, чем GPT-5.5. Это плюс к и без того низкой ставке 140/860 ₽ за 1М.
Точная формула стоимости запроса
Когда вы знаете input_tokens (точно — через tokenizer) и прогноз output_tokens (по средней + запас), считаете рубли:
Завышайте output_tokens_estimate на 20–30% от вашей реальной средней — реальность всегда шумит. Если у вас 95-перцентиль выхода — 1200 токенов, прогноз для бюджетного guard лучше считать по 1500.
Реальные коэффициенты плотности (Promptra benchmark 2026-05)
Замеряли на типовых задачах через единый шлюз — нагрузка ~5000 запросов на язык/модель. Цифры — медиана отношения «символы текста / токены»:
- Сегмент: Русский (статьи, диалоги) • GPT-5.5 (`o200k_base`): 1.8 • Claude Opus 4.7: 2.0 • Gemini 3.1 Pro: 2.3
- Сегмент: Английский (документация) • GPT-5.5 (`o200k_base`): 3.9 • Claude Opus 4.7: 4.0 • Gemini 3.1 Pro: 4.1
- Сегмент: Code Python • GPT-5.5 (`o200k_base`): 3.4 • Claude Opus 4.7: 3.6 • Gemini 3.1 Pro: 3.8
- Сегмент: JSON / API responses • GPT-5.5 (`o200k_base`): 2.7 • Claude Opus 4.7: 2.9 • Gemini 3.1 Pro: 3.1
- Сегмент: Тех-русский (термины) • GPT-5.5 (`o200k_base`): 2.1 • Claude Opus 4.7: 2.3 • Gemini 3.1 Pro: 2.5
Что это значит на практике: 1000 символов русского текста — это около 555 токенов для GPT-5.5 и 435 токенов для Gemini 3.1 Pro. На объёме 1M входных символов разница — 120K токенов, или 42 ₽ для GPT-5.5 против 17 ₽ для Gemini. Подробное сравнение моделей по сценариям — в «GPT-5.5 vs Claude Opus 4.7: бенчмарки 2026».
Pre-flight check: считаем чек до отправки
Финальный шаблон — функция, которая возвращает «можно ли отправить запрос» с учётом бюджета:
Эту функцию подключают в три места:
- Frontend — показать пользователю «вы потратите ~4 ₽» перед нажатием «отправить».
- API guard — отказать запросу, если он превышает дневной лимит пользователя.
- Router — выбрать модель на лету: если задача простая, дешёвый прогноз идёт на GPT-5.4 (170/1070 ₽); если сложная — на Opus 4.7. Подробнее про роутинг моделей — в материале «Function calling и tool use на Python».
Как сверять прогноз с реальностью
После каждого запроса ответ возвращает response.usage с фактическими числами. Сохраняйте predicted и actual в лог:
После 500–1000 запросов вы поймёте, на сколько процентов в среднем расходится ваш прогноз с реальностью, и подкрутите коэффициент завышения выходных токенов под свой профиль трафика. У зрелых сервисов на единый эндпоинт Promptra расход совпадает с прогнозом с точностью ±5% — это уровень, при котором можно показывать пользователю реальную цену и не бояться расхождений в счёте.
Оплата и закрывающие документы
Единый счёт на пополнение, прозрачный расход в дашборде по моделям и по ключам, по факту оказания услуг — закрывающие документы через ЭДО. Юрлицо-исполнитель — российское юр.лицо, резидент РФ. Сервисная комиссия 5% — только при пополнении; на токены наценки нет, всё считается строго по курсу ЦБ. Полный пакет (договор-оферта, счёт на оплату, акт оказанных услуг, счёт-фактура, УПД) приходит через ЭДО — Диадок, СБИС, Контур. Подробнее — на странице «Тарифы» и в гайде «Сравнение цен LLM 2026».
Что дальше
Считать токены — это базовая дисциплина для всех, кто работает с LLM на коммерческой нагрузке. Через 30 минут после прочтения у вас есть три рабочих функции: count_chat_tokens для OpenAI, client.messages.count_tokens для Claude, client.models.count_tokens для Gemini, и шаблон preflight для pre-flight бюджет-гарда. Прокачать дальше: function calling и tool use («Function calling и tool use на Python»), streaming для UI («Streaming LLM-ответов через SSE») и batch API для экономии до 50% («Async-вызовы и Batch API»). Если нужно прикинуть стоимость на вашем трафике или подключить ключ через юрлицо — напишите команде Promptra в Telegram.
«📚 Главный гайд по теме: Лучшая нейросеть 2026: какую LLM выбрать под задачу — связанные материалы и обзор всей категории.»
FAQ
Как точно посчитать токены в ChatGPT до отправки запроса?
Установите пакет tiktoken от OpenAI, выберите encoding для модели (o200k_base для GPT-5.x), и вызовите len(encoding.encode(text)). Это даёт точное число токенов — то же, что считает сама модель. Для chat-формата с ролями нужно учитывать служебные токены (около 4 на сообщение плюс 3 на сам ответ).
Почему одно слово в русском занимает больше токенов, чем в английском?
Tokenizer обучается на корпусе с большой долей английского, поэтому английские слова часто становятся одним токеном целиком, а русские разбиваются на 2–4 подслова. На практике коэффициент плотности — около 1.5–2 символа на токен для русского против 3.5–4 для английского.
Зачем считать токены, если usage возвращается в ответе?
Чтобы знать стоимость до отправки запроса, а не после. Это критично для прогноза цены пользователю, контроля бюджет-лимита в коде и выбора модели на лету по сложности задачи.
Какая формула стоимости запроса в рублях?
Cost = (input_tokens / 1_000_000) × input_price + (output_tokens / 1_000_000) × output_price. Для Claude Opus 4.7 это (in × 350 + out × 1790) / 1_000_000. Полная таблица — в материале «Сравнение цен LLM 2026».
Влияет ли способ форматирования промта на число токенов?
Сильно. Лишние повторы инструкций, длинные few-shot примеры и многословные system messages добавляют токены к каждому запросу. На больших объёмах экономия 100 токенов на запрос превращается в десятки тысяч рублей в месяц.
Что такое `o200k_base` и `cl100k_base`?
Имена encoding-словарей tiktoken. cl100k_base — для GPT-3.5/4. o200k_base — для GPT-5.x, словарь вдвое больше, плотнее упаковывает мультиязычный текст. Получайте encoding через tiktoken.encoding_for_model('gpt-5-5'), чтобы код переживал смену поколений.
Promptra — российский LLM API-агрегатор
Один OpenAI-совместимый endpoint ко всем флагманам: OpenAI (GPT-5.5, GPT-5.4), Anthropic (Claude Opus 4.7, Sonnet 4.6), Google (Gemini 3.1 Pro, 3.5 Flash), DeepSeek V4 Pro, Qwen 3.6 Plus.
Цены 1-в-1 с провайдером по курсу ЦБ — без наценки на токены. Оплата в рублях по договору, полный пакет закрывающих документов (договор-оферта, счёт, акт, счёт-фактура, УПД 5.03 через ЭДО). Без VPN — легальный B2B-сервис в России.
Если статья была полезной — попробуйте Promptra: главная страница · каталог моделей · документация