AI · 6 мин чтения

Что такое токены нейросети: как считать расход и планировать бюджет

Токены - это единицы, на которые нейросеть режет текст, прежде чем что-то посчитать: и стоимость запроса, и объём, который она удержит в памяти диалога. Когда я объясняю клиентам, что такое токены нейросети и почему тариф считается не за слова и не за символы, обычно сравниваю токены с валютой: этой валютой модель платит за каждый запрос и каждый ответ. Той же валютой считается бюджет проекта: сколько будет стоить бот в Telegram, RAG-чат с базой знаний или обработка тикетов через n8n, если прогонять через нейросеть сотни сообщений в день.

Как нейросеть режет текст на токены

Токенизатор разбивает текст на куски по алгоритму byte pair encoding: он не режет строго по словам, а склеивает часто встречающиеся сочетания символов в один токен. Короткое частое слово вроде «и» или «на» почти всегда превращается в один токен. Слово подлиннее или редкое, особенно с приставками и окончаниями, модель раскладывает на два-три токена: корень отдельно, окончание отдельно.

Знаки препинания, пробел перед словом и цифры тоже съедают токены. Номер телефона или артикул товара в тексте может занять больше токенов, чем кажется на глаз, потому что цифры токенизатор режет группами по 1-3 символа. На практике это ощутимо в парсинге и автоматизации: если через нейросеть прогоняются каталоги с артикулами и характеристиками, токенов уходит заметно больше, чем на обычный связный текст того же объёма.

Сколько токенов получается из русского текста

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

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

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

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

Точное число токенов до отправки запроса можно узнать двумя способами. Первый - прогнать текст через библиотеку токенизации локально, не тратя реальный запрос. Для моделей семейства GPT это делает библиотека tiktoken:

import tiktoken

encoding = tiktoken.encoding_for_model("gpt-4")
text = "Пример текста для подсчета токенов"
tokens = encoding.encode(text)
print(len(tokens))

Второй способ - смотреть на цифры, которые провайдер возвращает вместе с ответом: у большинства API в метаданных ответа есть поля с количеством входных и выходных токенов по конкретному запросу. Я логирую эти значения в отдельную таблицу или в базу n8n-воркфлоу, чтобы через неделю-две увидеть реальное распределение расхода по типам запросов, а не гадать по документации.

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

Из чего складывается бюджет на токены

Бюджет на токены не сводится к «умножить символы на цену». В расход попадает несколько статей сразу, и часть из них незаметна, пока не посмотришь логи.

Чтобы прикинуть бюджет на конкретный проект, я считаю по простой связке: беру среднее число токенов на один запрос, отдельно на вход и на выход, умножаю на ожидаемое количество запросов в день и на цену токена по актуальному прайсу выбранной модели. Тарифы у провайдеров меняются по нескольку раз в год, поэтому смотрю их перед каждым расчётом, а не храню цифру в голове. Например, у бота поддержки может быть 500 обращений в день, где на вход уходит порядка 300-400 токенов (история диалога плюс сообщение клиента), а на выход - 150-250 токенов ответа. Умножив это на количество обращений и на 30 дней, получаю месячный объём токенов, а дальше подставляю в него текущую цену за входной и выходной токен отдельно, потому что стоят они почти всегда по-разному.

Сценарий Что тянет токены Как я снижаю расход
Одиночный вопрос без истории Системный промпт и сам вопрос Убираю из промпта то, что не влияет на ответ
Чат-бот с историей диалога Вся переписка отправляется заново на каждом шаге Обрезаю историю до последних реплик, старое сворачиваю в резюме
RAG-чат с базой знаний Куски документов, которые модель получает как контекст Подбираю размер и число чанков под конкретный вопрос
Автоматизация в n8n с батч-обработкой Один и тот же промпт повторяется на каждой строке партии Выношу неизменную часть промпта в переиспользуемый префикс

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

Как я снижаю расход токенов в реальных проектах

В aiogram-ботах с подключённой нейросетью самая частая утечка токенов - это история диалога. Если отправлять в модель весь чат целиком с первого сообщения, к сотому вопросу пользователя счёт вырастает в разы, хотя вопросы стали короче. Я держу скользящее окно из последних реплик, а всё, что старше, схлопываю в короткое резюме одной дополнительной генерацией - это дешевле, чем тащить полную историю дальше.

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

Для RAG-чата с базой знаний токены экономит точный подбор чанков: чем точнее поиск находит нужный кусок документа, тем меньше лишнего текста нужно класть в контекст ради того же качества ответа. По такой схеме, с поиском нужных фрагментов по базе знаний, работает и мой ИИ-чатбот на Claude.

Ещё один рычаг - жёсткий лимит на длину ответа. Если бот пишет развёрнутые абзацы там, где хватит двух предложений, выходные токены, которые почти всегда дороже входных, съедают бюджет быстрее, чем кажется на старте проекта.

Модели и тарифы нейросетей быстро меняются, поэтому перед запуском я проверяю актуальные условия у провайдера.

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

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

Точного универсального числа нет, потому что зависит от языка и токенизатора. Для английского текста ориентировочно один токен - это 3-4 символа, для русского из-за кириллицы символов на токен получается меньше, обычно текст выходит на 30-70% длиннее в токенах, чем такой же по смыслу английский. Страница текста на 2000 символов на русском у меня обычно превращается в 700-900 токенов, но это ориентир из практики, а не формула: точное число даёт только токенизатор конкретной модели.

Чем входные токены отличаются от выходных по стоимости?

У большинства провайдеров генерация токена на выходе стоит дороже, чем токен на входе, потому что модели дороже обходится генерация каждого следующего слова, а не чтение готового текста. Отсюда правило: львиную долю бюджета в чат-ботах и RAG-системах обычно съедает не сам вопрос пользователя, а длина ответа, который генерирует модель.

Можно ли точно посчитать токены до отправки запроса?

Можно, но только тем же токенизатором, которым пользуется выбранная модель, например через библиотеку tiktoken для моделей семейства GPT. Прикидка на глаз по количеству слов даёт погрешность в десятки процентов, особенно на русском тексте, поэтому для реального бюджета я всегда считаю токены программно, а не по общей формуле.

Что незаметно съедает токены в чат-боте с нейросетью?

Чаще всего это история переписки, которая отправляется в модель целиком на каждом шаге диалога, и системный промпт, который повторяется в каждом запросе, даже если пользователь просто поздоровался. Вторая частая причина - слишком крупные куски документов в RAG-системе: если чанк документа тянет в контекст на порядок больше текста, чем нужно для ответа на конкретный вопрос, токены уходят впустую.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно