Вашему ИИ-агенту не нужно быть умнее. Ему нужно быть идемпотентным

Большинство рабочих ИИ-агентов выходят из строя не из-за ошибок в рассуждениях. Они выходят из строя из-за сетевых ошибок.

Модель выбирает правильный инструмент. Она заполняет верные детали. А затем она дважды списывает деньги с клиента.

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

  • Запросы завершаются по таймауту.
  • Соединения разрываются.
  • Фреймворки повторяют шаги, которые уже были завершены.

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

Решение — идемпотентность.

Рассмотрим типичный сценарий сбоя:

  1. Агент вызывает функцию для отправки счета.
  2. Сервис создает счет.
  3. Соединение разрывается до того, как ответ доходит до агента.
  4. Агент фиксирует таймаут и повторяет попытку.
  5. Теперь у вас два счета.

Более умная модель это не исправит. Более умная модель может даже ухудшить ситуацию, если будет слишком агрессивно повторять попытки.

Можно поучиться у платежных систем, таких как Stripe. Они используют Idempotency-Key. Сервер сохраняет результат первого запроса. Если клиент снова отправляет тот же ключ, сервер возвращает сохраненный результат вместо повторного выполнения действия.

Для ИИ-агента этот ключ необходимо извлекать из намерения (intent).

Не используйте случайные ID. Используйте хеш от имени инструмента и его стабильных параметров.

Пример:

  • Tool: charge_customer
  • Params: {customer_id: 42, amount: 500}
  • Key: hash(tool + params)

Если агент повторит точно такое же списание, ключ останется прежним. Система распознает его и предотвратит дублирующее списание.

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

  • Если вы включите временную метку (timestamp) в хеш, каждая повторная попытка получит новый ключ. Защита перестанет работать.
  • Если вы включите тело сообщения, написанное LLM, модель может изменить всего одно слово. Это создаст новый ключ и приведет к дублированию действия.

Всегда используйте в качестве ключа стабильные данные, такие как ID клиента или ID счета. Исключайте всё, что модель может изменить.

Перестаньте пытаться повысить надежность агентов с помощью более качественных промптов.

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

Источник: https://dev.to/gs_sanjana_3e822112e14f8/your-ai-agent-doesnt-need-to-be-smarter-it-needs-to-be-idempotent-2736

Дополнительное сообщество для обучения: https://t.me/GyaanSetuAi