Microsoft.Agents.AI.LocalCodeAct는 에이전트 환경의 자식 프로세스에서 생성된 Python 실행합니다. Hyperlight 게스트 런타임을 요구하지 않고 CodeAct 공급자 패턴을 제공합니다.
이 통합은 CodeAct 패턴을 사용하고 격리를 위해 호스트 환경에 의존합니다.
Warning
로컬 CodeAct는 보안 샌드박스가 아닙니다. 외부 컨테이너, 가상 머신 또는 관리되는 호스팅 환경에서 프로세스, 파일 시스템, 네트워크 및 자격 증명 격리를 제공하는 경우에만 실행합니다.
패키지 설치
dotnet add package Microsoft.Agents.AI.LocalCodeAct --prerelease
패키지에는 명시적 Python 실행 경로가 필요합니다.
제공자 구성
를 통해 호스트 도구를 등록합니다 LocalCodeActProviderOptions. 생성된 코드는 .를 통해 await call_tool(...)해당 도구만 호출할 수 있습니다. 바인딩된 하위 프로세스 런타임 및 캡처된 출력에 실행 제한을 적용합니다.
// ── 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],
});
심층 방어 컨트롤
로컬 CodeAct는 다음을 제공합니다.
- 구성 가능한 허용 및 차단된 가져오기 및 기본 제공을 사용하는 AST 유효성 검사입니다.
- 셸을 호출하지 않고 하위 Python 직접 실행
- 시간, 출력, 결과 및 캡처된 파일 크기 제한입니다.
- 명시적 호스트 도구 등록.
- 읽기 전용 및 읽기/쓰기 파일 탑재
- 구성 가능한 작업 디렉터리 및 하위 프로세스 환경입니다.
이러한 컨트롤은 위험을 줄이지만 제약을 제공하지는 않습니다. 유효성 검사를 사용하도록 설정하고, 제한된 환경 사전을 전달하고, 좁은 호스트 도구를 노출하고, 강력한 외부 샌드박스 내에서 프로세스를 실행합니다.
CodeAct 런타임 선택
| Runtime | 선택 시기 |
|---|---|
| 하이퍼라이트 | 파일 시스템 및 네트워크 컨트롤이 있는 격리된 샌드박스가 필요합니다. |
| 로컬 CodeAct | .NET 에이전트는 이미 외부 샌드박스 환경 내에서 실행됩니다. |
| 몬티 (주) | Python 에이전트에 대해 플랫폼 간 제한된 인터프리터가 필요합니다. |