Microsoft.Agents.AI.LocalCodeActは、エージェントの環境内の子プロセスで生成されたPythonを実行します。 Hyperlight ゲスト ランタイムを必要とせずに CodeAct プロバイダー パターンを提供します。
この統合では CodeAct パターンが使用され、分離のためにホスト環境に依存します。
Warning
ローカル CodeAct は セキュリティ サンドボックスではありません。 外部コンテナー、仮想マシン、またはマネージド ホスティング環境がプロセス、ファイルシステム、ネットワーク、資格情報の分離を提供する場合にのみ実行します。
パッケージをインストールする
dotnet add package Microsoft.Agents.AI.LocalCodeAct --prerelease
パッケージには、明示的なPython実行可能パスが必要です。
プロバイダーの設定
LocalCodeActProviderOptionsを使用してホスト ツールを登録します。 生成されたコードは、 await call_tool(...)を介してこれらのツールのみを呼び出すことができます。 バインドされたサブプロセス ランタイムとキャプチャされた出力に実行制限を適用します。
new Dictionary<string, object> { ["id"] = 3, ["name"] = "Charlie", ["role"] = "admin" },
],
["products"] =
[
new Dictionary<string, object> { ["id"] = 101, ["name"] = "Widget", ["price"] = 9.99 },
new Dictionary<string, object> { ["id"] = 102, ["name"] = "Gadget", ["price"] = 19.99 },
],
};
return data.TryGetValue(table, out var rows) ? rows : [];
}
// ── 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 ───────────────────────────────────────────────────
// WARNING: DefaultAzureCredential is convenient for development but requires careful
// consideration in production. Consider a specific credential (for example
// ManagedIdentityCredential) to avoid latency, unintended credential probing, and
// fallback security risks.
AIAgent agent = new AIProjectClient(new Uri(endpoint), new DefaultAzureCredential())
多層防御の統制
Local CodeAct では、次の機能が提供されます。
- 設定可能な許可・禁止インポートおよび組み込み機能に対応した AST 検証
- シェルを呼び出さずにサブプロセスを直接実行Python。
- 時間、出力、結果、キャプチャされたファイル サイズの制限。
- 明示的なホスト ツールの登録。
- 読み取り専用および読み取り/書き込み可能のファイルマウント。
- 構成可能な作業ディレクトリとサブプロセス環境。
これらのコントロールはリスクを軽減しますが、封じ込めはありません。 検証を有効のままにし、制限付き環境ディクショナリを渡し、狭いホスト ツールを公開して、強力な外部サンドボックス内でプロセスを実行します。
CodeAct ランタイムを選択する
| ランタイム | 次の場合に選択します。 |
|---|---|
| Hyperlight | ファイルシステムとネットワーク制御を備えた分離サンドボックスが必要です。 |
| ローカルCodeAct | .NET エージェントは、外部サンドボックス環境内で既に実行されています。 |
| Monty | Pythonエージェントにはクロスプラットフォームの制限付きインタープリターが必要です。 |