Главная / Статьи / Почему ИИ-агенты тратят бюджет, не заканчивая работу, и как этому противостоять

Почему ИИ-агенты тратят бюджет, не заканчивая работу, и как этому противостоять

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

1533 слов

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

Возьмём скромный пример: бесприсмотровая работа днём, стоившая 40 долларов и не принесшая никаких результатов. По стандартам работы агентов это сущая мелочь; команды делятся историями о неконтролируемых работах всю ночь, которые обходились в четырёхзначные суммы. Важна не сама сумма, а то, что она позволила купить. Агент не застрял и не вызвал ошибок, на которые можно было бы указать. Он всё время был занят, но работал бесполезно.

Как выглядит «сбежавший» агент в логах

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

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

Почему модель решает, что работа завершена

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

"stop_reason": "end_turn"

Вторая указывает на то, что модель хочет вызвать инструмент и продолжить работу:

"stop_reason": "tool_use"

Цикл агента — это обычный код приложения. Он отправляет запрос, выполняет любой инструмент, запрошенный моделью, возвращает результат и повторяет процесс до тех пор, пока модель не вернёт значение end_turn. Ничто вне самой модели не указывает на завершение задачи. На каждом этапе модель сама выполняет этот вызов, определяя, завершено ли выполнение поставленной задачи. Существуют и другие причины остановки, например, достижение лимита токенов вывода, но это прерывания, а не сигнал о завершении работы.

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

Насколько это распространено

Хочется считать это особенностью какого-то конкретного инструмента. Однако более обширные данные говорят об обратном. Исследование RAND Corporation, основанное на интервью с 65 опытными специалистами в области данных и инженерами, показало, что уровень неудач в проектах искусственного интеллекта превышает 80 процентов, что примерно в два раза больше, чем в традиционных IT-проектах. Это исследование касается проектов искусственного интеллекта в целом, а не только специальных агентов, но циклы, которые работают без создания ценности, являются одной из повседневных причин такой траты ресурсов. Они никогда не упоминаются в ключевых докладах на конференциях; они фигурируют в счетах-фактурах.

Существуют также более подробные версии этой истории. часто цитируемый отчет рассказывает о одной рекурсивной петле, расходы которой достигли пятизначных цифр до того, как кто-либо вмешался. Эта цифра не была независимо подтверждена, и любая подобная впечатляющая цифра заслуживает скептицизма. Однако механизм действительно существует, и он только усиливается: та же петля, которая тратит 40 долларов за один день, может потратить 4 000 долларов в течение незащищенных выходных.

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

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

  • Бесконечные поиски в Интернете. Каждая загруженная страница и каждый повторный поиск имеют свою стоимость. При отсутствии ограничений исследования продолжаются до тех пор, пока модель считает, что где-то ещё могут быть полезные источники информации.
  • Дорогая модель для простых задач. Модели высокого уровня стоят дороже, потому что они способны к более сложному анализу, однако многие действия агента, такие как переформатирование файла, проверка статуса или повторная попытка выполнения запроса, не требуют таких функций. Более простая модель сможет справиться с ними за гораздо меньшие деньги.
  • Бесконечные диалоги. Агент, работающий в рамках одного длительного разговора, каждый раз перерабатывает всю накопленную историю, из-за чего даже небольшой запрос к уже несколько недель длящемуся диалогу становится дороже, чем в начале, независимо от его масштаба. Кэширование промптов может снизить этот эффект, если ваш провайдер это поддерживает, но объем контекста всё равно увеличивается.
  • Забытые графики выполнения. Регулярная задача, настроенная один раз, продолжает выполняться долгое время после того, как кто-либо воспользовался её результатом.
  • Ничто из этого не является чем-то экзотическим. Вместе они ведут себя как забытая подписка, которая берёт плату за каждый токен вместо оплаты за месяц. Чтобы получить структурный обзор того, как накапливаются эти затраты, статья о том, почему растут затраты на агентные ИИ даёт более подробное объяснение.

    Исправляйте условие остановки, а не верхний лимит

    После дорогостоящей операции инстинктивной реакцией является повышение лимита на количество шагов или расходов. Обычно это приводит к обратному эффекту, поскольку более высокий лимит позволяет той же застрявшей циклической структуре работать дольше, прежде чем возникнет конфликт. На самом деле помогает предоставить циклу способ заметить, что прогресс застопорился, что — это другой вопрос, чем вопрос о том, исчерпан ли у него лимит шагов.

    Установите финишную линию внутри цели

    Определите понятие «завершено» как часть задачи, а не как что-то, что рассматривается позже. Инструкция вроде «исправь не проходящий тест» оставляет место для дополнительных действий, таких как упорядочивание импортов или переформатирование всего файла. Формулировка «Добейтесь прохождения этого одного теста, а затем заканчивайте» предоставляет чёткий критерий, который модель может действительно распознать. Чем более очевидным является критерий завершения, тем проще модели вернуть end_turn в подходящий момент.

    Сделайте результаты инструментов однозначными

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

    Обнаруживайте повторения вместо подсчёта шагов

    Фиксированный счётчик шагов — это грубый инструмент. Тот же счётчик может прервать корректную задачу, требующую 15 шагов, на 11-м шаге, в то время как цикл из 2 шагов может потратить несколько дополнительных дорогостоящих вызовов, прежде чем сработать. Гораздо лучшим признаком является повторение: фиксация последовательных вызовов одного инструмента с идентичными аргументами позволяет непосредственно выявить описанный ранее паттерн, не наказывая при этом задачи, которые просто имеют большую длину.

    Добавьте человеческий контрольный пункт и жёсткий лимит расходов

    Любая задача, оставленная без присмотра на несколько минут и более, должна предусматривать момент, когда человек проверит ход выполнения. Автоматизированные механизмы контроля дополняют этот процесс. Например, gh-aw от GitHub предоставляет инструмент контроля расходов, который можно настроить так, чтобы остановить рабочий процесс сразу при превышении установленного лимита, вместо того чтобы оставлять задачу на рассмотрение того, кто будет читать счет-фактуру. Такой механизм является резервным средством, а не заменой надежных условий остановки, но он снижает ущерб в случае сбоев всех остальных механизмов.

    Деятельность — это не прогресс

    Самым тревожным аспектом неконтролируемого выполнения задач является не столько сумма затрат, сколько уверенность в правильности действий. Результаты работы агента никогда не содержат оговорок и не выражают неуверенности в том, помогает ли какая-либо из действий. Агент предлагает логичные шаги выполнения до тех пор, пока что-то внешнее, часто это человек, заинтересовавшийся неожиданным счетом, не остановит его.

    Урок заключается не в том, чтобы полностью перестать доверять агентам. Речь идет о необходимости перестать путать активность с прогрессом как в автоматизированных системах, так и во многих человеческих задачах.

    Основные выводы

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

    Связанная литература

  • Проектирование агентов Ambient AI: механизмы пробуждения, экономичный режим «сна» и безопасное пробуждение — как создавать агентов ИИ, работающих по событиям и экономно находящихся в режиме покоя: поэтапная обработка запросов перед вызовом модели, безопасное восстановление состояния после пробуждения, управление кризисными ситуациями и распределение ресурсов внимания.