Промпт для чата и промпт для агента решают разные задачи, даже когда их пишет один и тот же человек. В чате модель отвечает и возвращает ход вам. Агент сам выбирает следующий шаг, поэтому ошибку в промпте он повторяет без вашего участия, шаг за шагом.
Чат и агентный цикл: в чём разница
В чате неточная формулировка стоит одного неидеального ответа. Вы поправили, модель уточнила, разговор пошёл дальше.
В агентном цикле модель перечитывает свой промпт на каждой итерации: перед вызовом инструмента, после его результата, перед следующим решением. Разовых ошибок здесь не бывает. Неточность в системном промпте умножается на число шагов. Агент, который слегка не так понял задачу, за десять шагов уйдёт от цели заметно дальше, чем собеседник в чате за одну реплику.
Вывод простой, хотя интуиция подсказывает обратное: для агента формулировка важнее, чем для чата.
Опишите цель, а не сценарий по шагам
Многие пишут агенту подробный перечень шагов, как для скрипта. Пока всё идёт по плану, это работает. Но стоит чему-то пойти иначе (файл не нашёлся, тест упал, API вернул неожиданный формат), и жёсткая инструкция бессильна: агент либо застревает, либо действует наугад.
Лучше описать цель и критерий успеха. Что должно быть верно в конце, а не какими командами к этому прийти. «Все тесты в пакете проходят» работает лучше, чем «запусти команду X, потом Y, потом Z». Шаги агент подберёт сам, а если один путь не сработает, попробует другой, не выходя за рамки цели.
Ограничения весят больше, чем возможности
В промпте для чата вы описываете, что модель умеет. В промпте для агента важнее сказать, чего ей делать нельзя.
Если не оговорить иначе, агент с доступом к инструментам может удалить файл, обратиться к внешнему сервису или потратить бюджет на цепочку из тридцати вызовов. Одних прав доступа мало. Границы нужно прописать прямо в промпте: какие файлы не трогать, какие действия требуют подтверждения, какой объём работы считать разумным для одной задачи.
Проверка простая: перечитайте промпт и спросите себя, что не даст агенту зайти туда, куда вы не собирались. Ответа нет? Значит, ограничения только подразумеваются, а не описаны.
Без условия остановки не обойтись
У чата остановка встроена: модель ответила, ход перешёл к пользователю. У агента такого тормоза нет. Без явного условия он продолжит попытки, пока не упрётся в лимит по числу шагов или по токенам, да и то если лимит вообще выставлен в коде.
Заложите в промпт условия завершения: когда задача считается выполненной, когда остановиться и спросить пользователя, а когда бросить попытки и сообщить о неудаче. Последний пункт особенно важен. Агент, который не справляется с задачей, иначе будет пробовать снова и снова, а каждая попытка стоит токенов.
Как описывать инструменты для агента
Инструмент входит в промпт не меньше, чем системная инструкция. Название и описание задают модели ожидание, когда его вызывать, и плохое описание вызывает неверные обращения так же, как плохая инструкция.
Правило здесь простое. Описание должно без домыслов отвечать на три вопроса: что инструмент делает, какие параметры обязательны, что вернётся при ошибке. Если сбоев бывает несколько видов, опишите каждый отдельно. Иначе агент обработает любую ошибку одинаково, и часто неверно.
Типичные ошибки агентных промптов
Промпт, перенесённый из чат-бота без доработки, редко годится: в нём нет условий остановки и ограничений, ведь в чате они были не нужны.
Слишком общая цель без критерия успеха оставляет агенту гадать, когда он закончил. Он либо останавливается рано, либо работает сверх необходимого.
Нет бюджета по шагам или токенам в самом промпте? Это частая причина неожиданно долгих и дорогих запусков. Укажите разумный лимит попыток и привяжите к нему условие остановки.
Итог
Чат читает промпт один раз, агент на каждом шаге. Поэтому цель и критерий успеха важнее пошагового сценария, ограничения важнее перечня возможностей, а условие остановки входит в промпт обязательно. Без него цена ошибки растёт с каждой лишней итерацией.