Local (.NET)

Microsoft.Agents.AI.LocalCodeAct ejecuta código Python generado en un proceso hijo dentro del entorno del agente. Proporciona el patrón de proveedor CodeAct sin necesidad de un entorno de ejecución de invitado de Hyperlight.

Esta integración usa el patrón CodeAct y se basa en el entorno de host para el aislamiento.

Warning

Local CodeAct no es un sandbox de seguridad. Ejecútelo solo cuando un contenedor externo, una máquina virtual o un entorno de hospedaje administrado proporcione el proceso, el sistema de archivos, la red y el aislamiento de credenciales.

Instalar el paquete

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

El paquete requiere una ruta explícita al ejecutable de Python.

Configurar el proveedor

Registre las herramientas del host a través de LocalCodeActProviderOptions. El código generado solo puede llamar a esas herramientas a través de await call_tool(...). Aplique límites de ejecución al tiempo de ejecución de subproceso enlazado y a la salida 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 defensa en profundidad

CodeAct local proporciona:

  • Validación de AST con importaciones y elementos integrados permitidos y bloqueados configurables.
  • Ejecución directa de subprocesos de Python sin invocar el shell.
  • Límites de tiempo, salida, resultado y tamaño de archivo capturado.
  • Registro explícito de la herramienta host.
  • Montajes de archivos en modo de solo lectura y de lectura y escritura.
  • Directorio de trabajo configurable y entorno de subproceso.

Estos controles reducen el riesgo, pero no proporcionan contención. Mantenga habilitada la validación, proporcione un diccionario de entorno restringido, exponga solo herramientas de host limitadas y ejecute el proceso dentro de un entorno aislado externo robusto.

Elección de un entorno de ejecución de CodeAct

Runtime Elíjalo cuando
Hyperlight Necesita un espacio aislado con controles de red y sistema de archivos.
Acto de código local El agente de .NET ya se ejecuta dentro de un entorno aislado externamente.
Monty Necesita un intérprete restringido multiplataforma para agentes de Python.

Pasos siguientes