AIエージェントに求められるのは、より高い知能ではない。冪等性(べきとうせい)である。

実用化されているAIエージェントの多くは、推論の誤りによって失敗するのではない。ネットワークエラーによって失敗するのだ。

モデルは正しいツールを選択し、正しい詳細情報を入力する。しかし、その結果、顧客に二重に課金してしまう。

これは、書き込み権限を持つエージェントが、信頼性の低いネットワーク上で動作しているために起こる。

  • リクエストのタイムアウト。
  • 接続の切断。
  • フレームワークが、すでに完了したステップを再試行する。

読み取り専用のエージェントであれば、再試行のコストはゼロだ。しかし、書き込み可能なエージェントにとって、再試行は「取り返しのつかない2度目のアクション」を意味する。

解決策は、冪等性(idempotency)である。

よくある失敗例を見てみよう:

  1. エージェントが請求書を送るための関数を呼び出す。
  2. サービスが請求書を作成する。
  3. レスポンスがエージェントに届く前に、接続が切れる。
  4. エージェントはタイムアウトを検知し、再試行する。
  5. その結果、請求書が2枚発行されてしまう。

より賢いモデルにしたところで、これは解決しない。むしろ、再試行をより積極的に行うことで、かえって状況を悪化させる可能性さえある。

Stripeのような決済システムから学ぶことができる。彼らは「Idempotency-Key」を使用している。サーバーは最初のリクエストの結果を保存する。クライアントが同じキーを再度送信した場合、サーバーはアクションを2回実行する代わりに、保存された結果を返す。

AIエージェントの場合、このキーは「意図(intent)」から導き出さなければならない。

ランダムなIDを使用してはいけない。ツールの名前と、その安定したパラメータのハッシュ値を使用するのだ。

例:

  • ツール: charge_customer
  • パラメータ: {customer_id: 42, amount: 500}
  • キー: hash(tool + params)

エージェントが全く同じ課金を再試行した場合、キーは同じままとなる。システムはそれを認識し、二重課金を防止する。

注意点として、キーの有効性は「単一のアクション」をどう定義するかによって決まる。

  • ハッシュにタイムスタンプを含めると、再試行のたびに新しいキーが生成されてしまう。これでは保護機能が機能しない。
  • LLMが作成したメッセージ本文を含めると、モデルがたった一言を変えただけで新しいキーが生成され、アクションが重複してしまう。

常に、顧客IDや請求書IDのような安定したデータに基づいてキーを作成すること。モデルが変更する可能性のあるものは除外せよ。

プロンプトを改善することでエージェントの信頼性を高めようとするのは、もうやめよう。

信頼性とは、繰り返された決定のコストをゼロにすることである。エージェントが同じアクションを2回実行したとしても、何も壊れてはならない。

Source: https://dev.to/gs_sanjana_3e822112e14f8/your-ai-agent-doesnt-need-to-be-smarter-it-needs-to-be-idempotent-2736

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