AIエージェント活用実践編安全性・コスト・監査

Audit log と human override

無料公開レッスン / 読了目安 7


学習のねらい

Agentが自律的に動作するシステムでは、その行動の透明性と制御性が重要です。特に、Agentが外部ツールを呼び出したり、重要な意思決定を行ったりする場合、後からその行動を検証できる仕組みと、人間の介入を可能にする仕組みが不可欠です。

本レッスンでは、Agentの全ての活動を記録する**Audit log(監査ログ)の重要性とそのフォーマット、そして高リスク操作に対するHuman override(人間による介入、承認)**の仕組みについて学びます。

Audit log の重要性

**Audit log(監査ログ)**は、システム内で発生した重要なイベントやAgentの行動履歴を時系列で記録したものです。Agentの場合、LLM(大規模言語モデル)への各呼び出し、ツール利用、意思決定の過程などを詳細に記録します。

Audit log の主な目的

  • 事後分析: Agentが予期せぬ動作をしたり、エラーが発生したりした場合に、ログを分析して原因を特定できます。
  • セキュリティ監査: 不正アクセスやデータ漏洩の疑いがある場合に、Agentの行動履歴を追跡し、セキュリティインシデントの調査に役立てます。
  • パフォーマンス分析: Agentのどのステップで時間がかかっているか、どのツールが頻繁に利用されているかなどを分析し、性能改善に活用します。
  • コンプライアンス: 規制要件や社内ポリシーに基づき、システムの透明性と説明責任を果たすために必要です。
  • デバッグ: 開発中にAgentの挙動が意図通りかを確認したり、問題のあるプロンプトやツール呼び出しを特定したりするために利用します。

全 LLM call をログ化する

Agentの監査ログで最も重要なのは、全てのLLM呼び出しとその応答を記録することです。これにより、Agentが何を考え、何を判断したかの「思考プロセス」を後から追跡できます。

ログに含めるべき情報

LLM呼び出しのログには、少なくとも以下の情報を含めるようにしましょう。

  • タイムスタンプ: 呼び出しが発生した日時。
  • リクエスト ID: 各呼び出しを一意に識別するID。
  • モデル名: 利用したLLMモデルの名前 (例: claude-3-sonnet-20240229)。
  • 入力プロンプト: LLMに送信したSystem PromptとUser Promptの内容。
  • 出力: LLMからの応答内容。
  • トークン消費量: 入力トークン数と出力トークン数。
  • 推定コスト: その呼び出しにかかった推定費用。
  • ツール呼び出し情報: ツールを呼び出した場合、そのツール名、引数、ツールの実行結果。
  • Agentの状態: 呼び出し時点でのAgentの内部状態や、次に取るべき行動の判断 (Reasoning)。

これらの情報をJSONL (JSON Lines) 形式でファイルに書き出すと、後から検索・分析しやすくなります。

{"timestamp": "2023-10-27T10:00:01Z", "request_id": "req_abc123", "model": "claude-3-sonnet", "type": "llm_call", "input": {"system": "あなたはアシスタントです。", "user": "今日の天気は?"}, "output": "今日の天気は晴れです。", "tokens": {"input": 10, "output": 5}, "cost": 0.0001, "agent_state": {"step": 1, "goal": "天気予報"}}
{"timestamp": "2023-10-27T10:00:05Z", "request_id": "req_def456", "model": "none", "type": "tool_call", "tool_name": "get_weather", "args": {"location": "Tokyo"}, "result": {"temperature": 25, "condition": "Sunny"}, "agent_state": {"step": 2, "goal": "天気予報"}}

Human override (人間による介入)

Agentの自律性が高まると、特に高リスクな操作(例: データベースの書き換え、外部システムへの大規模なデータ送信、金銭取引)を行う際に、人間の最終的な承認が必要となる場合があります。これが**Human override(人間による介入)**です。

高リスク操作の事前承認

Agentが高リスクな操作を実行しようとする前に、一時停止し、人間の承認を待つ仕組みを導入します。

  • 承認フロー: Agentが承認を要求するメッセージ (例: 「以下のデータベースを更新しようとしています。承認しますか?[Yes/No]」) をSlackやメール、Web UIなどで送信します。
  • 実行のブロック: 人間が承認するまで、Agentはその操作を実行しないようにブロックされます。
  • タイムアウト: 一定時間内に承認が得られない場合、操作はキャンセルされるか、デフォルトの安全な行動に戻るように設定します。

この仕組みにより、Agentの暴走や誤操作による重大な被害を防ぎ、安全性を高めることができます。

まとめ

Agentの運用において、監査ログと人間による介入は、システムの安全性、信頼性、透明性を確保するために不可欠です。全てのLLM呼び出しとツール利用を詳細な監査ログとして記録し、高リスクな操作には人間による事前承認のステップを設けることで、Agentをより安全に、そして安心して活用できるでしょう。

参考リンク


Audit log と human override | AIエージェント活用実践編 第1章 - AI研修