Что такое токен в нейросети и как считается контекст

Что такое токен в нейросети и как считается контекст

Данные на октябрь 2026, Python 3.13Опубликовано 27 июля 2025Обновлено 10 августа 20267 мин чтения
Конвейер с блоками разной длины входит в серый блок обработки
Коротко
  • Токен — единица текста для нейросети: слово, часть слова, знак или пробел.
  • Токены получают алгоритмом токенизации: частые куски остаются целыми, редкие слова делятся на части.
  • Контекст — общий лимит токенов: в него входят и ваш запрос с историей, и ответ модели.
  • Число токенов считает сам сервис; у каждой модели свой словарь, поэтому числа разных моделей не сравнивают.
Содержание8 разделов ▾
  1. Что такое токен
  2. Откуда берутся токены
  3. Считаем токены сами
  4. Что такое контекст
  5. Как узнать, сколько токенов в тексте
  6. Условия и ограничения
  7. Частые ошибки
  8. Короткий вывод

Токен в нейросети — это кусочек текста: слово, часть слова, знак препинания или пробел с буквой. Нейросеть делит на токены и ваш запрос, и свой ответ, а потом работает уже с ними.

Статья для тех, кто знает, что такое нейросеть, и хочет понять, почему сервисы считают лимиты в токенах, а не в словах. Опираемся на статьи авторов алгоритмов токенизации, документацию Hugging Face и справку GigaChat. Мини-токенизатор из статьи запускался на Python 3.13, данные на октябрь 2026 года.

Что такое токен

Нейросеть работает с числами, а не с буквами. Поэтому текст сначала разрезают на куски — токены, — а каждому куску ставят в соответствие число из словаря модели. Программа, которая это делает, называется токенизатором.

В документации GigaChat сказано: токен может быть символом, несколькими символами, фрагментом слова или словом целиком. Условный пример: фраза «нейросеть отвечает» может разделиться на несколько токенов, но точное деление зависит от модели.

Откуда берутся токены

Целые слова брать за единицы неудобно: слов в языке очень много, а редкие и новые слова словарь не знает. Буквы брать слишком мелко: текст получается длинным. Поэтому используют золотую середину — куски слов, которые часто встречаются.

В документации Hugging Face описаны три распространённых алгоритма: BPE, Unigram и WordPiece. Идея у них общая: частые слова остаются одним токеном, а редкие и незнакомые раскладываются на части. Пример оттуда: «annoyingly» может разделиться на «annoying» и «ly».

В нейронном машинном переводе BPE применили Рико Сеннрих с коллегами в 2015 году: они предложили кодировать редкие и неизвестные слова последовательностями подслов. А в 2018 году Таку Кудо и Джон Ричардсон выпустили SentencePiece — токенизатор, который обучается прямо на сыром тексте и не зависит от языка.

Считаем токены сами

Чтобы увидеть идею BPE, напишем маленький токенизатор. Он берёт короткий корпус, находит самую частую пару соседних символов и склеивает её в новый токен. Так повторяем пять раз.

Python
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 — данные приведены на дату написания; документация сервисов меняется.
Токенизатор
У каждой модели свой словарь — числа токенов разных моделей сравнивать нельзя.
Лимит
Окно контекста — размер зависит от модели; смотрите страницу модели в документации сервиса.
Язык
Токенов на слово — зависит от языка и модели; мы не приводим общих чисел без источника.
Деньги
Тарифы не обсуждаем — стоимость токенов смотрите на странице тарифов сервиса.

Частые ошибки

  • Считают токены по словам: одно слово может занимать несколько токенов.
  • Забывают, что в лимит входит и ответ: длинный запрос оставляет мало места для ответа.
  • Вставляют в запрос лишнее: длинные файлы и ненужную историю.
  • Ждут, что «забытое» начало диалога вернётся: если оно не вошло в контекст, модель его не видит.
  • Сравнивают числа токенов разных моделей: у них разные словари.
  • Путают токен нейросети с токеном доступа: это разные понятия.

Короткий вывод

Токен — единица, на которую нейросеть делит текст, а контекст — общий лимит токенов на запрос и ответ. Счётчик токенов смотрите у самого сервиса, а не оценивайте по словам. Если разговор стал очень длинным, проще начать новый и перенести в него короткое резюме.

Источники

  1. Sennrich, Haddow, Birch. Neural Machine Translation of Rare Words with Subword Units (BPE), arXiv:1508.07909↗ arxiv.org
  2. Kudo, Richardson. SentencePiece, arXiv:1808.06226↗ arxiv.org
  3. Hugging Face Transformers: Tokenization algorithms↗ huggingface.co
  4. GigaChat API: Подсчёт токенов↗ developers.sber.ru
  5. GigaChat API: Квоты и ограничения↗ developers.sber.ru
  6. Wikipedia: Byte-pair encoding↗ en.wikipedia.org

Частые вопросы

Токен — это слово?

Нет, токен — это единица текста, которую выбрал алгоритм токенизации. Частое слово часто бывает одним токеном, а редкое делится на части. Токеном может быть и знак препинания, и пробел с буквой. Поэтому количество токенов обычно не совпадает с количеством слов. Как именно разрезается текст, зависит от словаря конкретной модели.

Сколько токенов в одном слове или на странице?

Точное число зависит от модели. В документации GigaChat сказано, что в среднем в одном токене 3—4 символа, включая пробелы и знаки препинания. Это ориентир, а не правило: короткий запрос лучше проверить счётчиком. Для GigaChat есть запрос подсчёта токенов, а в ответе модели приходит объект usage с реальными числами.

Что такое контекст в нейросети и почему она забывает начало разговора?

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

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

Лучше всего счётчиком самой модели. Для GigaChat API есть запрос POST /tokens/count: он оценивает токены в сообщении, но не покажет, сколько модель потратит на ответ. Реальное число после запроса приходит в объекте usage. Для обучения можно запустить мини-токенизатор из этой статьи: он показывает, как слово делится на части, но настоящие модели используют свои словари.

Чем токен нейросети отличается от токена доступа или криптотокена?

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

  • #token
  • #kontekst
  • #yazykovye-modeli
РедакцияМатериал подготовлен по источникам выше · 10 августа 2026