Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Microsoft.Agents.AI.LocalCodeAct executa código Python gerado num processo filho no ambiente do agente. Fornece o padrão CodeAct provider sem exigir um ambiente de execução guest 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.
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())
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 sistemas de ficheiros em modo só de leitura e de leitura e 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, exponha um conjunto limitado de ferramentas do anfitrião e execute o processo dentro de uma sandbox externa robusta.
Escolha um ambiente de execução do CodeAct
| Tempo de execução | 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. |