ADK用 Bash ツール¶
ExecuteBashTool を使用すると、ADK エージェントがローカル ワークスペース ディレクトリ内で Bash コマンドを実行できるようになります。このツールは、ファイル システムの操作、スクリプトの実行、またはエージェントを通じてローカル環境と直接相互作用するのに役立ちます。
このツールは Python ADK でのみ利用可能です。
インストール¶
Bash ツールは、コアの Agent Development Kit (ADK) にデフォルトで含まれています。個別の統合パッケージをインストールする必要はなく、メイン ライブラリをインストールするだけです。
エージェントでの使用¶
POSIX 専用
ExecuteBashTool は現在、Linux や macOS などの POSIX システムでのみサポート されています。Windows システムでこのツールを実行するとハードエラーが発生します。
Bash ツールを使用するには、ExecuteBashTool をインスタンス化し、エージェントの tools リストに含めます。スニペットを実行する前に my_workspace_path が有効なディレクトリ パス文字列として定義されていることを確認してください。
from google.adk.tools.bash_tool import ExecuteBashTool, BashToolPolicy
policy = BashToolPolicy(
allowed_command_prefixes=("ls", "cat", "grep"),
timeout_seconds=30,
max_memory_bytes=1024 * 1024 * 512, # 512MB
max_file_size_bytes=1024 * 1024 * 10, # 10MB
max_child_processes=5
)
tool = ExecuteBashTool(workspace=my_workspace_path, policy=policy)
セキュリティと実行保護機能¶
任意のコードを実行することには固有のリスクが伴うため、ExecuteBashTool には生成されたサブプロセスに適用されるいくつかの必須およびオプションのセキュリティ機能が含まれています。
デフォルトポリシーはすべてのコマンドを許可¶
デフォルトでは、BashToolPolicy は allowed_command_prefixes=("*",) で初期化されます。これは、デフォルトですべてのコマンドが許可されている ことを意味します。アプリケーションを保護するには、ポリシーを初期化するときに許可されるコマンドを明示的に制限する必要があります。
# セキュアな実装例
from google.adk.tools.bash_tool import BashToolPolicy
strict_policy = BashToolPolicy(
allowed_command_prefixes=("ls ", "cat ", "pwd")
)
組み込みの保護¶
- ユーザー確認: ツールはコマンドを実行する前に 常に ユーザー確認を要求します。フレームワークは実行を一時停止し、
adk_request_confirmationフローを通じてユーザーまたはクライアント アプリケーションがコマンドを承認するまで待機します。 - コマンド検証:
allowed_command_prefixesを使用して特定のコマンドを許可リストに追加し、blocked_operatorsを使用して特定の文字列パターンを厳格に禁止できます。 - リソース制限: フォークボムやメモリ枯渇を防ぐため、OS レベルの制限である
setrlimitが適用され、メモリ消費量、ファイルサイズ、および子プロセスの数が制限されます。 - コアダンプの無効化: 機密性の高いメモリリークを防ぐため、実行サブプロセスに対してコアダンプが厳格に無効化(
RLIMIT_COREが0に設定)されます。 - プロセスグループの終了: コマンドが
timeout_secondsを超えた場合、ツールはプロセスグループ全体にSIGKILLを発行し、孤立したバックグラウンドプロセスが残らないようにします。
利用可能なツール¶
| ツール名 | クラス名 | 説明 |
|---|---|---|
execute_bash |
ExecuteBashTool |
ワークスペース内で Bash コマンドを実行します。POSIX 専用 |