Токенизация
Подсчёт токенов выполняется локально через реестр токенизаторов, который поддерживает tiktoken-совместимые токенизаторы, SentencePiece, JSON от Hugging Face и модельно-специфичные плагинные токенизаторы, с явным приближённым резервным решением.
Локальный подсчёт
Подсчёт токенов никогда не покидает машину. Реестр выбирает профиль токенизатора для активной модели, и конвейер считает собранный контекст внутри процесса до любого сетевого запроса.
Реестр токенизаторов
Реестр принимает четыре вида токенизаторов:
- Tiktoken-совместимые — BPE-токенизаторы, совместимые с OpenAI tiktoken, для семейств моделей OpenAI.
- SentencePiece — модели, поставляющие словари SentencePiece.
- JSON-токенизатор Hugging Face — файлы
tokenizer.jsonиз репозиториев Hugging Face, преобразованные в компактный формат рангов. - Модельно-специфичные плагины — провайдерные плагины могут регистрировать точный профиль токенизатора для модели.
Для моделей без зарегистрированного токенизатора существует приближённое резервное решение, и оно всегда помечается явно, поэтому интерфейс никогда не выдаёт оценку за точный подсчёт.
Встроенные профили
Ядро регистрирует офлайн-профили для распространённых семейств:
openai:o200k_base— семейства GPT-4o, GPT-4.1, GPT-5, o1, o3 и o4.openai:cl100k_base— GPT-4, GPT-3.5 Turbo и text-embedding-3.deepseek:bytelevel-bpe-v1— семейства DeepSeek. Подсчёт выполняется через компактный движок только для подсчёта (перенос BPE-слияний без словаря и без декодера) поверх рангов официальногоtokenizer.json. Файл один раз преобразуется в небольшой файл рангов, кэшируемый вdata/cache/tokenizers/deepseek-v4-flash/через атомарные записи temp-plus-rename; полный JSON и библиотека токенизатора рантайма не хранятся и не загружаются.
Если сеть недоступна, профиль DeepSeek честно переключается на приближённый профиль и повторяет попытку не чаще одного раза за 15 минут — отсутствующий токенизатор никогда не блокирует генерацию.
Приближённое резервное решение
Неизвестные локальные модели используют approximate-character-v1 —
эвристику с учётом письменности: примерно 4.6 символа на токен для
латиницы, 4.0 для кириллицы, 1.7 для CJK и 2.0 для цифр. Приближение
помечается везде, где появляется, а провайдерный плагин может в любой момент
заменить его, зарегистрировав точный профиль.
Плагинные профили
Плагины регистрируют профили токенизаторов с приоритетом. Плагинный профиль
с приоритетом выше -10 переопределяет семейный профиль для покрываемых им
моделей. Выбранный профиль передаётся в конвейер как countTokens,
tokenizerProfile и tokenizerApproximate.
Результат бюджета токенов
После подсчёта конвейер предоставляет PipelineResult.tokenBudget, который
содержит:
- использованный профиль токенизатора;
- флаг
approximate; - лимит контекста модели;
- зарезервированное место под ответ;
- итоговое количество токенов промпта.
О том, как соблюдается бюджет, см. Контекст-шифтинг.