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