Local (.NET)

Microsoft.Agents.AI.LocalCodeAct exécute le code Python généré 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.

Avertissement

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

Enregistrer des outils d’hôte à l’aide de 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.

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

Contrôles de défense en profondeur

CodeAct local fournit :

  • Validation de l’AST avec configuration des imports et fonctions intégrées autorisés et bloqués.
  • Exécution directe de sous-processus Python sans invoquer de shell.
  • Limites de temps, de sortie, de résultat et de taille du fichier capturé.
  • 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. Activez la validation, transmettez un dictionnaire de variables d’environnement restreint, exposez un ensemble limité d’outils de l’hôte et exécutez le processus dans un bac à sable externe robuste.

Choisir un runtime CodeAct

Temps d’exécution Choisissez cette option lorsque
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