Local (.NET)

Microsoft.Agents.AI.LocalCodeActs'exécute Python générées dans un processus enfant dans l'environnement de l'agent. Il fournit le modèle de fournisseur CodeAct sans nécessiter de runtime invité Hyperlight.

Cette intégration utilise le modèle CodeAct et s’appuie sur l’environnement hôte pour l’isolation.

Warning

CodeAct local n’est pas un bac à sable de sécurité. Exécutez-le uniquement lorsqu’un conteneur externe, une machine virtuelle ou un environnement d’hébergement managé fournit un processus, un système de fichiers, un réseau et une isolation des informations d’identification.

Installer le package

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

Le package nécessite un chemin d’accès exécutable Python explicite.

Configurez le fournisseur

Inscrire des outils hôtes via LocalCodeActProviderOptions. Le code généré peut appeler uniquement ces outils via await call_tool(...). Appliquez des limites d’exécution au runtime de sous-processus lié et à la sortie capturée.

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

Contrôles de défense en profondeur

CodeAct local fournit :

  • Validation AST avec des importations autorisées et bloquées configurables et intégrées.
  • Direct Python exécution de sous-processus sans appeler un interpréteur de commandes.
  • Limites de taille de fichier de temps, de sortie, de résultat et de capture.
  • Inscription explicite de l’outil hôte.
  • Montages de fichiers en lecture seule et en lecture-écriture.
  • Répertoire de travail configurable et environnement de sous-processus.

Ces contrôles réduisent les risques, mais ne fournissent pas de confinement. Conservez la validation activée, transmettez un dictionnaire d’environnement restreint, exposez des outils hôtes étroits et exécutez le processus à l’intérieur d’un bac à sable externe fort.

Choisir un runtime CodeAct

Runtime Choisissez-le quand
Hyperlight Vous avez besoin d’un bac à sable isolé avec le système de fichiers et les contrôles réseau.
Local CodeAct Votre agent .NET s’exécute déjà à l’intérieur d’un environnement bac à sable externe.
Monty Vous avez besoin d’un interpréteur restreint multiplateforme pour les agents Python.

Étapes suivantes