AI News HubLIVE
站内改写2 分で読了

基本AIエージェントをゼロから構築:Human in the Loopとセキュリティ

AIエージェントに人間の監視メカニズムを導入し、ツールのリスク分類、許可モード、質問ツールを追加することで、自律性と安全性のバランスを取る方法を解説します。

ソースHacker News AI著者: ruxudev

このシリーズの前回までで、長期タスクを計画・実行できるAIエージェントを構築しました。しかし、自律性が高まるほどリスクも増大します:コマンドの無差別実行やファイル編集は、取り返しのつかない結果を招く可能性があります。そこで本稿では、Human in the Loop(人間の介在)メカニズムを導入し、自律性と安全性のバランスを図ります。

人間の介在の中核は、リスクの高い操作を実行する前に人間の許可を求めることです。ただし、すべてのツール呼び出しに同じレベルの審査は必要ありません。各操作が承認を要求すると煩雑で非効率になります。そこで、ツールをリスクに基づいて分類します:読み取り専用ツール(ファイル読み取りなど)と計画ツール(TODO更新など)は安全とみなし自動許可;書き込みツール(ファイル書き込みなど)とアクションツール(シェルコマンド実行、Webページ取得など)はデフォルトで人間の承認が必要です。

柔軟性を確保するため、3つの許可モードを定義します:デフォルトモードは読み取りと計画ツールのみ自動許可;編集受け入れモードはさらにカレントワーキングディレクトリ内へのファイル書き込みを自動許可;危険なスキップモードはすべての権限チェックを省略します。最後のモードは意図的に脅威的な名前としており、信頼できるサンドボックスや自動化環境でのみ使用すべきです。ユーザーはコマンドライン引数--modeでモードを選択し、ワーキングディレクトリを信頼境界として設定します。

実装では、check_permission関数がツール呼び出しの可否を判定します。まずツールが自動許可セットに含まれるか確認し、モードに応じて処理します。危険なスキップモードならすべて許可;編集受け入れモードで書き込みツールならパスがワーキングディレクトリ内かをチェック;それ以外は_ask_permission関数でユーザーに対話的に確認します。この関数はツール名と引数を表示し、ユーザーの入力(y/n)を待ちます。結果はエージェントにツール結果として返され、エージェントは行動を調整します。

さらに、エージェントが自発的に情報を求める手段として、ask_questionツールを追加しました。エージェントがタスク遂行に必要な情報を欠き、文脈から合理的に推測できない場合に、ユーザーに単一の質問を投げかけます。例えば、複数の設定ファイルから対象を特定する必要がある場合などです。このツールは真にブロックされた場合のみ使用すべきであり、進捗報告や既に実行可能な操作の確認には使いません。

権限チェックをツール実行パスに統合することで、各ツール呼び出し前に安全ゲートを通過するようになります。許可が拒否された場合、エージェントは明確なメッセージを受け取り、同じ操作を再試行しません。この設計により、エージェントは自律的に計画を進めつつ、人間の監視による安全策を備えることができます。テストでは、デフォルトモードでエージェントはファイル読み取りを自動実行し、ファイル書き込み時にはユーザーの承認を待つ動作が確認されました。

このアプローチは、機密データや潜在的に危険な操作を扱うタスクにおいて特に有効です。開発者は状況に応じて適切な許可モードを選択し、効率と安全性のトレードオフを最適化できます。