Токены в нейросетях: как считать расход и контекст
Токен — небольшой фрагмент, которым модель читает и генерирует текст. Им бывает слово, часть слова, число, знак препинания или несколько символов. Поэтому количество токенов не совпадает напрямую со словами и знаками, а счёт API включает не только видимый вопрос. Понимание этой единицы помогает планировать бюджет и окно контекста, но не говорит само по себе, насколько ответ полезен.
Почему русский и таблицы расходуют по-разному
Токенизатор разбивает языки неравномерно. Частое английское слово может быть одним фрагментом, а длинное русское — несколькими. Дефисы, URL, смешение кириллицы и латиницы, номера заказов и эмодзи тоже влияют на разбиение. Таблица из коротких значений иногда занимает больше токенов, чем связный абзац той же длины.
Точное значение зависит от модели и её токенизатора. Приближение «несколько символов на токен» годится для грубой оценки, но не для счёта. Перед запуском возьмите реальный русский текст, таблицу и код и пропустите их через счётчик именно выбранной модели.
Что входит в запрос
Входные токены включают системную инструкцию, историю диалога, сообщения пользователя, прикреплённые документы и результаты инструментов. Выход — сгенерированный ответ и иногда служебные рассуждения или структурированные поля, если их учитывает API. Длинная история может незаметно стать большей частью запроса после нескольких уточнений.
Составьте разметку из трёх частей: system, context, question. Измеряйте их отдельно. Если ответ повторно исправляется человеком, учитывайте и повторные вызовы. Для кэшируемого префикса проверьте правила провайдера: неизменная инструкция может обрабатываться иначе, но это не отменяет проверку изоляции данных.
Пример расчёта бюджета
Предположим, системный блок и документы занимают 1800 токенов, ответ — 500, а за день выполняется 40 запросов. Номинальный объём составляет (1800 + 500) × 40 = 92 000 токенов до повторов и ошибок. Если четверть ответов возвращается на доработку, добавьте второй вызов для этих случаев. Цена зависит от тарифа, направления токенов и кэширования, поэтому считайте стоимость принятого результата, а не только успешного первого ответа.
В журнале сохраняйте входные и выходные токены, задержку, статус кэша, модель и причину повтора. Среднее значение скрывает длинные документы; полезно видеть медиану и верхний процентиль. Так проще понять, почему счёт вырос в конкретный день.
Лимит контекстного окна
Модель ограничена общей длиной входа и максимально возможного ответа. Если документ почти занимает всё окно, система может обрезать начало, не оставить места для вывода или сократить ответ. Оставляйте запас под цитату, таблицу и вызовы инструментов.
Проверьте границы маркерами в начале, середине и конце длинного текста. Задайте вопросы по каждому маркеру и посмотрите, какой фрагмент теряется при увеличении контекста. Больший лимит не гарантирует, что модель заметит исключение в приложении к договору.
Сокращайте структуру, а не смысл
Сначала удалите повторяющиеся правила и историю, которая уже не относится к вопросу. Затем замените длинные объяснения структурированными полями. Не вырезайте числа, исключения и условия ради экономии: именно они меняют решение.
В RAG передавайте выбранные фрагменты, а не весь архив. Повторяющийся системный блок разместите в стабильном префиксе и проверьте поддержку кэша. После каждого сокращения сравнивайте точность, полноту и корректные отказы. Дешёвый ответ, который пропустил ограничение, не является улучшением.
Токены в русском ответе
Склонения, кавычки, тире и смешение алфавитов могут изменить длину. Код и URL часто разбиваются на множество коротких частей. Если формат ответа фиксирован, явно задайте поля и ограничьте лишние пояснения, но не требуйте короткого текста для сложного анализа.
Проверьте, что сокращение не меняет названия полей, десятичный разделитель и единицы измерения. Один потерянный символ может превратить идентификатор 00127 в другой номер. Для критичных чисел делайте машинную валидацию после генерации.
Кэш и повторные вызовы
Стабильный префикс уменьшает повторную обработку, если последовательность совпадает полностью. Один пробел, автоматически добавленная дата или новая версия инструкции могут дать промах. Динамические документы, имена клиентов и секреты держите отдельно и не помещайте в общий кэш.
Проведите четыре запуска: холодный, точное повторение, новый вопрос при том же префиксе и изменение одного символа. Сохраните hit/miss, задержку и цену. Проверьте срок хранения и возможность удаления; сокращение вычислений не даёт права хранить персональный контекст дольше регламента.
Бюджет контекста для команды
Сделайте лимит понятным не только разработчику. Для каждого типа запроса заведите короткую карточку: средний объём входа, максимальный объём, ожидаемый ответ и резерв под повтор. Например, карточка «разбор обращения» может включать 900 токенов инструкции, 2 000 токенов истории и 400 токенов ответа. Если документ разрастается, оператор должен увидеть предупреждение и выбрать: сократить историю, разделить задачу или передать её человеку.
Разделяйте технический лимит и финансовый бюджет. Окно модели может вместить большой текст, но стоимость повторного вызова после неудачной проверки быстро съест экономию. Введите простой сигнал: при превышении дневной нормы система сохраняет запрос, но не отправляет его автоматически. Ответственный проверяет, не зациклился ли клиентский диалог и не попали ли в общий контекст лишние персональные данные.
Раз в месяц возьмите десять самых дорогих запросов и разберите их по частям. Ищите повторяемую историю, ненужные вложения, слишком длинные системные инструкции и ответы, которые никто не использовал. Сокращайте только одну часть за раз, после каждого изменения прогоняйте контрольные примеры. Так команда видит, откуда появляется расход, а не пытается компенсировать его универсальным требованием «отвечай короче».
Практический эксперимент
Возьмите три текста одинакового размера: русский абзац, таблицу и фрагмент кода с комментариями. Измерьте токены и задержку на одной модели. Затем добавьте историю из пяти сообщений и длинную инструкцию, определите долю каждой части. Удалите дубли и повторите запуск. Сравните не только расход, но и фактическую полноту ответа.
Чек-лист
- Счётчик соответствует конкретной модели и токенизатору.
- Измерены system, context, question и output отдельно.
- История, повторы и ошибки включены в бюджет.
- В окне оставлен запас под ответ и инструменты.
- Русский текст, таблицы, код и идентификаторы проверены.
- Дубли удалены без потери чисел и исключений.
- Кэш не содержит PII, известны его изоляция и срок хранения.
- Сокращение подтверждено тестом качества и корректных отказов.
Токены — техническая мера работы модели, а не оценка ценности текста. Считайте их по реальному запросу, оставляйте место для проверки и принимайте решение по фактам, полноте и воспроизводимости результата.