Алексей Маркин рабочий журнал

ищет по заголовкам и тексту записей и заметок

заметка 5 сентября 2026 г. · 1 мин
Все заметки

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

Токен — не слово и не символ. Считать надо токенизатором конкретной модели, и на русском результат отличается от английского примерно в 1.29 раза.

Короткий ответ: точно посчитать можно только токенизатором той модели, которой вы пользуетесь. Прикидка «одно слово — один токен» ошибается в разы, а «четыре символа на токен» верна для английского и не верна для русского.

Практический способ занимает пять строк:

import tiktoken
enc = tiktoken.get_encoding("o200k_base")
print(len(enc.encode("ваш текст")))

Я прогнал так три пары абзацев одинакового смысла и нормировал на длину в знаках. На нынешнем токенизаторе o200k_base русский текст занимает 3.90 знака на токен, английский — 5.04. То есть наценка за кириллицу — примерно 1.29×, а не «вдвое», как принято повторять: двойная разница была на прошлом поколении словарей.

На уровне слов это выглядит так:

контекст   2 токена    конт · екст
context    1 токен     context

Зачем считать вообще. Токены — это одновременно и деньги, и место в контекстном окне, и время генерации. Прикидка нужна в трёх местах: когда оцениваете счёт до запуска, когда решаете, влезет ли база в контекст, и когда режете документы на куски — там лимит задаётся в токенах, а не в символах.

Оговорка, о которую спотыкаются: у каждого провайдера свой токенизатор. Число, посчитанное чужим, годится для оценки порядка и не годится для точного лимита. Если лимит критичен — берите счётчик из ответа API, он там возвращается.

Подробный разбор, почему кириллица делится мельче и во что это обходится, — в записи «Почему кириллица стоит дороже».