Вашому ШІ-агенту не потрібно бути розумнішим. Йому потрібно бути ідемпотентним.
Більшість робочих ШІ-агентів зазнають невдачі не через помилки в міркуваннях. Вони зазнають невдачі через мережеві помилки.
Модель обирає правильний інструмент. Вона заповнює правильні деталі. А потім вона двічі списує кошти з клієнта.
Це стається тому, що агенти з можливістю запису працюють у ненадійних мережах.
- Запити завершуються за тайм-аутом.
- З'єднання розриваються.
- Фреймворки повторюють кроки, які вже були завершені.
Для агента лише для читання повторна спроба є безкоштовною. Для агента з можливістю запису повторна спроба — це друга незворотна дія.
Рішення полягає в ідемпотентності.
Погляньте на цей поширений сценарій помилки:
- Агент викликає функцію для надсилання рахунку.
- Сервіс створює рахунок.
- З'єднання розривається до того, як відповідь досягне агента.
- Агент бачить тайм-аут і повторює спробу.
- Тепер у вас два рахунки.
Розумніша модель цього не виправить. Більш розумна модель може навіть погіршити ситуацію, ставши агресивнішою щодо повторних спроб.
Ви можете повчитися у платіжних систем, таких як Stripe. Вони використовують Idempotency-Key. Сервер зберігає результат першого запиту. Якщо клієнт знову надсилає той самий ключ, сервер повертає збережений результат замість того, щоб виконувати дію вдруге.
Для ШІ-агента ви повинні виводити цей ключ із наміру (intent).
Не використовуйте випадкові ID. Використовуйте хеш імені інструмента та його стабільних параметрів.
Приклад:
- Tool:
charge_customer - Params:
{customer_id: 42, amount: 500} - Key:
hash(tool + params)
Якщо агент повторює те саме списання, ключ залишається незмінним. Система розпізнає його та запобігає дублюванню списання.
Застереження: ваш ключ настільки ж надійний, наскільки надійним є ваше визначення однієї дії.
- Якщо ви включите мітку часу (timestamp) у свій хеш, кожна повторна спроба отримає новий ключ. Ваш захист не спрацює.
- Якщо ви включите текст повідомлення, написаний LLM, модель може змінити лише одне слово. Це створить новий ключ і дубльовану дію.
Завжди використовуйте для ключа стабільні дані, такі як ID клієнта або ID рахунку. Виключайте все, що модель може змінити.
Припиніть намагатися виправити надійність агента за допомогою кращих промптів.
Надійність полягає в тому, щоб зробити вартість повторного прийняття рішення нульовою. Якщо ваш агент виконує ту саму дію двічі, нічого не має зламатися.
Optional learning community: https://t.me/GyaanSetuAi
