Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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. |