エージェントが暴走したとき、どのエージェントがそれを行ったか分かりますか?
エージェントが、触れてはいけないレコードを削除する。誤ったテナントにメッセージを送信する。APIをループで呼び出し、請求額を急騰させる。
インシデント発生から10分後、あなたは一つの疑問を抱きます。「どのエージェントがこれをやったのか?」
もし分からなければ、修正もできません。ビルドを止めることも、エラーを監査することも、失敗から学ぶこともできません。
これはアイデンティティの問題です。
ほとんどのチームは、エージェントの動作を隠蔽してしまう3つのパターンに直面しています。
- 共有サービスアカウント:10個のエージェントが1組の認証情報を使用している。ログ上では、すべての動作が同じに見える。
- 人間の認証情報:エージェントがあなたのログイン情報を使用している。ログにはエージェント名ではなく、あなたの名前が表示される。これは重大なセキュリティリスクを生みます。
- サイレント・ドリフト(静かな乖離):2つの異なるビルドが同じ名前を使用している。一方は新しいモデルや新しいプロンプトを使用しているが、ログには同じアイデンティティが表示される。
これを解決するには、以下の手順に従ってください。
すべてのエージェントに独自のアイデンティティを与える。 人間の認証情報や共有アカウントを使用しないでください。エージェントは自分自身として認証される必要があります。
すべての動作に、以下の6つの特定のフィールドを刻印する:
- Accountable party(責任主体):このエージェントの責任者は誰か?
- Operational owner(運用責任者):日常的なメンテナンスを行うのは誰か?
- Tenant(テナント):どの顧客のためのものか?
- Agent-type-id(エージェント・タイプID):どの特定のビルドか?
- Agent-instance-id(エージェント・インスタンスID):どの特定の実行か?
- Trace context(トレース・コンテキスト):コールチェーンのどこに位置するか?
バージョニングにはハッシュを使用する。 エージェントに "support-agent-v2" といった名前を付けないでください。システムプロンプトを変更しても名前は変わりませんが、動作は変わります。代わりに、コンテンツハッシュを使用してください。コンテナイメージ、プロンプト、モデル、および設定に基づいてハッシュを作成します。コードを1行変更するだけでIDが変わるため、サイレント・ドリフトが可視化されます。
リネージ(系統)を記録する。 エージェントはサブエージェントを生成します。どの親エージェントがサブエージェントを開始したのかを記録しなければなりません。また、親がサブエージェントに与えたプロンプトも記録する必要があります。これが、注入された指示や汚染されたデータを見つける唯一の方法です。
アイデンティティは、リカバリの基盤です。それによってキルスイッチの使用や監査トレイルの構築が可能になります。インシデントが発生する前にこれを設定しておく必要があります。危機に陥ってからアイデンティティを追加しても遅すぎます。
今すぐログを確認してください。1時間前の動作を見てください。その動作を行った特定のビルドの名前を挙げられますか?もし挙げられないのであれば、埋めるべきギャップが存在しています。
Source: https://dev.to/brennhill/when-your-agent-does-something-bad-can-you-tell-which-agent-did-it-37a2
Optional learning community: https://t.me/GyaanSetuAi
