Паттерн PRG для ИИ-агентов

ИИ-агенты повторяют ошибку 25-летней давности.

В 90-х у веб-форм был серьезный баг. Пользователь оформлял заказ, нажимал «обновить», и браузер отправлял заказ повторно. Это приводило к двойному списанию средств и разгневанному клиенту.

Решением стал паттерн Post/Redirect/Get (PRG). Он работает так:

  • Пользователь отправляет POST-запрос для передачи данных.
  • Сервер обрабатывает данные.
  • Сервер отправляет редирект на новый URL.
  • Браузер выполняет GET-запрос, чтобы показать результат.

Если пользователь нажмет «обновить», он повторит только GET-запрос. Опасный POST-запрос исчезает.

ИИ-агенты вернули этот баг.

Когда агент вызывает инструмент для списания средств с карты или создания записи, соединение может оборваться. Агент не знает, прошла ли операция. Он пробует снова. В итоге у клиента два списания.

Это можно исправить с помощью ключей идемпотентности. Ключ идемпотентности работает подобно редиректу. Он отделяет «выполнение действия» от «показа результата».

Паттерн для агентов должен выглядеть так:

  • Агент генерирует уникальный ключ перед первой попыткой.
  • Он использует стабильное значение, например, ID пользователя и ID корзины.
  • Он отправляет этот ключ при каждом вызове инструмента.
  • Сервер проверяет ключ. Если он видит тот же ключ снова, он возвращает предыдущий результат вместо повторного выполнения действия.

Для длительных задач одного ключа недостаточно. Вам нужен чекпоинтинг. Вы должны сохранять состояние на каждом шаге. Это гарантирует, что после перезапуска процесс продолжится с того места, где он остановился.

Следуйте этим правилам для любого инструмента агента, который изменяет данные:

  • Каждый инструмент, изменяющий данные (mutating tool), должен принимать ключ идемпотентности.
  • Выводите ключ из намерения пользователя, а не из временной метки.
  • Генерируйте ключ перед первой попыткой.
  • Используйте один и тот же ключ при каждой повторной попытке.
  • Для длительных задач делайте чекпоинты на каждом промежуточном этапе.

Слой меняется, но логика остается прежней.

Source: https://dev.to/ravikiran438/the-prg-pattern-for-ai-agents-a-25-year-old-fix-coming-of-age-in-a-new-era-23fh

Optional learning community: https://t.me/GyaanSetuAi