Monty

Monty jest interpreterem opartym na rust dla ograniczonego podzestawu Python. MontyCodeActProvider udostępnia agentowi Agent Framework jedno narzędzie execute_code i umożliwia wygenerowanemu kodowi wywoływanie narzędzi dostawcy jako typowanych funkcji asynchronicznych lub za pomocą call_tool(...).

Ta integracja wykorzystuje wzorzec CodeAct z ograniczonym interpreterem, a nie piaskownicę izolowaną sprzętowo.

Użyj Monty, jeśli potrzebujesz wieloplatformowego środowiska uruchomieniowego CodeAct bez hiperwizora Hyperlight lub zależności od gościa WASM.

Uwaga / Notatka

agent-framework-monty jest pakietem beta. Monty ogranicza system operacyjny, podproces i bezpośredni dostęp do sieci, ale nie jest to maszyna wirtualna izolowana sprzętowo.

Instalowanie pakietów

pip install agent-framework-monty agent-framework-foundry --pre

Dodaj MontyCodeActProvider

Zarejestruj narzędzia hosta po stronie dostawcy, a nie bezpośrednio w agencie. Model widzi execute_code i wywołuje te narzędzia z wygenerowanego kodu.

async def main() -> None:
    """Run the provider-owned Monty CodeAct sample."""
    # 1. Create the Monty-backed provider and register sandbox tools on it.
    codeact = MontyCodeActProvider(
        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="MontyCodeActProviderAgent",
        instructions="You are a helpful assistant.",
        context_providers=[codeact],
        middleware=[log_function_calls],
    )

    # 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 a single execute_code call. "
        "You may call the registered tools directly as typed async functions "
        "(`await compute(operation='multiply', a=7, b=6)`) or via "
        "`call_tool('compute', ...)`."
    )
    print(f"{_CYAN}{'=' * 60}")
    print("Monty CodeAct provider sample")
    print(f"{'=' * 60}{_RESET}")
    print(f"{_CYAN}User: {query}{_RESET}")
    result = await agent.run(query)
    print(f"{_CYAN}Agent: {result.text}{_RESET}")

Opisy parametrów narzędzia sterowania hostem

MontyCodeActProvider i MontyExecuteCodeTool zaakceptuj tool_description_format. Domyślnie "compact" zawiera typy parametrów skalarnych, informację o tym, czy są wymagane, czy opcjonalne, opisy, wartości enumeracji oraz wartości domyślne w opisie execute_code i instrukcjach CodeAct. Użyj "json" dla pełnego schematu JSON lub wybierz format według dokładnej nazwy narzędzia z rozróżnianiem wielkości liter:

codeact = MontyCodeActProvider(
    tools=[compute, fetch_data],
    tool_description_format={
        "compute": "json",
        "fetch_data": "compact",
    },
)

Narzędzia pominięte w mapowaniu są wyświetlane w formacie kompaktowym. Renderowanie kompaktowe automatycznie przełącza się na pełny schemat JSON, gdy nie może przedstawić schematu bez utraty ograniczeń, na przykład w przypadku obiektów zagnieżdżonych, tablic, odwołań lub typów unijnych. Schematy parametrów są widoczne dla modelu, dlatego nie umieszczaj poświadczeń ani innych tajnych informacji w opisach, wartościach wyliczeniowych, wartościach domyślnych ani niestandardowych polach schematu.

Konfigurowanie możliwości

MontyCodeActProvider i MontyExecuteCodeTool pomoc techniczna:

  • narzędzia hosta i zarządzanie narzędziami środowiska uruchomieniowego
  • never_require lub always_require zatwierdzenie dla execute_code
  • katalog główny obszaru roboczego i jawne montowania plików
  • Limity zasobów Monty
  • pliki zwrócone z instalacji odczytu i zapisu jako zawartość programu Agent Framework

Monty nie udostępnia listy dozwolonych adresów URL dla ruchu wychodzącego. Zapewnij dostęp do sieci za pośrednictwem ograniczonego narzędzia hosta, które weryfikuje adresy docelowe i dane wejściowe.

Wybierz Monty lub Hyperlight

Runtime Wybierz ją, gdy
Monty Wykonywanie międzyplatformowe i interpreter ograniczony są wystarczające.
Hyperlight Potrzebujesz utwardzonej piaskownicy, mechanizmów kontroli systemu plików lub list dozwolonych domen dla ruchu wychodzącego.

Następne kroki