Когда вы работаете с любой языковой моделью через API, счётчик крутится не в словах и не в символах, а в токенах. Именно за токены выставляют счёт OpenAI, Anthropic и Google, именно в токенах измеряют лимиты запросов и размер контекстного окна. Понимать, что такое токен, сколько их в вашем тексте и как их посчитать заранее, — это прямая экономия денег и защита от неожиданных ошибок 429. В этой заметке разберём, как устроен подсчёт, где утекает бюджет и какие приёмы реально снижают расходы.
Что такое токен на самом деле
Токен — это не буква и не слово, а фрагмент текста, на которые модель разбивает ввод перед обработкой. За разбиение отвечает токенизатор — алгоритм на основе BPE (byte-pair encoding, «кодирование пар байтов»). Он берёт частые сочетания символов и превращает их в отдельные единицы словаря. Частые английские слова вроде the или and — это ровно один токен. Редкое или длинное слово разбивается на куски: например, tokenization может стать token + ization.
Практическое правило для английского текста: примерно 4 символа на токен, или около 0,75 слова. То есть 1000 английских слов — это грубо 1300–1400 токенов. Это удобная прикидка «на глаз», но для счёта денег её недостаточно: точное число зависит от конкретного токенизатора модели.
Почему русский текст «дороже» английского
Здесь кроется ловушка, о которой часто забывают. Токенизаторы обучены в основном на англоязычных данных, поэтому кириллица дробится куда мельче. Одно русское слово нередко превращается в два, три, а то и четыре токена, тогда как его английский аналог укладывается в один-два. На практике русский текст расходует в 2–3 раза больше токенов, чем англоязычный текст того же смысла.
Из этого следуют два вывода. Во-первых, оценивая бюджет на русскоязычный проект, закладывайте кратно больше токенов, чем подсказывает интуиция из англоязычных примеров. Во-вторых, длинные системные инструкции и примеры лучше держать компактными: каждый лишний абзац на русском «весит» ощутимо дороже.
За что именно вы платите
Счёт складывается из двух частей, и тарифы у них разные. Входные токены (input) — это всё, что вы отправляете модели: системная инструкция, описания инструментов, история диалога, приложенные документы и сам вопрос. Выходные токены (output) — это то, что модель сгенерировала в ответ. Выход почти всегда дороже входа в несколько раз.
Ключевой момент, на котором теряют деньги: при каждом новом запросе в диалоге вся предыдущая переписка отправляется заново как входные токены. Длинный разговор на двадцать реплик — это двадцатый запрос, который тащит за собой все девятнадцать предыдущих. История не хранится на стороне модели «бесплатно»; вы оплачиваете её пересылку каждый раз.
Для ориентира — актуальные тарифы на август 2026 года (за миллион токенов, вход / выход):
- Claude: Opus 4.8 — $5 / $25, Sonnet — $3 / $15, Haiku 4.5 — $1 / $5.
- OpenAI: GPT-5.6 Sol — $5 / $30, Terra — $2 / $12, Luna — $0,20 / $1,20.
- Gemini: 3.6 Flash — $1,50 / $7,50, 2.5 Flash — $0,30 / $2,50, 3.1 Pro — $2 / $12 (до 200K токенов в промпте).
Разброс между «тяжёлой» и «лёгкой» моделью — десятки раз. Это первое, на что стоит смотреть при оптимизации. Подробное сравнение тарифов и лимитов трёх платформ есть в отдельном разборе: сравнение API Gemini, Claude и OpenAI.
Как посчитать токены заранее
Гадать не нужно — все провайдеры дают инструменты для точного подсчёта до отправки запроса. Это позволяет заранее оценить стоимость и не упереться в лимит.
У OpenAI есть библиотека tiktoken для Python: вы загружаете кодировщик нужной модели и получаете точное число токенов для любой строки локально, без обращения к API. У Anthropic есть эндпоинт count_tokens, который считает токены для сообщений Claude с учётом системной инструкции и инструментов. У Google — метод countTokens в SDK Gemini. Есть и веб-инструменты: официальный Tokenizer от OpenAI показывает разбиение прямо в браузере — удобно, чтобы наглядно увидеть, как дробится ваш русский текст.
Практика простая: перед тем как гонять большой промпт в цикле по тысячам записей, прогоните один экземпляр через счётчик, умножьте на объём и на тариф. Так вы увидите итоговую сумму до того, как она появится в счёте.
Лимиты: RPM, TPM и ошибка 429
Кроме денег токены упираются в лимиты скорости. Провайдеры ограничивают не только число запросов в минуту (RPM, requests per minute), но и число токенов в минуту (TPM, tokens per minute). Anthropic идёт дальше и делит лимит на три измерения: запросы (RPM), входные токены в минуту (ITPM) и отдельно выходные (OTPM). Часто именно выход становится «узким горлышком».
Когда вы превышаете любой из порогов, API возвращает ошибку HTTP 429 Too Many Requests. Коварство в том, что один крупный запрос способен «съесть» половину минутного бюджета TPM за один вызов — и следующий запрос отвергается, даже если по числу запросов у вас есть запас. Лимиты растут по тирам (уровням): чем больше накопленная сумма оплат, тем выше пороги.
Два практических вывода. Считайте токены до отправки, чтобы не влететь в TPM большим промптом. И обрабатывайте 429 корректно — через повтор с экспоненциальной задержкой и джиттером (случайной добавкой ко времени ожидания), а не через немедленный повторный запрос, который только усугубит ситуацию.
Семь способов сократить расход
1. Берите модель под задачу
Не всё нужно решать флагманом. Классификация письма, извлечение полей, короткое резюме отлично работают на Haiku, Luna или Flash — они в десятки раз дешевле. Тяжёлую модель оставьте для сложного рассуждения и кода. Как выбирать под тип задачи, разобрано в заметке сравнение нейросетей: какую выбрать в 2026.
2. Чистите контекст
Не отправляйте всю историю диалога, если она не нужна. Держите только релевантные последние реплики, а старую переписку сворачивайте в краткое резюме. Урезайте системную инструкцию до сути — особенно на русском, где каждый абзац дорогой.
3. Включите кэширование промптов
Если у вас большой неизменный «префикс» — системная инструкция, описания инструментов, справочный документ — его можно закэшировать. Повторное чтение из кэша стоит около 10% от обычной цены входа. На повторяющихся запросах экономия достигает 50–90%. Механику по всем трём провайдерам мы разбирали в заметке кэширование промптов: как снизить расходы на API.
4. Используйте Batch API для несрочного
Если ответ не нужен сию секунду — массовая генерация описаний, разметка датасета, ночная обработка — отправляйте задания через пакетный (batch) режим. Он даёт скидку 50% на вход и выход у всех трёх провайдеров.
5. Ограничивайте длину ответа
Выход дороже входа, поэтому длина ответа бьёт по кошельку сильнее. Ставьте параметр max_tokens, просите модель отвечать кратко и по делу, а где нужен машинный результат — используйте структурированный вывод в JSON вместо развёрнутого текста с «водой».
6. Применяйте RAG вместо огромного контекста
Не заталкивайте всю базу знаний в каждый запрос. Подход RAG (retrieval-augmented generation) подтягивает только релевантные фрагменты под конкретный вопрос — это резко сокращает входные токены при том же качестве ответа.
7. Считайте и следите
Подключите подсчёт токенов и логируйте расход по эндпоинтам и типам задач. Когда видно, где именно утекает бюджет, оптимизация становится точечной, а не наугад.
Коротко
Токен — это фрагмент текста, а не слово; русский текст расходует их в 2–3 раза больше английского. Платите вы и за вход, и за выход, причём история диалога пересылается заново каждый запрос. Считайте токены заранее встроенными инструментами, следите за лимитами RPM и TPM, чтобы не ловить 429. А чтобы платить меньше — берите модель по размеру задачи, чистите контекст, включайте кэширование и Batch API, ограничивайте длину ответа и подтягивайте контекст через RAG. Эти приёмы в сумме легко сокращают счёт в разы.
Частые вопросы
Для английского текста — примерно 4 символа, или около 0,75 слова. Русский текст токенизатор дробит мельче, поэтому он расходует в 2–3 раза больше токенов на тот же смысл.
За оба, но выходные токены обычно в несколько раз дороже входных. При этом вся история диалога отправляется заново как входные токены при каждом новом запросе.
Превышен лимит скорости — по числу запросов в минуту (RPM) или по токенам в минуту (TPM). Помогает подсчёт токенов заранее и повтор с экспоненциальной задержкой и джиттером.
Взять модель попроще под простую задачу, урезать контекст, включить кэширование промптов и пакетный (batch) режим со скидкой 50% на вход и выход.
Источники
- 1.Anthropic — Pricing (Claude Platform Docs)https://platform.claude.com/docs/en/about-claude/pricing
- 2.Anthropic — Rate limits (Claude Platform Docs)https://platform.claude.com/docs/en/api/rate-limits
- 3.Gemini Developer API — Pricinghttps://ai.google.dev/gemini-api/docs/pricing
- 4.OpenAI — tiktoken (токенизатор)https://github.com/openai/tiktoken



