- Токен — единица текста для нейросети: слово, часть слова, знак или пробел.
- Токены получают алгоритмом токенизации: частые куски остаются целыми, редкие слова делятся на части.
- Контекст — общий лимит токенов: в него входят и ваш запрос с историей, и ответ модели.
- Число токенов считает сам сервис; у каждой модели свой словарь, поэтому числа разных моделей не сравнивают.
Содержание8 разделов ▾
Токен в нейросети — это кусочек текста: слово, часть слова, знак препинания или пробел с буквой. Нейросеть делит на токены и ваш запрос, и свой ответ, а потом работает уже с ними.
Статья для тех, кто знает, что такое нейросеть, и хочет понять, почему сервисы считают лимиты в токенах, а не в словах. Опираемся на статьи авторов алгоритмов токенизации, документацию Hugging Face и справку GigaChat. Мини-токенизатор из статьи запускался на Python 3.13, данные на октябрь 2026 года.
Что такое токен
Нейросеть работает с числами, а не с буквами. Поэтому текст сначала разрезают на куски — токены, — а каждому куску ставят в соответствие число из словаря модели. Программа, которая это делает, называется токенизатором.
В документации GigaChat сказано: токен может быть символом, несколькими символами, фрагментом слова или словом целиком. Условный пример: фраза «нейросеть отвечает» может разделиться на несколько токенов, но точное деление зависит от модели.
Откуда берутся токены
Целые слова брать за единицы неудобно: слов в языке очень много, а редкие и новые слова словарь не знает. Буквы брать слишком мелко: текст получается длинным. Поэтому используют золотую середину — куски слов, которые часто встречаются.
В документации Hugging Face описаны три распространённых алгоритма: BPE, Unigram и WordPiece. Идея у них общая: частые слова остаются одним токеном, а редкие и незнакомые раскладываются на части. Пример оттуда: «annoyingly» может разделиться на «annoying» и «ly».
В нейронном машинном переводе BPE применили Рико Сеннрих с коллегами в 2015 году: они предложили кодировать редкие и неизвестные слова последовательностями подслов. А в 2018 году Таку Кудо и Джон Ричардсон выпустили SentencePiece — токенизатор, который обучается прямо на сыром тексте и не зависит от языка.
Считаем токены сами
Чтобы увидеть идею BPE, напишем маленький токенизатор. Он берёт короткий корпус, находит самую частую пару соседних символов и склеивает её в новый токен. Так повторяем пять раз.
from collections import Counter
корпус = "низкий низкий низкий низкий низкий нижний нижний нижний низина низина низина".split()
слова = Counter(tuple(слово) for слово in корпус)
def пары(слова):
счёт = Counter()
for слово, число in слова.items():
for a, b in zip(слово, слово[1:]):
счёт[(a, b)] += число
return счёт
def слить(слова, пара):
новые = Counter()
for слово, число in слова.items():
out, i = [], 0
while i < len(слово):
if i + 1 < len(слово) and (слово[i], слово[i + 1]) == пара:
out.append(слово[i] + слово[i + 1]); i += 2
else:
out.append(слово[i]); i += 1
новые[tuple(out)] += число
return новые
правила = []
for шаг in range(1, 6):
пара, число = пары(слова).most_common(1)[0]
слова = слить(слова, пара)
правила.append(пара)
print(f"шаг {шаг}: сливаем {пара[0]!r} + {пара[1]!r} (встречается {число} раз)")
def токены(слово):
части = tuple(слово)
for пара in правила:
части = next(iter(слить(Counter({части: 1}), пара)))
return list(части)
for слово in ["низкий", "нижний", "низина", "низкорослый"]:
print(слово, "->", токены(слово))Вывод при запуске на Python 3.13.12:
шаг 1: сливаем 'н' + 'и' (встречается 14 раз)
шаг 2: сливаем 'ни' + 'з' (встречается 8 раз)
шаг 3: сливаем 'низ' + 'к' (встречается 5 раз)
шаг 4: сливаем 'низк' + 'и' (встречается 5 раз)
шаг 5: сливаем 'низки' + 'й' (встречается 5 раз)
низкий -> ['низкий']
нижний -> ['ни', 'ж', 'ни', 'й']
низина -> ['низ', 'и', 'н', 'а']
низкорослый -> ['низк', 'о', 'р', 'о', 'с', 'л', 'ы', 'й']Частое слово «низкий» стало одним токеном. Незнакомое «низкорослый» разложилось на «низк» и отдельные буквы: его в корпусе не было, и алгоритм взял то, что знал.
Настоящие модели обучают токенизатор на огромных текстах и держат словарь в десятки тысяч токенов. По Hugging Face, у GPT словарь 40 478 токенов, а у GPT-2 — 50 257. Принцип тот же, что в нашем примере.
Что такое контекст
Контекст — всё, что модель получает на вход одним запросом. Не только ваш последний вопрос. В документации GigaChat уточнено: в токены превращается и контент из контекста запроса — текстовые файлы, изображения, описания функций и история сообщений.
Модель принимает ограниченное число токенов. В справке GigaChat сказано, что количество токенов в промпте с контекстом и в ответе зависит от модели. Поэтому у разговора есть общий бюджет: вход и ответ тратят его вместе. Чем длиннее история, тем меньше места остаётся на ответ. Если бюджет превышен, сервис либо отбрасывает часть данных, либо возвращает ошибку.
Отсюда следствие. Когда разговор очень длинный, модель может не «помнить» его начало: оно уже не входит в окно. Это не забывчивость, а ограничение на размер входа. Что именно отбрасывает конкретный сервис, смотрите в его документации.
Как узнать, сколько токенов в тексте
| Что нужно | Как сделать |
|---|---|
| Оценить запрос заранее | GigaChat API: запрос POST /tokens/count с текстом и названием модели |
| Узнать реальный расход | GigaChat API: объект usage в ответе на POST /chat/completions |
| Увидеть статистику потребления | Личный кабинет GigaChat: раздел «Статистика потребления токенов» |
| Понять принцип | Мини-токенизатор из этой статьи |
Запрос POST /tokens/count, по справке, оценивает токены в сообщении, но не покажет, сколько модель потратит на ответ и сколько займут файлы или изображения. Это делает объект usage: в нём есть токены запроса, токены ответа, кэшированные токены и общее число.
Условия и ограничения
- Версия
- Октябрь 2026 — данные приведены на дату написания; документация сервисов меняется.
- Токенизатор
- У каждой модели свой словарь — числа токенов разных моделей сравнивать нельзя.
- Лимит
- Окно контекста — размер зависит от модели; смотрите страницу модели в документации сервиса.
- Язык
- Токенов на слово — зависит от языка и модели; мы не приводим общих чисел без источника.
- Деньги
- Тарифы не обсуждаем — стоимость токенов смотрите на странице тарифов сервиса.
Частые ошибки
- Считают токены по словам: одно слово может занимать несколько токенов.
- Забывают, что в лимит входит и ответ: длинный запрос оставляет мало места для ответа.
- Вставляют в запрос лишнее: длинные файлы и ненужную историю.
- Ждут, что «забытое» начало диалога вернётся: если оно не вошло в контекст, модель его не видит.
- Сравнивают числа токенов разных моделей: у них разные словари.
- Путают токен нейросети с токеном доступа: это разные понятия.
Короткий вывод
Токен — единица, на которую нейросеть делит текст, а контекст — общий лимит токенов на запрос и ответ. Счётчик токенов смотрите у самого сервиса, а не оценивайте по словам. Если разговор стал очень длинным, проще начать новый и перенести в него короткое резюме.




