Перейти к основному содержимому

Токенизация

Модель не читает текст как человек — она работает с токенами. Понимание токенизации напрямую влияет на стоимость, качество и поведение модели.

Что такое токен

Токен — минимальная единица текста, с которой работает модель. Это не всегда слово — чаще всего часть слова, символ или пробел.

"Hello, world!" → ["Hello", ",", " world", "!"] → 4 токена
"привет" → ["пр", "ивет"] → 2 токена
"tokenization" → ["token", "ization"] → 2 токена
"2024" → ["2", "0", "2", "4"] → 4 токена

BPE — как строится словарь токенов

Большинство LLM используют Byte Pair Encoding (BPE):

  1. Начинаем с отдельных символов как базовых токенов
  2. Считаем самые частые пары символов в корпусе
  3. Объединяем самую частую пару в новый токен
  4. Повторяем до нужного размера словаря (обычно 50K–100K токенов)

Результат: частые слова → 1 токен. Редкие слова → много токенов.

"the" → 1 токен (очень частое)
"cat" → 1 токен (частое)
"concatenation" → ["con", "caten", "ation"] → 3 токена
"магнитопласт" → ["маг", "нито", "пласт"] → 3 токена

Практические следствия

Русский текст дороже английского

Кириллица занимает больше байт и хуже представлена в обучающих данных → больше токенов на тот же смысл.

ФразаEN токеныRU токены
"Hello, how are you?"6
"Привет, как дела?"8
Примерный коэффициент1x1.5–2x

Практика: если пишешь промт на русском и ответ нужен на русском — стоимость вырастает примерно в 1.5–2 раза по сравнению с английским.

Числа токенизируются посимвольно

"42" → ["4", "2"] → 2 токена
"3.14159" → ["3", ".", "1", "4", "1", "5", "9"] → 7 токенов
"$1,000" → ["$", "1", ",", "0", "0", "0"] → 6 токенов

Из-за этого модели плохо считают "в уме" — каждая цифра обрабатывается отдельно.

Пробелы — часть токена

"cat" ≠ " cat" — это разные токены

Пробел перед словом обычно включается в токен следующего слова. Это важно при работе с форматированием.

Специальные символы разбиваются

"<|endoftext|>" → ["<", "|", "end", "of", "text", "|", ">"]

Специальные символы в промтах могут неожиданно разбиваться на много токенов.

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

Быстрая оценка

~1 токен = 4 символа (английский)
~1 токен = 2–3 символа (русский)
1 000 токенов ≈ 750 слов (EN)
1 страница A4 ≈ 500–700 токенов (EN)

Точный подсчёт

OpenAI: библиотека tiktoken

import tiktoken

enc = tiktoken.encoding_for_model("gpt-4o")
tokens = enc.encode("Hello, world!")
print(len(tokens)) # 4

Anthropic: токенизатор похожий на cl100k, точный подсчёт через API:

client.messages.count_tokens(
model="claude-sonnet-4-5",
messages=[{"role": "user", "content": "Hello"}]
)

Онлайн: platform.openai.com/tokenizer

Стоимость токенов (ориентиры, 2025)

МодельInput ($/1M)Output ($/1M)
GPT-4o$2.50$10.00
GPT-4o mini$0.15$0.60
Claude Sonnet 4.5$3.00$15.00
Claude Haiku 4.5$0.25$1.25
Gemini 1.5 Pro$1.25$5.00

Output токены дороже input — модель генерирует их последовательно, это затратнее.

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

ПриёмЭффект
Короткий системный промтЭкономия на каждом запросе
Сжатый контекст историиОбрезать старые сообщения
Убрать повторения в промте-20–30% токенов
Prompt caching (Anthropic/OpenAI)Повторные части промта дешевле
Структурированный выводНет "рассуждений вслух" в ответе
Английский промт + русский ответБаланс качества и стоимости

Токены и лимиты контекста

Лимит context window считается в токенах и делится между:

[System prompt] + [История] + [Новый запрос] + [Ответ модели]

Тоже занимает место!

Если модель "заполнит" контекст — старые сообщения будут обрезаны или запрос завершится ошибкой.

Резюме

ВопросОтвет
Что такое токен?Часть слова, ≈4 символа EN
Русский vs английский?RU в 1.5–2x дороже по токенам
Как посчитать?tiktoken или онлайн-счётчик
Числа в токенах?Посимвольно, отсюда плохой счёт у LLM
Как экономить?Краткий промт, кэширование, history pruning