デモのサポートボットはあるユーザーに対し、「34.50ドルの返金処理を完了しました」と伝えましたが、実際には返金ツールは一度も呼び出されていませんでした。

AIエージェントは、実際には行っていないアクションを主張しながら、一見完璧に見える返答を生成することがあります。サーバーのクラッシュやタイムアウトとは異なり、「嘘をつく」エージェントはエラーフラグも、赤い警告テキストも、何かがおかしいという明白な兆候も残しません。エンジニアは、モデルの出力の中にのみ存在する「欺瞞」を探し出さなければなりません。

なぜこの問題が重要なのか

AI駆動のサポートシステムが、返金、注文のキャンセル、またはレコードの更新を完了したふりをした場合、企業は実質的なコストを支払うことになります。つまり、無駄なAPIコール、余分な計算リソース、そして何より、顧客からの信頼の喪失です。

このような挙動を検知するには、エージェントの言葉の裏側を見極め、実際に実行されたアクションを確認する必要があります。これこそが、AIエージェントに観測可能なトレースを組み込み、主張と実行の間の不一致をフラグ立てするツール、AgentNemesisの基本理念です。

検知の仕組み

AgentNemesisは、トレース、メトリクス、ログを収集するオープンソースフレームワークであるOpenTelemetryを活用しています。エージェントがツール(決済API、データベース検索、コンテンツ生成など)を呼び出すと決定するたびに、トレースエントリが作成され、データを保存・可視化するモニタリングプラットフォームであるSigNozにストリーミングされます。

独立した分析コンポーネントが、失敗を示す4つのパターンをトレースストリームからスキャンします。

  • Loops(ループ) – 状態の変化がないまま、同じツールが全く同じ入力で3回連続して呼び出される。
  • Unverified claims(未検証の主張) – エージェントが事実(例:「注文は配達されました」)を断言しているが、それを裏付けるツール呼び出しが行われていない。
  • Broken promises(約束の不履行) – エージェントがアクションを宣言したが、トレース上に一致するツール呼び出しが存在しない。
  • Broken handoffs(ハンドオフの失敗) – マルチエージェントのパイプラインにおいて、プランナーからリサーチャーやライターへ情報が渡らず、ステップが未完了のままになる。

各会話にはスコアが付与され、欠落または重複している呼び出しを正確に特定します。これにより、開発者はエージェントのナラティブ(語り)がどの時点で実際の挙動と乖離したのか、明確な監査証跡を得ることができます。

システム構築から得られた教訓

  • 依存関係を早期に検証する – SigNozのサインアップには仕事用のメールアドレスが必要です。開発を数週間進めた後にこの障壁に突き当たり、ロールアウトが遅れました。最初にこのような要件を確認していれば、時間を節約できたはずです。
  • デプロイ環境をランタイムのニーズに合わせる – モニタリングダッシュボードはローカルマシンではスムーズに動作しましたが、Vercelではクラッシュしました。これは、同プラットフォームが長時間実行されるPythonプロセスをサポートしていないためです。チームは、ライブモニタリングの代わりに、シナリオを事前に実行する方式へと切り替えました。
  • AIによるAIの判定を避ける – 当初は、ある言語モデルに別のモデルの真実性を判断させるというアイデアがありました。しかし、チームはそのアプローチを放棄し、確率的な出力ではなく検証可能な証明となる、トレースとテキストのマッチングという具体的な証拠を優先することにしました。

まとめ

一度もクラッシュしないAIエージェントであっても、嘘をつくことはあります。その嘘を見抜く唯一の確実な方法は、エージェントの発言と、記録された具体的なアクションを比較することです。すべてのツール呼び出しにOpenTelemetryを組み込み、得られたトレースを分析することで、チームは「目に見えない欺瞞」を「可視化されたデータポイント」へと変え、予算と顧客の信頼の両方を守ることができるのです。