ローカル (.NET)

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エージェントにはクロスプラットフォームの制限付きインタープリターが必要です。

次のステップ