하이퍼라이트 CodeAct

Hyperlight는 에이전트 프레임워크의 CodeAct에 대해 현재 문서화된 백 엔드입니다. 격리된 샌드박스 런타임에 의해 지원되는 execute_code 도구를 노출하며, call_tool(...)을 통해 공급자 소유의 호스트 도구를 호출할 수 있습니다.

패턴 수준 개요는 CodeAct를 참조하세요.

하이퍼라이트 CodeAct가 왜

최신 에이전트는 종종 모델 자체보다 도구 호출 오버헤드에 의해 더 제한됩니다. 데이터를 읽고, 가벼운 계산을 수행하고, 결과를 어셈블하는 작업은 각 개별 단계가 간단한 경우에도 모델 체인인> 도구 -> 모델 -> 도구 상호 작용으로 쉽게 전환할 수 있습니다.

하이퍼라이트가 후원하는 CodeAct는 해당 루프를 중단합니다. 모델은 하나의 짧은 Python 프로그램을 작성하고, 샌드박스는 이를 한 번 실행하며, 공급자 소유의 도구는 call_tool(...)을 통해 샌드박스 내부에서 접근됩니다. 대표적인 도구가 많은 워크로드에서 이러한 전환은 실행을 격리하고 감사 가능한 상태로 유지하면서 대기 시간을 약 절반으로 줄이고 토큰 사용량을 60%초과할 수 있습니다.

패키지 설치

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

Microsoft.Agents.AI.Hyperlight 핵심 추상화와는 별도로 배송되므로 필요할 때만 샌드박스 런타임을 수행합니다.

Important

.NET 패키지는 미리 보기로 제공됩니다. 이 프로젝트는 Hyperlight.HyperlightSandbox.Apihyperlight-dev/hyperlight-sandbox의 NuGet 패키지에 종속됩니다. 해당 종속성이 nuget.org에 게시되기 전까지는 프로젝트 복원에 실패합니다. 가용성을 위해 업스트림 샌드박스 리포지토리를 추적합니다.

Note

하이퍼라이트를 사용하려면 호스트에서 하드웨어 가상화가 필요합니다. Linux의 KVM 또는 Windows Windows WHP(하이퍼바이저 플랫폼). 또한 Wasm 백 엔드에는 Hyperlight Python 게스트 모듈이 필요합니다. 실행하기 전에 HYPERLIGHT_PYTHON_GUEST_PATH 절대 경로로 설정합니다.

HyperlightCodeActProvider 사용

HyperlightCodeActProvider 는 각 실행에 대해 CodeAct를 자동으로 추가하려는 경우 권장되는 진입점입니다. AIContextProvider는 실행 범위로 한정된 CodeAct 지침과 execute_code 도구를 주입하는 한편, 공급자 소유 도구는 에이전트의 직접적인 도구 노출 영역에서 제외하도록 하는 요소입니다. 공급자는 실행당 스냅샷/복원을 적용하므로 게스트는 호출할 때마다 알려진 클린 상태에서 시작됩니다.

HyperlightCodeActProviderOptions.CreateForWasm(modulePath) 팩터리를 사용하여 샘플에서 사용하는 Wasm 기반 Python 게스트를 대상으로 합니다. javaScript 백 엔드에도 CreateForJavaScript() 사용할 수 있습니다.

using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Hyperlight;
using OpenAI.Chat;

var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")
    ?? throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set.");
var deploymentName = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME") ?? "gpt-5.4-mini";
var guestPath = Environment.GetEnvironmentVariable("HYPERLIGHT_PYTHON_GUEST_PATH")
    ?? throw new InvalidOperationException("HYPERLIGHT_PYTHON_GUEST_PATH is not set.");

using var codeAct = new HyperlightCodeActProvider(
    HyperlightCodeActProviderOptions.CreateForWasm(guestPath));

AIAgent agent = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
    .GetChatClient(deploymentName)
    .AsAIAgent(new ChatClientAgentOptions()
    {
        ChatOptions = new()
        {
            Instructions = "You are a helpful assistant. When the user asks something quantitative, "
                + "write Python and call `execute_code` instead of guessing.",
        },
        AIContextProviders = [codeAct],
    });

Console.WriteLine(await agent.RunAsync("What is the 20th Fibonacci number?"));

Note

지정된 에이전트에 하나 HyperlightCodeActProvider 만 연결할 수 있습니다. 공급자는 고정 상태 키를 사용하므로 ChatClientAgent'상태 키 고유성 유효성 검사에서 중복 등록을 거부합니다. HyperlightCodeActProviderIDisposable를 구현합니다. 에이전트가 더 이상 필요하지 않을 때 기본 샌드박스가 해제되도록 using 선언을 사용하세요.

도구, 파일 마운트 및 아웃바운드 허용 목록 항목은 HyperlightCodeActProviderOptions(Tools, FileMounts, AllowedDomains, HostInputDirectory)를 통해 사전에 제공되거나, 공급자의 AddTools(...), RemoveTools(...), ClearTools(), AddFileMounts(...), AddAllowedDomains(...) 및 이에 대응하는 Get* 접근자를 통해 런타임에 관리할 수 있습니다.

승인 및 호스트 도구의 작동 방식

에이전트 프레임워크 도구는 자동 호출 가능 여부를 제어하는 승인 메타데이터를 전달하거나 사용자 승인을 위해 일시 중지해야 합니다. .NET에서는 AIFunctionApprovalRequiredAIFunction으로 래핑하여 승인을 받습니다.

도구를 등록하고 에이전트에 HyperlightCodeActProvider 직접 등록하는 경우의 주요 차이점은 함수가 궁극적으로 실행되는 위치 가 아니라 도구가 호출되는 방식입니다.

  • 등록된 HyperlightCodeActProviderOptions.Tools 도구는 모델에서 직접 도구로 숨겨집니다. 모델은 call_tool("name", ...) 안에서 execute_code을 호출하는 코드를 작성하여 수행합니다.
  • 에이전트에 직접 등록된 도구(예: 통해 AsAIAgent(tools: [...]))는 모델에 일류 도구로 표시되며, 각 직접 호출은 해당 도구의 자체 승인 메타데이터를 적용합니다.

call_tool(...) 는 콜백을 호스트하는 브리지 백입니다. 도구의 샌드박스 내 재이미션이 아닙니다. 즉, 호스트 프로세스 자체에서 액세스할 수 있는 파일 시스템, 네트워크 및 자격 증명을 사용하여 공급자 소유 도구가 호스트 프로세스에서 계속 실행됩니다.

CodeActApprovalMode 열거형은 execute_code 도구 자체가 승인되는 방식을 제어합니다:

  • CodeActApprovalMode.NeverRequire (기본값): 등록된 도구에서 승인이 전파됩니다. 레지스트리의 도구가 ApprovalRequiredAIFunction로 감싸여 있으면 execute_code에도 승인이 필요하며, 그렇지 않으면 필요하지 않습니다.
  • CodeActApprovalMode.AlwaysRequire: execute_code 호출하기 전에 항상 사용자 승인이 필요합니다.

일반적인 원칙으로:

  • 모델이 한 execute_code 턴 내에서 많은 호출을 작성할 수 있도록 공급자에 저렴하고 결정적이며 안전한 체인 도구를 배치합니다.
  • 부작용을 일으키거나 민감한 작업은 ApprovalRequiredAIFunction로 래핑하세요(대신 이를 직접적인 에이전트 도구로 두는 것도 고려하세요). 그러면 각 호출이 개별적으로 표시되고 승인 가능하게 유지됩니다.

다음 샘플에서는 두 개의 안전한 도구(fetch_docs, query_data)와 send_email로 래핑된 민감한 ApprovalRequiredAIFunction 도구를 등록합니다. 등록된 도구가 하나 이상 있으면 승인이 필요하기 때문에 기본 NeverRequire 모드에서는 execute_code 호출될 때마다 승인이 필요합니다.

AIFunction fetchDocs = AIFunctionFactory.Create(
    (string topic) => $"Docs for {topic}: (...)",
    name: "fetch_docs",
    description: "Fetch documentation for a given topic.");

AIFunction queryData = AIFunctionFactory.Create(
    (string query) => $"Rows for `{query}`: []",
    name: "query_data",
    description: "Run a read-only SQL-like query against the sample store.");

AIFunction sendEmail = new ApprovalRequiredAIFunction(
    AIFunctionFactory.Create(
        (string to, string subject) => $"Sent '{subject}' to {to}.",
        name: "send_email",
        description: "Send an email on behalf of the user."));

var options = HyperlightCodeActProviderOptions.CreateForWasm(guestPath);
options.Tools = [fetchDocs, queryData, sendEmail];

using var codeAct = new HyperlightCodeActProvider(options);

AIAgent agent = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
    .GetChatClient(deploymentName)
    .AsAIAgent(new ChatClientAgentOptions()
    {
        ChatOptions = new()
        {
            Instructions = "You are a helpful assistant. Prefer orchestrating your work in a single "
                + "`execute_code` block using `call_tool(...)` over issuing many direct tool calls.",
        },
        AIContextProviders = [codeAct],
    });

호스트 도구는 샌드박스 외부에서 실행되며, FileMountsAllowedDomains는 호스트 콜백 call_tool(...)의 뒤가 아니라 샌드박스 코드 자체를 제한합니다. 중요한 리소스에 대한 제어된 액세스가 필요한 경우 샌드박스 권한 확대보다 좁은 호스트 도구를 선호합니다.

직접 배선에 사용 HyperlightExecuteCodeFunction

execute_code를 동일한 에이전트에서 직접 전용 도구와 함께 사용해야 하거나 에이전트 수명 동안 샌드박스 구성이 고정되어 있는 경우에는 공급자 대신 HyperlightExecuteCodeFunction를 사용하세요. 생성 시 제공된 옵션의 단일 스냅샷을 캡처하고 모든 호출에 다시 사용하는 독립 실행형 AIFunction 입니다.

HyperlightCodeActProvider와는 달리, 독립 실행형 함수는 프롬프트 지침을 자동으로 삽입하지 않으므로 BuildInstructions(...) 출력을 에이전트 지침에 직접 추가해야 합니다. 등록된 도구에 toolsVisibleToModel: false를 통해서만 접근할 수 있는 경우에는 call_tool(...)를 전달하고, 동일한 도구가 모델에 직접 노출되기도 하는 경우에는 true를 전달합니다.

AIFunction calculate = AIFunctionFactory.Create(
    (double a, double b) => a * b,
    name: "multiply",
    description: "Multiply two numbers.");

var options = HyperlightCodeActProviderOptions.CreateForWasm(guestPath);
options.Tools = [calculate];

using var executeCode = new HyperlightExecuteCodeFunction(options);

var instructions =
    "You are a helpful assistant. When math is involved, solve it by writing Python "
    + "and calling `execute_code` instead of computing values yourself.\n\n"
    + executeCode.BuildInstructions(toolsVisibleToModel: false);

AIAgent agent = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
    .GetChatClient(deploymentName)
    .AsAIAgent(instructions: instructions, tools: [executeCode]);

또한 HyperlightExecuteCodeFunctionIDisposable를 구현합니다. 구성에 승인이 필요한 경우(ApprovalMode에 따르거나 구성된 도구 자체가 ApprovalRequiredAIFunction로 래핑되어 있기 때문인 경우), 인스턴스는 ApprovalRequiredAIFunction를 통해 AITool.GetService(...) 프록시를 노출하며, 이것이 프레임워크의 나머지 부분이 승인 요구 사항을 확인하는 방식입니다.

파일 및 아웃바운드 액세스 구성

하이퍼라이트는 생성된 아티팩트에 대해 읽기 전용 /input 트리와 쓰기 가능한 영역을 노출할 수 /output 있습니다.

  • HostInputDirectory을 사용하여 호스트 디렉터리를 /input/ 아래에서 사용할 수 있게 합니다.
  • FileMounts를 통해 특정 호스트 경로를 샌드박스에 매핑하려면 new FileMount(hostPath, mountPath)를 사용합니다.
  • AllowedDomains를 사용하여 new AllowedDomain(target, methods)를 통해 특정 대상 또는 메서드에 대해서만 아웃바운드 액세스를 사용하도록 설정합니다.
var options = HyperlightCodeActProviderOptions.CreateForWasm(guestPath);
options.Tools = [compute];
options.FileMounts =
[
    new FileMount("/host/data", "/input/data"),
    new FileMount("/host/models", "/sandbox/models"),
];
options.AllowedDomains =
[
    new AllowedDomain("https://api.github.com"),
    new AllowedDomain("https://internal.api.example.com", ["GET"]),
];

using var codeAct = new HyperlightCodeActProvider(options);

동일한 FileMountsAllowedDomains 컬렉션과 도구도 AddFileMounts(...)에서 RemoveFileMounts(...), AddAllowedDomains(...), RemoveAllowedDomains(...)HyperlightCodeActProvider을 통해 런타임에 수정할 수 있습니다.

출력 지침

execute_code에서 텍스트를 표시하려면 게스트 코드를 print(...)로 끝내야 합니다. Hyperlight는 마지막 식의 값을 자동으로 반환하지 않습니다.

파일 시스템 액세스가 활성화되면 더 큰 아티팩트를 /output/<filename>에 씁니다. 반환된 파일은 도구 결과에 첨부되지만 아래 /input 파일은 샌드박스 내에서 읽을 수 있습니다.

현재 제한 사항

이 패키지는 아직 미리 보기 상태이며 몇 가지 제약 조건을 계획할 가치가 있습니다.

  1. 패키지는 nuget.org에 아직 게시되지 않은 Hyperlight.HyperlightSandbox.Api에 종속됩니다. 해당 항목이 배포되기 전까지는 프로젝트 복원에 실패합니다.
  2. 플랫폼 지원은 게시된 하이퍼라이트 백 엔드 패키지인 지원되는 Linux(KVM) 및 WHP(Windows) 환경을 따릅니다. 샌드박스를 만들 때 지원되지 않는 플랫폼 또는 누락된 가상화 백 엔드가 실패합니다.
  3. 현재 Wasm 백 엔드는 HYPERLIGHT_PYTHON_GUEST_PATH 지정된 Python 게스트 모듈을 실행합니다. JavaScript 백 엔드(CreateForJavaScript())는 JavaScript의 게스트 코드에 사용할 수 있습니다.
  4. 메모리 내 인터프리터 상태는 별도의 execute_code 호출에서 유지되지 않습니다. 호출에서 데이터가 유지되어야 하는 경우 마운트된 파일 및 /output 아티팩트 사용
  5. 승인은 동일한 코드 블록 내의 개별 execute_code이 아닌 전체 call_tool(...) 호출에 적용됩니다.
  6. 모델에서 격리된 직접 도구 호출을 선택하지 않고 해당 계약에 대한 코드를 작성하기 때문에 도구 설명, 매개 변수 주석 및 반환 셰이프가 더 중요합니다.
  7. 아직 Python 벤치마크 샘플에 해당하는 .NET 없습니다. 게시된 비교 도구에 대한 Python 탭을 참조하세요.

패키지 설치

pip install agent-framework-hyperlight --pre

agent-framework-hyperlight 는 별도로 agent-framework-core배송되므로 필요할 때만 샌드박스 런타임을 사용할 수 있습니다.

Note

패키지는 하이퍼라이트 샌드박스 구성 요소에 따라 달라집니다. 백엔드가 현재 플랫폼에 대해 아직 게시되지 않은 경우, execute_code는 샌드박스를 만들려고 할 때 실패합니다.

HyperlightCodeActProvider 사용

HyperlightCodeActProvider 는 각 실행에 대해 CodeAct를 자동으로 추가하려는 경우 권장되는 진입점입니다. 공급자 소유 도구를 직접 에이전트 도구 화면에서 벗어나게 하면서 실행 범위 CodeAct 명령과 execute_code 도구를 삽입합니다.

import os

from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from agent_framework.hyperlight import HyperlightCodeActProvider
from azure.identity import AzureCliCredential

# 1. Create the Hyperlight-backed provider and register sandbox tools on it.
codeact = HyperlightCodeActProvider(
    tools=[compute, fetch_data],
    approval_mode="never_require",
)

# 2. Create the client and the agent.
agent = Agent(
    client=FoundryChatClient(
        project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
        model=os.environ["FOUNDRY_MODEL"],
        credential=AzureCliCredential(),
    ),
    name="HyperlightCodeActProviderAgent",
    instructions="You are a helpful assistant.",
    context_providers=[codeact],
)

# 3. Run a request that should use execute_code plus provider-owned tools.
query = (
    "Fetch all users, find admins, multiply 7*(3*2), and print the users, "
    "admins, and multiplication result. Use execute_code and call_tool(...) "
    "inside the sandbox."
)
result = await agent.run(query)
print(result.text)

공급자에 등록된 도구는 call_tool(...)을/를 통해 샌드박스 내에서 사용할 수 있지만, 직접적인 에이전트 도구로는 노출되지 않습니다. 또한 공급자는 도구, 파일 탑재 및 아웃바운드 허용 목록 항목에 대한 CRUD 스타일 관리를 (예: add_tools(...), remove_tool(...)add_file_mounts(...)add_allowed_domains(...)) 메서드를 통해 노출합니다.

승인 및 호스트 도구의 작동 방식

"에이전트 프레임워크 도구는 approval_mode을 사용하여 자동 호출할 수 있는지 아니면 사용자 승인 대기를 위해 일시 중지해야 하는지를 제어합니다."

도구를 HyperlightCodeActProvider 등록하고 직접 Agent(tools=...) 등록하는 경우의 주요 차이점은 Python 함수가 궁극적으로 실행되는 위치 가 아니라 도구가 호출되는 방식입니다.

  • 등록된 HyperlightCodeActProvider(tools=...) 도구는 모델에서 직접 도구로 숨겨집니다. 모델은 call_tool("name", ...) 안에서 execute_code을 호출하는 코드를 작성하여 수행합니다.
  • Agent(tools=...)에 등록된 도구는 모델에 주요 도구로 인식되며, 각 직접 호출은 해당 도구의 고유 설정인 approval_mode을 존중합니다.

call_tool(...) 는 콜백을 호스트하는 브리지 백입니다. 도구의 샌드박스 내 재이미션이 아닙니다. 즉, 호스트 프로세스 자체에서 액세스할 수 있는 파일 시스템, 네트워크 및 자격 증명을 사용하여 공급자 소유 도구가 호스트 프로세스에서 계속 실행됩니다.

일반적인 원칙으로:

  • 모델이 한 execute_code 턴 내에서 많은 호출을 작성할 수 있도록 공급자에 저렴하고 결정적이며 안전한 체인 도구를 배치합니다.
  • 부작용이 있거나 승인 제어가 필요한 작업은 보통 approval_mode="always_require"를 사용하여 직접 에이전트 도구로 유지합니다. 이렇게 하면 각 호출이 개별적으로 표시되고 승인될 수 있습니다.

호스트 도구는 샌드박스 외부에서 실행되며, file_mountsallowed_domains는 호스트 콜백 call_tool(...)의 뒤가 아니라 샌드박스 코드 자체를 제한합니다. 중요한 리소스에 대한 제어된 액세스가 필요한 경우 샌드박스 권한 확대보다 좁은 호스트 도구를 선호합니다.

Note

call_tool(...) 통해 호출된 도구는 네이티브 Python 값(dict, list, 기본 개체 또는 사용자 지정 개체)을 게스트에 직접 반환합니다. A에 result_parser 구성된 모든 FunctionTool 구성은 LLM 연결 소비자를 위한 것이며 샌드박스 경로에서 실행되지 않습니다. 샌드박스 내 소비자에게 필요한 경우 도구 함수 자체 내에서 서식을 적용합니다.

직접 배선에 사용 HyperlightExecuteCodeTool

동일한 에이전트에서 직접 전용 도구와 execute_code를 함께 사용해야 하는 경우에는 공급자 대신 HyperlightExecuteCodeTool를 사용하세요. 고정 구성의 경우 CodeAct 지침을 한 번 빌드하고 도구를 직접 연결할 수 있습니다.

from agent_framework.hyperlight import HyperlightExecuteCodeTool

execute_code = HyperlightExecuteCodeTool(
    tools=[compute],
    approval_mode="never_require",
)

codeact_instructions = execute_code.build_instructions(tools_visible_to_model=False)

이 패턴은 CodeAct 화면이 고정되어 있고 모든 실행 시 공급자 수명 주기가 필요하지 않은 경우에 유용합니다. 독립형 HyperlightCodeActProvider 도구는 프롬프트 지침을 자동으로 삽입하지 않으므로, 에이전트 지침에 build_instructions(...) 출력을 직접 추가할 책임이 있습니다.

파일 및 아웃바운드 액세스 구성

하이퍼라이트는 생성된 아티팩트에 대해 읽기 전용 /input 트리와 쓰기 가능한 영역을 노출할 수 /output 있습니다.

  • workspace_root을(를) 사용하여 /input/에 작업 공간을 사용할 수 있게 하십시오.
  • 특정 호스트 경로를 샌드박스에 매핑하는 데 사용합니다 file_mounts .
  • 특정 대상 또는 메서드에 대해서만 아웃바운드 액세스를 사용하도록 설정하는 데 사용합니다 allowed_domains .

file_mounts은 약식 문자열, 명시적으로 지정된 (host_path, mount_path) 쌍, 또는 명명된 FileMount 튜플을 허용합니다. allowed_domains는 문자열 타깃, 명시적인 (target, method-or-methods) 쌍, 또는 명명된 튜플 AllowedDomain을(를) 허용합니다.

from agent_framework.hyperlight import HyperlightCodeActProvider

codeact = HyperlightCodeActProvider(
    tools=[compute],
    file_mounts=[
        "/host/data",
        ("/host/models", "/sandbox/models"),
    ],
    allowed_domains=[
        "api.github.com",
        ("internal.api.example.com", "GET"),
    ],
)

출력 지침

에서 execute_code텍스트를 표시하려면 코드를 으로 print(...)종료합니다. 하이퍼라이트는 마지막 식의 값을 자동으로 반환하지 않습니다.

파일 시스템 액세스가 활성화되면 더 큰 아티팩트를 /output/<filename>에 씁니다. 반환된 파일은 도구 결과에 첨부되지만 아래 /input 파일은 샌드박스 내에서 읽을 수 있습니다.

CodeAct 및 직접 도구 호출 비교

개념 비교는 CodeAct 백 엔드와 동일합니다. 동일한 클라이언트, 모델, 도구, 프롬프트 및 구조적 출력 스키마는 기존 도구 호출을 통해 또는 하이퍼라이트 지원 CodeAct를 통해 유선으로 연결할 수 있습니다. 유일한 차이점은 도구 인터페이스뿐입니다. 즉, 직접 도구를 사용하느냐, 아니면 execute_code가 지원하는 단일 HyperlightCodeActProvider 도구를 사용하느냐의 차이입니다.

from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from agent_framework.hyperlight import HyperlightCodeActProvider

# Direct tool calling: the model picks one tool at a time per turn.
direct = Agent(
    client=FoundryChatClient(...),
    instructions="...",
    tools=[fetch_data, compute],
)

# Hyperlight-backed CodeAct: the model writes one program per turn that
# orchestrates the same tools through call_tool(...).
codeact = Agent(
    client=FoundryChatClient(...),
    instructions="...",
    context_providers=[
        HyperlightCodeActProvider(
            tools=[fetch_data, compute],
            approval_mode="never_require",
        ),
    ],
)

데이터를 반복적으로 조회하고 가벼운 계산을 수행하여 데이터 세트 전체에서 합계를 계산하는 워크로드의 경우( 많은 작고 연결 가능한 단계) CodeAct는 오케스트레이션 오버헤드를 제거할 수 있습니다. 두 실행을 모두 스톱워치로 래핑하고 반환 ChatResponse.usage 된 내용을 검사하여 사용자 환경에서 경과된 시간과 토큰 사용량을 비교합니다.

현재 제한 사항

이 패키지는 여전히 알파이며 몇 가지 제약 조건을 계획할 가치가 있습니다.

  1. 플랫폼 지원은 게시된 하이퍼라이트 백 엔드 패키지를 따릅니다. 현재 지원되는 Linux 및 Windows 환경을 의미합니다. 지원되지 않는 플랫폼은 샌드박스를 만들 때 실패합니다.
  2. 현재 통합은 Python 게스트 코드를 실행합니다.
  3. 메모리 내 인터프리터 상태는 별도의 execute_code 호출에서 유지되지 않습니다. 호출에서 데이터가 유지되어야 하는 경우 마운트된 파일 및 /output 아티팩트 사용
  4. 승인은 동일한 코드 블록 내의 개별 execute_code이 아닌 전체 call_tool(...) 호출에 적용됩니다.
  5. 모델에서 격리된 직접 도구 호출을 선택하지 않고 해당 계약에 대한 코드를 작성하기 때문에 도구 설명, 매개 변수 주석 및 반환 셰이프가 더 중요합니다.

다음 단계