Агент не может легко отменить свои действия, и это ломает архитектуру задач

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

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

Архитектура транзакций для инструментов

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

Второй подход — дать агенту явный инструмент отката: модель может вызвать 'undo_last_action', и система вернёт состояние на один шаг назад. Этот инструмент работает, только если все предыдущие изменения логировались и могут быть обратены. Это требует значительной инфраструктуры, но на критичных процессах это окупается.

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