実践におけるAIエージェント:トレースから失敗を読み解く
AIエージェントはクラッシュしません。成功したと報告します。しかし、銀行口座には間違いが残っています。
キャンセルされていない注文に対して返金が行われてしまいました。顧客は商品と現金の両方を手に入れています。エージェントは、自分の仕事をやり遂げたと考えていました。
より大きなモデルに頼ってはいけません。単にリトライループを追加するだけでもいけません。どちらも推測に過ぎないからです。
代わりに、トレースを読みましょう。エージェントは、自分が何をしたかをすでに記録しています。
優れたプロダクション環境のトレースは、ループをステップごとに記録します。以下の内容を含める必要があります:
- エージェントが何を観測したか
- 何を決定したか
- どのツールを呼び出したか
- ツールが何を返したか
- ソース・オブ・トゥルース(信頼できる情報源)からの検証読み取り
- 最終的な状態とコスト
最も重要なのは、ツールのレスポンスと検証読み取りの間の「ギャップ」です。ツールが「accepted(受理)」と言ったとしても、それが必ずしも世界の状態が変わったことを意味するわけではありません。検証読み取りを行うことで、変更が実際に発生したかどうかを確認できるのです。
失敗は通常、次の2つのグループに分類されます:
- 実行の失敗 (Execution Failures)
- ツールの失敗:不正な引数やタイムアウト。
- 推論の失敗:モデルが誤ったアクションを選択した。
- コントロール状態の失敗:エージェントが「嘘」を信じてしまう。データベースがそうでないと言っていても、ツールがそう言ったからという理由で、注文がキャンセルされたと思い込む。
- 構造的なループの失敗 (Structural Loop Failures)
- コンテキストの劣化:エージェントが文脈を見失う。
- ループの暴走:エージェントが進展なくステップを繰り返す。
- サイレント・ストール(静かな停止):エラーを出さずにエージェントが停止する。沈黙を失敗として扱うためのウォッチドッグ(監視役)が必要です。
失敗を見つけたとき、ただリトライするだけではいけません。リトライは戦略であって、診断ではありません。
- タイムアウトのような一時的なエラーであれば、リトライしてください。
- ロジックのエラーであれば、リトライしても同じ壁にぶつかるために予算を浪費するだけです。
- エージェントがブロッカ(障害)に直面した場合は、停止して人間に報告させてください。
失敗を修正する最善の方法は、それを「テスト」に変えることです。
トレースを利用して、グレーダー(評価器)を書きましょう。もしエージェントがキャンセルの検証に失敗したのなら、「キャンセル状態が確認されていないのに返金が行われた場合に失敗するテスト」を作成してください。コストを支払って発生した失敗を、二度とコストを支払わなくて済む失敗へと変えるのです。
オプションの学習コミュニティ: https://t.me/GyaanSetuAi
