# Токены в нейросетях: что это, как считать и как экономить

> Что такое токен в нейросети, сколько токенов в слове и странице на русском и английском, как посчитать их до и после запроса и сколько они стоят.
> Author: Roman Belov · Published: 2026-10-17 · Source: https://futurecraft.pro/ru/blog/tokens-explained/

Токен - это фрагмент текста, на которые токенизатор разбивает вход языковой модели: слово, часть слова, символ или знак препинания. Каждому фрагменту соответствует числовой идентификатор из словаря токенизатора, и модель работает с последовательностью этих чисел, а не с буквами. В токенах меряется контекстное окно, в токенах выставляется счёт за API.

На практике из этого определения вырастают три вопроса: сколько токенов займёт мой текст, сколько это стоит и почему счёт не совпадает с оценкой. Ответы зависят от модели. У каждой свой токенизатор, и один и тот же русский абзац на разных моделях превращается в 330 или в 520 токенов.

Статья о том, как устроены токены, сколько их в слове, странице и миллионе, чем отличаются входные, выходные и токены размышлений, как посчитать их до и после запроса и сколько они стоят на 8 ноября 2026 года. Собственный материал статьи: замер автора 2026-11-08 одного и того же текста на русском и английском у восьми токенизаторов (облачные модели через OpenRouter, локальные через Ollama 0.40.14). Остальное взято из документации вендоров, ссылки в тексте.

## Что такое токен простыми словами

Модель не читает буквы и не знает слов. На входе токенизатор превращает строку в список целых чисел, на выходе модель выдаёт следующее число, а токенизатор переводит его обратно в текст. Словарь токенизатора содержит от десятков до сотен тысяч фрагментов: частые слова целиком, редкие слова по частям, отдельные байты для всего остального.

### Как текст делится на токены

Большинство современных токенизаторов построены на BPE (byte pair encoding) и его вариантах. Для нейросетевого перевода подход описали Sennrich, Haddow и Birch в 2015 году ([arXiv:1508.07909](https://arxiv.org/abs/1508.07909)): словарь собирают из самых частых пар символов, поэтому частые слова получают свой токен, а редкие собираются из кусков. Библиотека [tiktoken](https://github.com/openai/tiktoken) от OpenAI работает так же, только на уровне байтов.

Вот как одна фраза режется в двух кодировках OpenAI (вывод tiktoken 0.14.0):

| Текст | o200k_base | cl100k_base |
|---|---|---|
| `Токен это фрагмент текста.` | 9 токенов: `Т` `ок` `ен` ` это` ` ф` `раг` `мент` ` текста` `.` | 11 токенов |
| `A token is a piece of text.` | 8 токенов: `A` ` token` ` is` ` a` ` piece` ` of` ` text` `.` | 8 токенов |
| `нейросети` | 3 токена: `ней` `рос` `ети` | 5 токенов: `н` `ей` `рос` `ет` `и` |
| `tokenization` | 2 токена: `token` `ization` | 2 токена |

Английские слова здесь почти все целые, пробел входит в токен. Русское «Токен» распалось на три части, а в старой кодировке cl100k_base одна буква «г» даже разорвалась между двумя токенами по байтам: кириллица в UTF-8 занимает 2 байта, и BPE иногда режет посередине символа.

Посмотреть разбиение своего текста можно так:

```python
import tiktoken

enc = tiktoken.get_encoding("o200k_base")   # GPT-4o, GPT-5.x
text = "Токен это фрагмент текста."
ids = enc.encode(text)
print(len(ids), [enc.decode([i]) for i in ids])
assert enc.decode(ids) == text
```

### Токен в нейросети и токен в криптовалюте

Это разные вещи с одним названием. В криптовалютах токен означает цифровой актив в блокчейне, а «токенизация активов» означает выпуск таких активов. В языковых моделях токен это единица текста, а токенизация это разбиение текста на эти единицы.

## Сколько токенов в слове, странице и миллионе

Универсального коэффициента нет, но вендоры дают ориентиры. Все они относятся к английскому тексту или к тексту без указания языка.

### Ориентиры вендоров

- **OpenAI (README tiktoken):** в среднем один токен это около 4 байт. Речь о байтах, а не о символах: в английском это примерно 4 символа, а кириллическая буква занимает 2 байта, и символов на те же байты помещается вдвое меньше.
- **Google:** для моделей Gemini токен около 4 символов, 100 токенов около 60-80 английских слов ([документация](https://aistudio.google.com/docs/tokens)).
- **Сбер:** у GigaChat в среднем 3-4 символа в токене, включая пробелы, знаки препинания и спецсимволы ([документация](https://developers.sber.ru/docs/ru/gigachat/guides/counting-tokens)). Отдельного коэффициента для русского нет.
- **Anthropic:** 1M токенов это примерно 555 тысяч слов или 2.5 млн символов Unicode на текущем токенизаторе Claude, введённом с Claude Opus 4.7; модели до него вмещали в 1M токенов около 750 тысяч слов ([models overview](https://platform.claude.com/docs/en/models/overview)). Новый токенизатор, по словам Anthropic, даёт примерно на 30% больше токенов на тот же текст.

### Русский и английский: замер на восьми токенизаторах

Опубликованного отношения «русский к английскому» от вендоров нет. Ближе всего пример в документации Yandex AI Studio: русский текст в 517 символов дал 96 токенов у YandexGPT Pro (5.39 символа на токен), 109 у gpt-oss-120b (4.74) и 128 у DeepSeek V4.1 Flash (4.04). Сами авторы называют цифры иллюстративными, а парного английского текста там нет.

Поэтому автор измерил сам. Три текста по 1.1-1.4 тысячи знаков: технический абзац, бытовой рассказ и Python-код с комментариями. Каждый написан по-русски и переведён на английский нормально, не дословно; в коде переведены только комментарии и строки. Облачные модели считались через OpenRouter как `prompt_tokens(текст) - prompt_tokens("x") + 1`, чтобы вычесть обёртку чата, каждый замер дважды. tiktoken запускался офлайн, Qwen3 и Gemma 4 через Ollama с `raw: true`.

| Токенизатор | Технический текст RU/EN | Бытовой RU/EN | Код RU/EN | RU знаков на токен (техн.) | EN знаков на токен (техн.) |
|---|---|---|---|---|---|
| Claude Haiku 5.5 | 520 / 405 = 1.28 | 505 / 423 = 1.19 | 437 / 396 = 1.10 | 2.58 | 3.57 |
| GPT-6 Luna (нативный счёт) | 343 / 276 = 1.24 | 367 / 298 = 1.23 | 277 / 253 = 1.09 | 3.92 | 5.23 |
| tiktoken o200k_base | 343 / 276 = 1.24 | 367 / 298 = 1.23 | 277 / 253 = 1.09 | 3.92 | 5.23 |
| tiktoken cl100k_base (GPT-4) | 582 / 277 = 2.10 | 610 / 299 = 2.04 | 325 / 252 = 1.29 | 2.31 | 5.21 |
| Gemini 3.8 Flash | 328 / 277 = 1.18 | 353 / 297 = 1.19 | 315 / 297 = 1.06 | 4.10 | 5.21 |
| Gemma 4 e4b (Ollama) | 329 / 278 = 1.18 | 354 / 298 = 1.19 | 316 / 298 = 1.06 | 4.09 | 5.19 |
| DeepSeek V4.1 Flash | 389 / 276 = 1.41 | 433 / 301 = 1.44 | 302 / 266 = 1.14 | 3.46 | 5.23 |
| Qwen3 8B (Ollama) | 439 / 277 = 1.58 | 470 / 299 = 1.57 | 294 / 255 = 1.15 | 3.06 | 5.21 |

*Замер автора, 2026-11-08: облачные модели через OpenRouter, локальные через Ollama 0.40.14, tiktoken 0.14.0.*

Что из этого следует:

- Русский текст того же смысла занял больше токенов, чем английский, у всех восьми токенизаторов. На прозе разница от 1.18x (Gemini, Gemma) до 1.58x (Qwen3), у старого cl100k_base около 2x.
- На коде разница меньше, 1.06-1.15x: код и идентификаторы одинаковые, переводились только комментарии.
- GPT-6 Luna на всех шести текстах дал ровно столько же токенов, сколько tiktoken o200k_base. Это совпадение на шести текстах, а не подтверждение OpenAI, что GPT-6 использует o200k_base: OpenAI кодировку GPT-6 не публикует.
- Gemini 3.8 Flash и Gemma 4 дали почти одинаковые числа (расхождение 0-1 токен). Похоже на общий токенизатор, официально это не проверено.
- Claude Haiku 5.5 в абсолютных числах самый «токеноёмкий» и на английском: 3.57 знака на токен против примерно 5.2 у остальных. Это сходится с документацией Anthropic о новом токенизаторе. Из числа токенов стоимость напрямую не следует, потому что цена за токен у моделей разная.

Текстов три, по одному на жанр, поэтому обобщать до «русский всегда в N раз дороже» нельзя. Для близкого кириллического языка есть исследование украинского ([arXiv:2608.21384](https://arxiv.org/abs/2608.21384), июль 2026): на современных токенизаторах украинский текст занял на 68-121% больше токенов, чем английский, на cl100k на 220%. Но это другой язык и другая методика, в русский эти цифры не переносятся.

### Сколько токенов в странице и что такое «миллион токенов»

Если пересчитать замер на стандартную страницу в 1 800 знаков с пробелами и на миллион токенов, получается такая картина. Диапазон взят между техническим и бытовым текстами, код не учитывался.

| Токенизатор | Токенов на русское слово | Токенов на страницу RU | Русских слов в 1M токенов |
|---|---|---|---|
| Claude Haiku 5.5 | 2.7-2.9 | 700-750 | 350-370 тыс. |
| GPT-6 Luna / o200k_base | 1.9-2.0 | 460-545 | 510-530 тыс. |
| Gemini 3.8 Flash | 1.8-1.9 | 440-525 | 530-555 тыс. |
| DeepSeek V4.1 Flash | 2.1-2.3 | 520-640 | 435-470 тыс. |
| Qwen3 8B | 2.4-2.5 | 590-700 | 400-415 тыс. |
| cl100k_base | 3.2 | 780-905 | 310 тыс. |

Для сравнения: английские тексты замера у Claude Haiku 5.5 дают 1.6-1.7 токена на слово, то есть 600-620 тысяч слов на миллион токенов. Это тот же порядок, что и 555 тысяч слов в оценке Anthropic.

## Входные, выходные и токены размышлений

Счёт за запрос складывается из нескольких видов токенов, и стоят они по-разному.

### Почему выход дороже и куда попадают размышления

Входные токены (промпт, история, файлы) модель обрабатывает за один проход, а выходные генерирует по одному, и провайдеры берут за них дороже. На 8 ноября 2026 года у всех текущих моделей Claude и у линейки GPT-6 выход стоит в 5 раз дороже входа.

Токены размышлений тоже выходные. У Anthropic thinking входит в `output_tokens` и тарифицируется как выход, а сколько из оплаченных выходных токенов ушло на размышления, показывает поле `usage.output_tokens_details.thinking_tokens` ([документация](https://platform.claude.com/docs/en/build-with-claude/extended-thinking)). На Opus 5.5, Sonnet 5.5, Haiku 5.5 и Fable 5.1 работает adaptive thinking, глубину задаёт параметр effort; ручной `budget_tokens` на моделях 4.7 и новее возвращает ошибку 400.

У OpenAI reasoning-токены в ответе не видны, но оплачиваются как выходные и лежат в `usage.output_tokens_details.reasoning_tokens` ([документация](https://developers.openai.com/api/docs/guides/reasoning)). Лимит `max_output_tokens` включает и размышления, и видимый ответ. Если лимит кончился на размышлениях, ответ придёт со статусом `incomplete` и причиной `max_output_tokens`: вход и размышления оплачены, видимого текста нет. У Gemini цена выхода в прайсе тоже включает thinking-токены.

### Изображения, PDF и инструменты

Картинки тоже превращаются в токены. У Claude изображение режется на патчи 28x28 пикселей, каждый патч это один визуальный токен, стоимость `⌈ширина/28⌉ × ⌈высота/28⌉` ([vision](https://platform.claude.com/docs/en/build-with-claude/vision)). Потолок на моделях 4.7 и новее: 4 784 токена (длинная сторона до 2 576 px), на старых 1 568. Примеры из документации для текущих моделей: 1000x1000 это 1 296 токенов, 1920x1080 это 2 691, 3840x2160 после уменьшения 4 784. У Gemini картинка до 384 px по обеим сторонам стоит 258 токенов, крупная режется на плитки 768x768 по 258 токенов каждая.

Инструменты расходуют вход даже тогда, когда модель их не вызывает. Названия, описания и JSON-схемы из параметра `tools` входят во входные токены. Кроме того, Anthropic добавляет системный промпт для tool use: 286 токенов у Opus 5.5, Sonnet 5.5 и Haiku 5.5 в режиме `auto` ([pricing](https://platform.claude.com/docs/en/about-claude/pricing)). В примере из документации token counting запрос с одним инструментом `get_weather` и короткой фразой пользователя посчитан в 403 входных токена.

PDF у Anthropic считается тем же `count_tokens`, но только если документ передан в base64: источники `url` и `file` эндпоинт подсчёта не принимает.

### Кэшированные токены

Если начало промпта повторяется между запросами, провайдеры кэшируют его и берут за повторное чтение меньше. У Claude чтение из кэша стоит 0.1x от цены входа, у Opus 5.5 и Sonnet 5.5 0.05x, у Fable 5.1 0.025x; запись в 5-минутный кэш 1.25x, в часовой 2x. В `usage` Claude вход делится на три поля: `cache_read_input_tokens` (прочитано из кэша), `cache_creation_input_tokens` (записано в кэш) и `input_tokens` (только то, что после последней точки кэширования). Весь вход это сумма трёх полей. У OpenAI и OpenRouter закэшированная часть лежит в `prompt_tokens_details.cached_tokens`, у GigaChat в `precached_prompt_tokens`.

## Как посчитать токены

Считать можно до запроса, чтобы оценить цену и влезть в окно, и после, чтобы узнать, сколько списали. Совпадает со счётом только второе.

### До запроса: tiktoken, count_tokens, Gemini, GigaChat, Yandex

| Способ | Для каких моделей | Стоимость | Что учитывает |
|---|---|---|---|
| `tiktoken` (o200k_base) | GPT-4o, GPT-5.x; для GPT-6 только оценка | Бесплатно, офлайн | Только текст |
| Anthropic `POST /v1/messages/count_tokens` | Все активные модели Claude | Бесплатно, отдельный RPM-лимит | system, messages, tools, картинки и PDF в base64 |
| Gemini `client.models.count_tokens` | Модели Gemini | В статье не проверялась | contents |
| GigaChat `POST /v1/tokens/count` | Модели GigaChat | Нужен ключ | Только текст сообщения |
| Yandex `POST .../foundationModels/v1/tokenize` | Модели Yandex AI Studio | Бесплатно, нужен IAM-токен | Текст, ответ со списком токенов |

С tiktoken есть подвох: в таблице моделей библиотеки (ветка main на 8 ноября 2026) нет записей для `gpt-6`. Префиксы `gpt-5`, `gpt-4.1`, `gpt-4o`, `o1-`, `o3-` ведут на `o200k_base`, а `tiktoken.encoding_for_model("gpt-6-luna")` упадёт с `KeyError`. Кодировку для GPT-6 указывают явно через `get_encoding("o200k_base")` и считают результат оценкой.

У Anthropic подсчёт сделан отдельным эндпоинтом, который принимает то же тело, что и Messages API ([token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting)). Он бесплатный, лимиты 5 000, 10 000 и 20 000 RPM на тарифах Start, Build и Scale не пересекаются с лимитами генерации. Как вообще устроены вызовы Claude API, разобрано в [гайде по Claude API](https://futurecraft.pro/ru/blog/claude-api-developer-guide/).

```python
import anthropic

client = anthropic.Anthropic()
r = client.messages.count_tokens(
    model="claude-opus-5-5",
    system="Ты технический редактор.",
    messages=[{"role": "user", "content": "Что такое токен?"}],
)
print(r.input_tokens)   # ответ API: {"input_tokens": N}
```

Токены считаются под токенизатор той модели, которая указана в `model`. Server tools (web search, code execution и другие, кроме advisor tool), MCP connector и картинки по `url` эндпоинт не принимает. Кэш при подсчёте не применяется.

Для Gemini подсчёт делается через SDK google-genai:

```python
from google import genai

client = genai.Client()
total = client.models.count_tokens(model="gemini-3.8-flash", contents="Что такое токен?")
print(total.total_tokens)
```

### После запроса: поле usage

Каждый ответ API несёт фактический расход. Именно эти числа попадают в счёт.

| API | Вход | Выход | Размышления | Кэш |
|---|---|---|---|---|
| Anthropic Messages | `input_tokens` | `output_tokens` | `output_tokens_details.thinking_tokens` | `cache_creation_input_tokens`, `cache_read_input_tokens` |
| OpenAI / OpenRouter Chat Completions | `prompt_tokens` | `completion_tokens` | `completion_tokens_details.reasoning_tokens` | `prompt_tokens_details.cached_tokens` |
| OpenAI Responses API | `input_tokens` | `output_tokens` | `output_tokens_details.reasoning_tokens` | `input_tokens_details.cached_tokens` |
| GigaChat | `prompt_tokens` | `completion_tokens` | - | `precached_prompt_tokens` |
| Ollama `/api/generate`, `/api/chat` | `prompt_eval_count` | `eval_count` | - | - |

Удобнее всего сравнивать модели через OpenRouter: usage возвращается в каждом ответе автоматически (параметры `usage.include` и `stream_options.include_usage` устарели и ничего не делают), токены считаются нативным токенизатором модели, а поле `cost` сразу показывает списанную сумму в долларах ([usage accounting](https://openrouter.ai/docs/use-cases/usage-accounting)). Так сделан замер выше. Как подключить OpenRouter, разобрано в [гайде по OpenRouter](https://futurecraft.pro/ru/blog/openrouter-guide/).

```python
import os
from openai import OpenAI

client = OpenAI(base_url="https://openrouter.ai/api/v1",
                api_key=os.environ["OPENROUTER_API_KEY"])
resp = client.chat.completions.create(
    model="openai/gpt-6-luna", max_tokens=16,
    messages=[{"role": "user", "content": "Что такое токен?"}],
)
print(resp.usage.model_dump())   # prompt_tokens, completion_tokens, cost, ...
```

Локальная Ollama возвращает счётчики в финальном ответе. Без `raw: true` Ollama оборачивает промпт в шаблон чата модели, и служебные токены шаблона тоже попадают в `prompt_eval_count`. Чтобы посчитать чистый текст, в замере использовался `raw: true` и вычитался счёт однословного промпта. Остальные эндпоинты и параметры описаны в [гайде по Ollama](https://futurecraft.pro/ru/blog/ollama-guide/).

```bash
curl -s http://localhost:11434/api/generate -d '{
  "model": "qwen3:8b", "prompt": "Что такое токен?",
  "raw": true, "stream": false, "options": {"num_predict": 1}
}' | jq '{prompt_eval_count, eval_count}'
```

### Почему оценки расходятся

Расхождения между оценкой и счётом обычно объясняются одной из четырёх причин.

1. **Разные токенизаторы.** Один и тот же технический абзац на русском занял 328 токенов у Gemini 3.8 Flash и 520 у Claude Haiku 5.5. Счёт tiktoken нельзя переносить на Claude или Qwen.
2. **Смена поколения модели.** По Anthropic, токенизатор Claude 4.7 и новее даёт примерно на 30% больше токенов на тот же текст, чем Sonnet 4.6 и старее. Счёт, снятый на старой модели, при миграции пересчитывают.
3. **Обёртка запроса.** Шаблон чата, системный промпт для tool use и служебные токены роли добавляются к вашему тексту. Поэтому в замере вычитался счёт запроса из одного символа.
4. **Оценка остаётся оценкой.** Anthropic прямо пишет, что `count_tokens` может отличаться от фактического входа на небольшую величину, а токены, добавленные для системных оптимизаций, не тарифицируются.

## Сколько стоят токены

Цены публикуются за миллион токенов (MTok) и меняются, поэтому в таблице снимок на конкретную дату.

### Цены за 1M токенов на 8 ноября 2026

| Модель | Вход | Выход | Чтение из кэша |
|---|---|---|---|
| Claude Fable 5.1 | $10 | $50 | $0.25 |
| Claude Opus 5.5 | $4 | $20 | $0.20 |
| Claude Sonnet 5.5 | $2 | $10 | $0.10 |
| Claude Haiku 5.5 (промпт до 100K) | $0.10 | $0.50 | $0.01 |
| Claude Haiku 5.5 (промпт больше 100K) | $0.50 | $2.50 | $0.05 |
| GPT-6 Astra | $10 | $50 | $1 |
| GPT-6.1 Sol | $2 | $10 | $0.10 |
| GPT-6.1 Terra | $1 | $5 | $0.05 |
| GPT-6 Luna | $0.10 | $0.50 | $0.01 |
| Gemini 3.8 Flash | $0.75 | $3.75 | - |
| Gemini 3.5 Flash-Lite | $0.30 | $2.50 | - |
| DeepSeek V4.1 Flash | $0.15 / $0.30 | $0.60 / $1.20 | $0.003 / $0.006 |
| DeepSeek V4 Pro | $0.66 / $1.32 | $1.98 / $3.96 | $0.022 / $0.044 |

*Источники: [Anthropic](https://platform.claude.com/docs/en/about-claude/pricing), [OpenAI](https://developers.openai.com/api/docs/pricing), [Google](https://aistudio.google.com/docs/pricing), [DeepSeek](https://api-docs.deepseek.com/quick_start/pricing/), снимок 2026-11-08.*

Оговорки к таблице:

- У DeepSeek первая цифра вне пика, вторая в пик: 01:00-04:00 и 06:00-10:00 UTC по будням, кроме праздников КНР.
- Gemini 3.8 Flash с 1 января 2027 года подорожает до $1.50 за вход и $7.50 за выход.
- Haiku 5.5 тарифицируется по длине промпта каждого запроса: если вход вместе с кэшем больше 100 000 токенов, весь запрос идёт по старшей цене.
- Batch API у Anthropic, OpenAI и Google стоит вдвое дешевле стандартного режима.

Как выбирать между Opus и Sonnet по цене и задачам, разобрано в [сравнении Claude Opus и Sonnet](https://futurecraft.pro/ru/blog/claude-opus-vs-sonnet/).

### Сколько стоит страница русского текста

Расчёт на входе: страница в 1 800 знаков, число токенов из замера (диапазон между техническим и бытовым текстом), цена из таблицы выше. Для наглядности посчитана тысяча страниц, каждая отдельным запросом.

| Модель | Токенов на страницу | 1 000 страниц на входе |
|---|---|---|
| Claude Haiku 5.5 | 700-750 | $0.07-0.075 |
| Claude Sonnet 5.5 | 700-750 * | $1.40-1.50 |
| Claude Opus 5.5 | 700-750 * | $2.80-3.00 |
| Claude Fable 5.1 | 700-750 * | $7.00-7.50 |
| GPT-6 Luna | 460-545 | $0.046-0.055 |
| Gemini 3.8 Flash | 440-525 | $0.33-0.39 |
| DeepSeek V4.1 Flash (вне пика) | 520-640 | $0.08-0.10 |

\* Замер делался только на Haiku 5.5. По документации Anthropic, все модели Claude 4.7 и новее, включая Opus 5.5, Sonnet 5.5 и Fable 5.1, работают на токенизаторе, введённом с Claude Opus 4.7, поэтому число токенов взято из замера Haiku. Это расчёт, а не измерение.

Видно, что у Claude Haiku 5.5 и GPT-6 Luna одинаковая цена за токен ($0.10), но на русском тексте Haiku тратит примерно в 1.4-1.5 раза больше токенов. Сравнивать модели по цене за миллион без учёта токенизатора некорректно. И это только вход: ответ того же объёма по пятикратной цене выхода обойдётся в 5 раз дороже самого входа.

### Цены в рублях: GigaChat и YandexGPT

GigaChat продаёт токены пакетами, поэтому цена за миллион получается делением цены пакета на объём ([тарифы, обновлены 7 октября 2026](https://developers.sber.ru/docs/ru/gigachat/tariffs/individual-tariffs)). Пакеты действуют месяц, цены с НДС.

| Модель | Пакет | Цена пакета | За 1M токенов (расчёт) |
|---|---|---|---|
| GigaChat 2 Lite | 20 млн токенов | 1 300 ₽ | 65 ₽ |
| GigaChat 2 Pro | 3 млн токенов | 1 500 ₽ | 500 ₽ |
| GigaChat 2 Max | 3 млн токенов | 1 950 ₽ | 650 ₽ |
| Эмбеддинги | 50 млн токенов | 700 ₽ | 14 ₽ |

Для физлиц у GigaChat есть бесплатный лимит 365 млн токенов на 12 месяцев: 250 млн для Lite, 40 млн для Pro, 25 млн для Max и 50 млн для Ultra. Для новых клиентов с 1 сентября 2026 года каталог моделей, цены и условия публикуются на платформе cloud.ru и могут отличаться.

Yandex AI Studio публикует цены за 1 000 токенов ([тарифы](https://aistudio.yandex.ru/docs/ru/ai-studio/pricing)). В синхронном режиме YandexGPT Pro 5.1 стоит 0.8 ₽ за 1 000 токенов на вход и на выход (800 ₽ за миллион), YandexGPT Lite 0.2 ₽ (200 ₽ за миллион). Асинхронный режим примерно вдвое дешевле: 0.41 ₽ и 0.1 ₽.

Токенизаторы GigaChat и YandexGPT в замере не участвовали, поэтому страницу текста можно оценить только по документации. По оценке Сбера в 3-4 символа на токен страница в 1 800 знаков займёт 450-600 токенов, а 1 000 таких страниц на GigaChat 2 Lite обойдутся примерно в 29-39 ₽. По примеру из документации Yandex (5.39 символа на токен у YandexGPT Pro) страница это около 334 токенов, а 1 000 страниц на YandexGPT Pro 5.1 около 267 ₽. Курс рубля к доллару здесь не фиксируется, поэтому рублёвые и долларовые цены сравнивают по курсу на дату расчёта.

Эмбеддинги тоже тарифицируются по токенам. Что это такое и как они работают, объясняет статья [про эмбеддинги](https://futurecraft.pro/ru/blog/embeddings-explained/).

## Лимиты подписок: сколько токенов в Claude Pro и ChatGPT Plus

Для подписок вопрос «сколько токенов» не имеет точного ответа: вендоры не публикуют лимит в токенах.

Anthropic описывает лимиты Claude через сессии и недели ([справка](https://support.claude.com/en/articles/11647753-how-do-usage-and-length-limits-work)). Сессия длится пять часов: отсчёт идёт с первого сообщения, и через пять часов лимит сбрасывается целиком. Поверх действуют недельные лимиты по всем моделям, а на некоторых планах ещё отдельный недельный лимит для Fable. Расход зависит от длины и сложности беседы, выбранной модели, уровня effort и используемых функций. Разные планы (Pro, Max, Ultra, Team) дают разный объём, но в токенах он не выражен.

Для ChatGPT Plus актуальные лимиты публикует справка OpenAI. Чисел здесь нет: условия подписок меняются, а цифры «в токенах» из сторонних обзоров вендор не подтверждает. Если нужен предсказуемый расход в токенах, это аргумент за API, где каждый ответ приходит с полем `usage`.

## Как экономить токены

Подробная экономика LLM-задачи (ledger расходов, стоимость успешной задачи, routing, семантический кэш) разобрана в статье [о снижении стоимости AI](https://futurecraft.pro/ru/blog/ai-cost-optimization/). Короткий список того, что сильнее всего влияет на число токенов:

1. **Ограничить вывод.** Выход в 5 раз дороже входа, поэтому `max_tokens` (Anthropic) или `max_output_tokens` (OpenAI) и просьба отвечать коротко экономят больше, чем ужимание промпта. Структурированный ответ по JSON-схеме обычно короче прозы.
2. **Следить за размышлениями.** На reasoning-моделях thinking идёт по цене выхода. На Claude глубину задаёт effort: по документации, при низком effort модель может вовсе не размышлять над простым запросом.
3. **Кэшировать неизменный префикс.** Системный промпт и справочные документы в начале запроса, переменная часть в конце. Чтение из кэша у Opus 5.5 и Sonnet 5.5 стоит 5% от цены входа.
4. **Не пересылать лишнее.** Убрать дубли контекста, старую историю сжимать в резюме, отправлять найденные фрагменты документов, а не файлы целиком. Об управлении контекстом подробнее в [гайде по context engineering](https://futurecraft.pro/ru/blog/context-engineering-guide/).
5. **Выбирать модель по задаче.** Классификацию и извлечение полей отдают Haiku 5.5 или GPT-6 Luna, сложное рассуждение Opus 5.5 или GPT-6 Astra. Разница в цене входа 40-100 раз.
6. **Отправлять некритичное в Batch API.** Скидка 50% у Anthropic, OpenAI и Google.
7. **Проверять по usage.** Каждую оптимизацию сверяют с полем `usage` до и после, а не с числом слов в промпте.

## Частые ошибки при подсчёте токенов

- **Считать токен словом.** Русское слово в замере занимает от 1.8 до 2.9 токена в зависимости от модели. Оценка «1 000 слов = 1 000 токенов» занижает объём в 1.8-2.9 раза.
- **Применять «4 символа на токен» к русскому.** Это ориентир для английского. На русской прозе в замере получилось от 2.4 (Claude Haiku 5.5) до 4.1 (Gemini 3.8 Flash) символа на токен.
- **Забыть про историю и инструменты.** В чате каждый ход пересылает всю историю. В замере автора на Haiku 5.5 вход десятого хода оказался в 57 раз больше первого: 1 134 токена против 20. Подробнее эффект разобран в статье про контекстное окно. Схемы инструментов тоже входят во вход при каждом запросе.
- **Переносить счёт между моделями.** Число токенов из tiktoken не подходит для Claude, а счёт со старых Claude не подходит для моделей 4.7 и новее.
- **Брать `encoding_for_model` для GPT-6.** В tiktoken нет маппинга для `gpt-6`, вызов упадёт с `KeyError`. Кодировку указывают явно и считают результат оценкой.
- **Ставить слишком маленький лимит вывода reasoning-модели.** У OpenAI размышления входят в `max_output_tokens`; если лимит кончится на них, ответ придёт со статусом `incomplete` без видимого текста, а вход и размышления будут оплачены.

## С чего начать

1. Взять 2-3 типичных текста своего продукта и посчитать их токенизатором той модели, которой пользуетесь: `count_tokens` для Claude, tiktoken `o200k_base` для GPT как оценку.
2. Если продукт русскоязычный, посчитать те же тексты на английском и получить своё отношение RU/EN вместо чужих коэффициентов.
3. Логировать `usage` каждого ответа: вход, выход, размышления и кэш отдельно.
4. Умножить токены на цены из таблицы провайдера с датой снимка и сравнить модели по стоимости задачи, а не по цене за миллион.
5. Начать экономию с лимита вывода и кэша префикса, проверяя эффект по `usage`.

## Первоисточники

- [Anthropic: Token counting](https://platform.claude.com/docs/en/build-with-claude/token-counting)
- [Anthropic: Pricing](https://platform.claude.com/docs/en/about-claude/pricing)
- [Anthropic: Models overview](https://platform.claude.com/docs/en/models/overview)
- [Anthropic: Vision](https://platform.claude.com/docs/en/build-with-claude/vision)
- [Anthropic: Extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking)
- [Anthropic: How do usage and length limits work](https://support.claude.com/en/articles/11647753-how-do-usage-and-length-limits-work)
- [OpenAI: Pricing](https://developers.openai.com/api/docs/pricing)
- [OpenAI: Reasoning models](https://developers.openai.com/api/docs/guides/reasoning)
- [openai/tiktoken](https://github.com/openai/tiktoken)
- [Google: Tokens](https://aistudio.google.com/docs/tokens) и [Pricing](https://aistudio.google.com/docs/pricing)
- [DeepSeek: Pricing](https://api-docs.deepseek.com/quick_start/pricing/)
- [OpenRouter: Usage accounting](https://openrouter.ai/docs/use-cases/usage-accounting)
- [Ollama: API](https://github.com/ollama/ollama/blob/main/docs/api.md)
- [GigaChat: подсчёт токенов](https://developers.sber.ru/docs/ru/gigachat/guides/counting-tokens) и [тарифы для физлиц](https://developers.sber.ru/docs/ru/gigachat/tariffs/individual-tariffs)
- [Yandex AI Studio: токены](https://aistudio.yandex.ru/docs/ru/ai-studio/concepts/generation/tokens) и [тарифы](https://aistudio.yandex.ru/docs/ru/ai-studio/pricing)
- [Sennrich, Haddow, Birch. Neural Machine Translation of Rare Words with Subword Units (2015)](https://arxiv.org/abs/1508.07909)
- [Dobrovolskyi. Beyond Two Bytes per Letter: Tokenization Overhead in Cyrillic AI Systems (2026)](https://arxiv.org/abs/2608.21384)
