Microsoft.Agents.AI.LocalCodeActは、エージェントの環境内の子プロセスで生成されたPythonを実行します。 Hyperlight ゲスト ランタイムを必要とせずに CodeAct プロバイダー パターンを提供します。
この統合では CodeAct パターンが使用され、分離のためにホスト環境に依存します。
Warning
ローカル CodeAct は セキュリティ サンドボックスではありません。 外部コンテナー、仮想マシン、またはマネージド ホスティング環境がプロセス、ファイルシステム、ネットワーク、資格情報の分離を提供する場合にのみ実行します。
パッケージをインストールする
dotnet add package Microsoft.Agents.AI.LocalCodeAct --prerelease
パッケージには、明示的なPython実行可能パスが必要です。
プロバイダーの設定
LocalCodeActProviderOptionsを使用してホスト ツールを登録します。 生成されたコードは、 await call_tool(...)を介してこれらのツールのみを呼び出すことができます。 バインドされたサブプロセス ランタイムとキャプチャされた出力に実行制限を適用します。
// ── LocalCodeAct provider with sandbox-only host tools ───────────────────────
var codeActOptions = new LocalCodeActProviderOptions
{
Tools =
[
AIFunctionFactory.Create(Compute, name: "compute"),
AIFunctionFactory.Create(FetchData, name: "fetch_data"),
],
ExecutionLimits = new ProcessExecutionLimits { TimeoutSeconds = 5 },
};
var codeAct = new LocalCodeActProvider(pythonExecutable, codeActOptions);
// ── Build the hosted agent ───────────────────────────────────────────────────
AIAgent agent = new AIProjectClient(new Uri(endpoint), credential)
.AsAIAgent(new ChatClientAgentOptions
{
Name = Environment.GetEnvironmentVariable("AGENT_NAME") ?? "hosted-local-codeact",
Description = "Hosted CodeAct agent with sandbox-only compute and fetch_data tools.",
ChatOptions = new ChatOptions
{
ModelId = deploymentName,
Instructions =
"""
You are a helpful assistant. Keep your answers brief. Prefer orchestrating your work
in a single `execute_code` block using `await call_tool(...)` over issuing many
direct tool calls. The sandbox exposes `compute` and `fetch_data` via `call_tool`.
""",
},
AIContextProviders = [codeAct],
});
多層防御コントロール
Local CodeAct では、次の機能が提供されます。
- 構成可能な許可およびブロックされたインポートと組み込みを使用した AST 検証。
- シェルを呼び出さずにサブプロセスを直接実行Python。
- 時間、出力、結果、キャプチャされたファイル サイズの制限。
- 明示的なホスト ツールの登録。
- 読み取り専用および読み取り/書き込みのファイル マウント。
- 構成可能な作業ディレクトリとサブプロセス環境。
これらのコントロールはリスクを軽減しますが、封じ込めはありません。 検証を有効のままにし、制限付き環境ディクショナリを渡し、狭いホスト ツールを公開して、強力な外部サンドボックス内でプロセスを実行します。
CodeAct ランタイムを選択する
| Runtime | 次の場合に選択します。 |
|---|---|
| Hyperlight | ファイルシステムとネットワーク制御を備えた分離サンドボックスが必要です。 |
| ローカル CodeAct | .NET エージェントは、外部サンドボックス環境内で既に実行されています。 |
| Monty | Pythonエージェントにはクロスプラットフォームの制限付きインタープリターが必要です。 |