Ваш агент на базе LLM может идеально работать в демо-режиме, но затем начать тормозить и раздувать счета всего после нескольких итераций. Скрытая причина не в нестабильной модели — это дрейф токенов (token drift), постепенное раздувание промпта, который модели приходится обрабатывать каждый раз.
Дрейф токенов происходит, когда каждое взаимодействие добавляет всё больше текста в контекст ввода модели. История диалога, схемы инструментов, ответы API и извлеченные документы накапливаются, поэтому каждый последующий вызов несет в себе всё больший объем данных. Поскольку время обработки и стоимость модели растут вместе с количеством входных токенов, затраты увеличиваются квадратично, а не линейно.
Почему проблема проявляется в продакшене, а не в демо
В реальных условиях развертывания сохраняется всё: каждое высказывание пользователя, каждый результат работы инструмента, каждый фрагмент извлеченных знаний. Накопление остается незаметным до тех пор, пока не произойдет скачок задержки (latency) и не придет счет.
Распространенные источники дрейфа токенов
- Повторяющиеся транскрипты — хранение каждого старого сообщения в промпте вместо того, чтобы резюмировать или удалять его.
- Тяжелые схемы инструментов — отправка больших JSON-определений возможностей инструментов при каждом шаге.
- Громоздкие результаты инструментов — включение полных ответов API или строк из базы данных, которые содержат больше данных, чем на самом деле нужно агенту.
- Раздувание RAG — использование Retrieval-augmented generation (RAG), которое добавляет множество фрагментов документов, некоторые из которых устарели или нерелевантны.
- Дублирование памяти — упаковка резюме, объекта состояния и необработанного транскрипта вместе, что трижды повторяет одну и ту же информацию.
Каждый из этих факторов добавляет токены, которые не приносят новой логической ценности, но при этом увеличивают размер промпта.
Как держать бюджет токенов под контролем
1. Используйте многоуровневый дизайн контекста
- Стабильные инструкции — держите системные промпты и правила безопасности в начале и ссылайтесь на них, а не пересылайте их каждый раз.
- Структурированное состояние — храните компактное представление целей, решений и идентификаторов, которые агент может быстро прочитать.
- Сжатая история — резюмируйте старые итерации в короткий, понятный человеку абзац, обновляя его только при достижении определенного порога.
- Последние итерации — включайте последние несколько сообщений дословно, чтобы сохранить непрерывность диалога.
Разделение постоянного текста и контента, подлежащего резюмированию, избавляет от необходимости повторно отправлять одни и те же слова.
2. Сокращайте выходные данные инструментов
- Извлекайте только те поля, которые агент действительно использует; отбрасывайте избыточные описания.
- Заменяйте большие результаты кратким резюме или идентификатором ссылки (ID), а полный объем данных храните в базе данных, кэше или объектном хранилище.
- Когда инструмент возвращает список, отправляйте только топ-N элементов, важных для текущего решения.
3. Применяйте умное резюмирование
- Не делайте резюме после каждого шага; дополнительная обработка создает накладные расходы.
- Обновляйте резюме только тогда, когда накопленное количество токенов старых итераций превышает заданный лимит.
- Храните критически важные факты (ID, суммы, временные метки) в структурированном хранилище, а не в виде текста, чтобы резюме оставалось коротким.
4. Отслеживайте правильные метрики
- Логируйте использование токенов на каждый вызов модели, а не только на каждый запрос пользователя. Это выявит скрытый рост на стороне входных данных.
- Отслеживайте количество входных токенов, добавляемых на каждом шаге; резкий скачок указывает на источник дрейфа.
- Отделяйте кэшированные токены (используемые повторно из предыдущих вызовов) от вновь сгенерированных; только первые вызывают дрейф.
Относитесь к промпту как к конечному ресурсу, а не к бесконечному транскрипту. Благодаря осознанному измерению, резюмированию и сокращению данных, вы сохраните своего LLM-агента быстрым, доступным и готовым к масштабированию в продакшене.
Главный вывод: Дрейф токенов незаметно увеличивает расходы и замедляет работу агентов. Определите части вашего промпта, которые разрастаются, сожмите или вынесите их вовне, и следите за использованием токенов на каждый вызов. Дисциплинированный подход превратит непредсказуемые скачки счетов в управляемый и бюджетный процесс.
