← Все статьи
2026-05-07 14:01 · 🌐 СНГ (tech/AI)

Почему ИИ не может посчитать буквы: токенизация изнутри

LLM видит ваш текст не как буквы и слова, а как токены — и именно это объясняет, почему модель путается в простой арифметике, коверкает слова при перевороте и иногда ведёт себя как сломанный автомат. Разбираем механику изнутри.

Почему ИИ не может посчитать буквы: токенизация изнутри

Если GPT не может посчитать, сколько раз буква «r» встречается в слове «strawberry», это не баг модели и не вопрос интеллекта. Это вопрос того, как устроен токенизатор. Слово «strawberry» в большинстве современных токенизаторов разбивается не по буквам, а по частотным сочетаниям — и буква «r» в разных позициях может оказаться в разных токенах, а не как отдельный символ. Модель просто никогда не «видит» отдельных букв в привычном нам смысле.

Контекст

Токенизация — это первый шаг обработки любого промпта в LLM. Прежде чем текст попадёт в трансформер, он разбивается на токены: фрагменты, которые могут быть частью слова, целым словом или несколькими словами сразу. Словарь токенов формируется заранее — с помощью алгоритма byte-pair encoding (BPE), который ищет наиболее частые сочетания символов в обучающем датасете и объединяет их в единые токены.

Главными объяснителями темы остаются: видео AI-исследователя Андрея Карпатого (около двух часов на английском) и книга «Build a Large Language Models from Scratch». Именно эти источники легли в основу развёрнутого разбора на Хабре от команды Газпромбанка, который и стал поводом для этого материала.

Токенизация существует не ради красоты архитектуры. Альтернативы — посимвольная обработка или разбивка по словам — имеют критические недостатки. Посимвольная даёт слишком длинные последовательности и быстро съедает контекстное окно. Словарь слов не покрывает редкие слова, имена собственные, код. BPE — компромисс: частые сочетания схлопываются в один токен, редкие остаются мелкими фрагментами.

Аналитика

Проблема токенизации недооценена по одной причине: её следствия часто списывают на «тупость» модели, хотя реальная причина глубже. Возьмём конкретный пример: слово «egg», «Egg» и «EGG» в токенизаторе cl100k_base (GPT-4) — это один токен, два токена и снова два токена, но с другим делением. Регистрозависимая система без единого правила. Для модели «egg» в начале предложения и «egg» внутри — это разные токены с разными весами. Никакой консистентности.

Числа не лучше. Числа одинаковой длины могут делиться в совершенно разных местах. Поэтому арифметика у LLM — не вопрос вычислительных способностей, а вопрос того, видит ли модель цифры как отдельные единицы или как куски многозначного числа. Именно поэтому агентские системы выносят арифметику в инструменты (калькулятор): не потому что модель «не умеет считать», а потому что токенизатор не даёт ей хорошего доступа к цифрам.

Ещё один слой сложности — языковой. Токенизатор обучается на датасете, и если в нём мало текстов на русском, японском или казахском, то частотные сочетания этих языков не попадут в словарь. Промпты на этих языках будут разбиваться на куда больше токенов, чем английские аналоги — и качество модели на нелатинских языках ухудшается ещё до того, как LLM вообще начала работать. Сравнение GPT-2 и GPT-4 на русском тексте это хорошо показывает: первая модель явно создавалась с прицелом на английский, вторая — уже нет.

Кейсы применения в бизнесе

B2B-SaaS стартап с LLM в продукте. Если вы строите продукт на базе Claude или GPT и работаете с нелатинскими языками (русский, казахский, кыргызский), учитывайте, что токенов на единицу текста будет больше. Это означает: выше стоимость API-вызовов, быстрее заполняется контекстное окно. Практически — тестируйте токенизацию ваших типичных промптов через tiktokenizer.vercel.app перед деплоем. Оптимизация промптов под токен-эффективность может снизить затраты на 15-30% при том же качестве.

Корпорация с legacy-системами и внедряемым ИИ. Если вы подаёте в LLM структурированные данные — JSON, XML, SQL-запросы, — помните: токенизаторы старых моделей могли плохо работать с синтаксисом этих форматов. Современные модели справляются лучше, но при работе с кодом или данными проверяйте, как именно разбивается ваш типичный payload. Иногда небольшое переформатирование входных данных заметно улучшает качество ответа.

SMB и локальный бизнес в КР/СНГ. Если вы используете LLM для обработки клиентских сообщений, документов или отзывов на русском — стоит знать, что короткий русский запрос «часто длиннее» эквивалентного английского в токенах. Сценарий: чат-бот для кыргызстанского ритейла с промптами на русском будет тратить на 30-50% больше токенов, чем аналог на английском. Это влияет на бюджет при масштабировании. Решение — тестировать реальные диалоги через токенизатор ещё на этапе прототипа.

Кейсы в личной жизни

Разработчик. Если LLM стабильно ошибается в задачах с переворотом строк, посимвольным анализом или подсчётом символов — это не случайность, это токенизация. Решение прямолинейное: явно инструктируйте модель разбить слово по символам перед ответом («разбей слово на отдельные буквы, затем...»). Это форсирует «пересчёт» через рассуждение, а не прямой ответ из токена.

Контент-мейкер и копирайтер. Понимание токенизации помогает лучше формулировать задачи на редактуру. Модели проще работать с целыми смысловыми блоками, чем с одиночными символами. Задача «замени каждую вторую букву» — плохой промпт. Задача «перепиши этот абзац, сохраняя стиль, но убрав два повтора» — хороший.

Студент или исследователь. Если хотите быстро визуализировать, как именно ваш текст «видит» конкретная модель — tiktokenizer.vercel.app работает прямо в браузере, без регистрации. Полезно для понимания, почему модель «не замечает» что-то очевидное: возможно, это просто оказалось в неудобном токене.

Как применить сегодня

  • Откройте tiktokenizer.vercel.app и вставьте туда ваш типичный промпт — сразу увидите, как он разбивается на токены в разных моделях.
  • Если LLM ошибается в задачах с буквами или числами, добавьте в промпт инструкцию: «Сначала разбей слово/число на отдельные символы, перечисли их, затем ответь на вопрос».
  • При оценке затрат на API — тестируйте токен-длину реальных диалогов на вашем языке, не переносите бенчмарки с английского напрямую.
  • Если строите агентскую систему с арифметикой или строковыми операциями — выносите их в инструменты (calculator, string_ops), не полагайтесь на нативные способности LLM.
  • История с SolidGoldMagikarp (Reddit-юзернейм попал в датасет токенизатора, но не в датасет LLM — и вызывал «undefined behavior») напоминает: при файн-тюнинге следите за консистентностью датасетов для токенизатора и для самой модели.
«Многие проблемы, которые выглядят как недостатки LLM, на самом деле связаны не с самими LLM, а с тем, как токенизатор предоставляет им информацию» — и это ключевой инсайт для всех, кто строит AI-продукты.
← Все статьи