Local (.NET)

Microsoft.Agents.AI.LocalCodeActexecuta Python gerado num processo filho no ambiente do agente. Fornece o padrão de fornecedor CodeAct sem exigir um runtime de convidado Hyperlight.

Esta integração utiliza o padrão CodeAct e depende do ambiente hospedeiro para isolamento.

Warning

O CodeAct local não é um sandbox de segurança. Execute-o apenas quando um contentor externo, máquina virtual ou ambiente de alojamento gerido forneça isolamento de processos, sistema de ficheiros, rede e credenciais.

Instale o pacote

dotnet add package Microsoft.Agents.AI.LocalCodeAct --prerelease

O pacote requer um caminho executável explícito em Python.

Configurar o fornecedor

Registar ferramentas de host através de LocalCodeActProviderOptions. O código gerado só pode chamar essas ferramentas através de await call_tool(...). Aplicar limites de execução ao tempo de execução dos subprocessos e à saída capturada.

// ── 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],
    });

Controlos de defesa em profundidade

O Código Local prevê:

  • Validação AST com importações e incorporações configuráveis permitidas e bloqueadas.
  • Execução direta de subprocessos em Python sem invocar um shell.
  • Limitações de tempo, saída, resultado e tamanho do ficheiro capturado.
  • Registo explícito da ferramenta host.
  • Montagens de ficheiros apenas de leitura e leitura-escrita.
  • Ambiente de diretório e subprocesso de trabalho configurável.

Estes controlos reduzem o risco, mas não proporcionam contenção. Mantenha a validação ativada, passe um dicionário de ambiente restrito, expõe ferramentas de host estreitas e execute o processo dentro de um sandbox externo forte.

Escolha um tempo de execução CodeAct

Runtime Escolhe-o quando
Hiperluz Precisas de um sandbox isolado com controlos de sistema de ficheiros e rede.
Local CodeAct O teu agente .NET já corre dentro de um ambiente sandbox externo.
Monty Precisas de um interpretador restrito multiplataforma para agentes Python.

Passos seguintes