Local (.NET)

Microsoft.Agents.AI.LocalCodeAct executa código Python gerado em um processo filho no ambiente do agente. Ele fornece o padrão de provedor CodeAct sem exigir um runtime de convidado do Hyperlight.

Essa integração usa o padrão CodeAct e depende do ambiente do host para isolamento.

Aviso

O CodeAct local não é um sandbox de segurança. Execute-o somente quando um contêiner externo, uma máquina virtual ou um ambiente de hospedagem gerenciada fornecer isolamento de processo, sistema de arquivos, rede e credencial.

Instalar o pacote

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

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

Configure o provedor

Registre as ferramentas de host usando LocalCodeActProviderOptions. O código gerado pode chamar apenas essas ferramentas por meio de await call_tool(...). Aplique limites de execução ao runtime de subprocesso associado e à saída capturada.

            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())

Controles de defesa em profundidade

O CodeAct local fornece:

  • Validação de AST com importações e funções integradas permitidas e bloqueadas configuráveis.
  • Execução direta de subprocessos em Python sem invocar um shell.
  • Limites de tempo, saída, resultado e tamanho do arquivo capturado.
  • Registro explícito da ferramenta host.
  • Montagens de arquivo somente leitura e leitura/gravação.
  • Diretório de trabalho configurável e ambiente de subprocesso.

Esses controles reduzem o risco, mas não fornecem contenção. Mantenha a validação habilitada, passe um dicionário restrito de variáveis de ambiente, exponha um conjunto limitado de ferramentas do host e execute o processo dentro de um sandbox externo robusto.

Escolher um runtime do CodeAct

Tempo de execução Escolha-o quando
Hyperlight Você precisa de uma sandbox isolada com controles do sistema de arquivos e de rede.
Local CodeAct Seu agente de .NET já é executado dentro de um ambiente de área restrita externa.
Monty Você precisa de um interpretador restrito multiplataforma para agentes em Python.

Próximas Etapas