Monty

Monty ist ein Rust-basierter Dolmetscher für eine eingeschränkte Python Teilmenge. MontyCodeActProvider gibt einem Agent Framework-Agent ein execute_code Tool und ermöglicht generierten Codeaufrufanbieter-eigenen Tools als typierte asynchrone Funktionen oder über call_tool(...).

Diese Integration verwendet das CodeAct-Muster mit einem eingeschränkten Interpreter anstelle einer hardwareisolierten Sandbox.

Verwenden Sie Monty, wenn Sie eine plattformübergreifende CodeAct-Laufzeit ohne Hyperlight-Hypervisor oder WASM-Gastabhängigkeit benötigen.

Note

agent-framework-monty ist ein Betapaket. Monty schränkt den Zugriff auf Das Betriebssystem, die Unterverarbeitung und den direkten Netzwerkzugriff ein, ist jedoch kein hardwareisolierter virtueller Computer.

Installieren der Pakete

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

Fügen Sie MontyCodeActProvider hinzu.

Registrieren Sie Hosttools auf dem Anbieter und nicht direkt auf dem Agent. Das Modell sieht execute_code und ruft diese Tools aus generierten Code auf.

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}")

Funktionen konfigurieren

MontyCodeActProvider und MontyExecuteCodeTool Support:

  • Hosttools und Laufzeittoolverwaltung
  • never_require oder always_require Genehmigung für execute_code
  • Ein Arbeitsbereichstamm und explizite Datei mounts
  • Monty-Ressourcenbeschränkungen
  • Von Lese-/Schreibzugriff zurückgegebene Dateien als Agent Framework-Inhalt

Monty stellt keine Zulassungsliste für ausgehende URL bereit. Bereitstellen des Netzwerkzugriffs über ein schmales Hosttool, das Ziele und Eingaben überprüft.

Wählen Sie Monty oder Hyperlight aus.

Runtime Wählen Sie es aus, wenn
Monty Plattformübergreifende Ausführung und eingeschränkter Dolmetscher sind ausreichend.
Hyperlight Sie benötigen eine gehärtete Sandbox, Dateisystemsteuerelemente oder Zulassungslisten für ausgehende Domänen.

Nächste Schritte