Токенизация LLM: как считаются токены, оптимизация промптов, экономия | AiManual
AiManual Logo Ai / Manual.
19 Янв 2026 Гайд

Токенизация в LLM: почему ваш промпт стоит дороже, чем кажется

Полный гайд по токенизации в LLM: от BPE-алгоритмов до KV-cache. Узнайте, почему токены дорогие, как работает prefill этап и как сократить расходы на 30-50%.

Токен ≠ слово. Вот почему это важно

Вы платите за токены. Не за символы, не за слова, не за мегабайты. За токены. И счет приходит совершенно не такой, как вы ожидаете. "Привет, как дела?" — это не 3 слова, а 5 токенов. "Supercalifragilisticexpialidocious" — одно слово, но 7 токенов. Математика ломается.

Токен — это не лингвистическая единица. Это единица вычислений. Модель не думает словами — она думает токенами. И каждый токен требует GPU-памяти, времени инференса и ваших денег.

BPE: алгоритм, который режет ваш текст на куски

Byte Pair Encoding. Звучит скучно, но это сердце токенизации. Алгоритм, который GPT-2 представил миру в 2019 году, а теперь его используют все — от OpenAI до локальных Llama.

Как это работает? Представьте, что у вас есть текст "hello world hello world". BPE сначала разбивает его на символы: h e l l o _ w o r l d. Потом ищет самые частые пары. "l" и "l" встречаются часто? Объединяем в "ll". "ll" и "o"? Объединяем в "llo". Так растет словарь токенов.

# Пример BPE в упрощенном виде
text = "hello world hello world"
# Шаг 1: разбиваем на символы
tokens = ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
# Шаг 2: находим частую пару 'l'+'l' -> 'll'
tokens = ['h', 'e', 'll', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
# Шаг 3: 'll'+'o' -> 'llo'
tokens = ['h', 'e', 'llo', ' ', 'w', 'o', 'r', 'l', 'd']
# И так далее, пока не получим оптимальный набор

В реальности словарь GPT-4 содержит около 100 тысяч токенов. И да, там есть токены для " ChatGPT" (с пробелом в начале), "\n\n" и даже " привет" (тоже с пробелом).

Пробелы в начале токенов — это боль. "привет" и " привет" — разные токены. Если ваш промпт начинается с пробела, вы тратите токен на этот пробел. Всегда проверяйте через OpenAI Tokenizer.

Prefill и KV-cache: два этапа, которые съедают ваш бюджет

Когда вы отправляете промпт в API, происходит магия в два этапа. И оба стоят денег.

Prefill этап: тяжелая артиллерия

Модель получает ваш промпт — все токены сразу. Она должна вычислить внимания между каждым токеном и каждым другим токеном. Это O(n²) операций. 1000 токенов? Миллион операций внимания.

Prefill — это самое дорогое. Он требует полного прохода через всю модель для каждого токена контекста. Именно поэтому длинные промпты так дороги: каждый дополнительный токен увеличивает вычисления квадратично.

KV-cache: кэш, который ускоряет генерацию

После prefill модель начинает генерировать ответ. Токен за токеном. И здесь включается KV-cache — кэш ключей и значений для уже обработанных токенов.

Представьте: вы уже вычислили, как токен "при" относится к токену "вет". Зачем считать заново? KV-cache сохраняет эти отношения. Генерация следующего токена использует кэш — поэтому она быстрее и дешевле, чем prefill.

💡
KV-cache — причина, почему streaming ответы кажутся быстрыми. Модель не пересчитывает весь контекст для каждого нового токена — она использует кэш. Но этот кэш занимает память. Много памяти. В статье про масштабирование LLM я подробно разбирал, как KV-cache убивает вашу VRAM при высокой нагрузке.

Почему это так дорого? Математика боли

Возьмем GPT-4 Turbo. 128K контекст. Цена: $10 за 1M входных токенов, $30 за 1M выходных.

Что делаемТокеновСтоимостьПримечание
Короткий запрос500 входных + 500 выходных$0.02Кажется мало
RAG с документами10K входных + 1K выходных$0.13Уже чувствуется
Длинный анализ50K входных + 10K выходных$0.80Опасно
1000 таких запросов50M входных + 10M выходных$800Месячный бюджет маленького стартапа

А теперь представьте, что у вас RAG-чатбот для компании. 100 пользователей, каждый делает 50 запросов в день. С документами по 5K токенов. Математика становится страшной.

Как оптимизировать промпты: конкретные техники

Теория — это хорошо. Но как сэкономить реальные деньги? Вот что работает.

1 Убивайте пробелы и форматирование

JSON красиво отформатирован? Отлично. Для людей. Для модели — это лишние токены. Каждый пробел, каждая табуляция, каждый перенос строки — токены.

// ПЛОХО: 42 токена
{
  "user": "john",
  "action": "update",
  "data": {
    "name": "John Doe",
    "age": 30
  }
}

// ХОРОШО: 22 токена (экономия 48%)
{"user":"john","action":"update","data":{"name":"John Doe","age":30}}

А если использовать ISON вместо JSON, можно сэкономить еще больше — до 70% на структурированных данных.

2 Сжимайте инструкции

"Пожалуйста, будь добр, проанализируй следующий текст и предоставь развернутый ответ с примерами" — 16 токенов.

"Проанализируй текст, приведи примеры" — 6 токенов. Экономия 62% на инструкциях.

Не переусердствуйте. Слишком сжатые инструкции ухудшают качество. Модель может не понять, что вы хотите. Тестируйте баланс между краткостью и ясностью.

3 Используйте системные промпты с умом

Системный промпт отправляется с каждым запросом. Каждый. Раз. Даже если он не меняется.

Решение? Кэшируйте. Или используйте модели, которые поддерживают отдельные системные сообщения (как OpenAI с ролью "system"). Но помните: системный промпт все равно считается во входных токенах.

4 Обрезайте контекст

Вам действительно нужны все 128K токенов? Или достаточно первых 4K? RLM техники помогают моделям самим управлять контекстом, но пока это экспериментально.

Практический совет: суммируйте длинные документы перед отправкой. Или используйте windowed context — только последние N токенов диалога.

Инструменты, которые спасают

  • OpenAI Tokenizer — официальный инструмент. Видите, как ваш текст режется на токены. Бесплатно.
  • tiktoken — библиотека Python от OpenAI. Считайте токены в коде:
    import tiktoken
    encoding = tiktoken.encoding_for_model("gpt-4")
    tokens = encoding.encode("Ваш текст здесь")
    print(f"Токенов: {len(tokens)}")
  • promptfoo — фреймворк для тестирования промптов. Сравнивает стоимость и качество разных вариантов.
  • Собственный мониторинг — логируйте токены каждого запроса. Узнаете, какие эндпоинты самые дорогие.

Ошибки, которые стоят тысяч долларов

Ошибка 1: Отправка полного диалога каждый раз. Каждое сообщение пользователя + вся история + все ответы модели = токены на квадрат. Решение: отправляйте только последние сообщения или используйте summary техники.

Ошибка 2: Не мониторить стоимость в реальном времени. Проснулись — счет на $5000. Решение: ставьте лимиты в API, используйте prepaid счета, пишите алерты.

Ошибка 3: Использовать GPT-4 для задач, где хватит GPT-3.5. Разница в стоимости — 15-30 раз. GPT-4 Turbo дешевле, но все равно дорого. Тестируйте на 3.5, переходите на 4 только если качество критично.

Будущее: что изменится?

Токенизация не идеальна. Исследователи уже работают над:

  • Байт-уровневые модели — как Agent Zero, которые работают с сырыми байтами. Нет словаря токенов — нет проблем с редкими словами.
  • Адаптивная токенизация — модель сама выбирает, как токенизировать текст для конкретной задачи.
  • Сжатие контекста — техники вроде KV-cache quantization, которые уменьшают память на 50-70% без потери качества.

Но пока — токены правят бал. И каждый лишний токен в промпте — это не просто символ. Это вычисление. Это память. Это деньги.

Самый неочевидный совет? Иногда лучшая оптимизация — не отправлять запрос вообще. Кэшируйте ответы на частые вопросы. Используйте векторные базы для семантического поиска вместо LLM. И помните: LLM решают задачи, недоступные человеку, но не все задачи требуют LLM.

Токенизация — это не просто техническая деталь. Это экономика AI-приложений. Понимаете ее — контролируете бюджет. Игнорируете — платите в 10 раз больше.