Monty

Monty ist ein Rust-basierter Dolmetscher für eine eingeschränkte Python Teilmenge. MontyCodeActProvider stellt einem Agent-Framework-Agenten ein execute_code-Tool zur Verfügung und ermöglicht es generiertem Code, anbieterbetriebene Tools als typisierte asynchrone Funktionen oder über call_tool(...) aufzurufen.

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 Unterstützung:

  • Host-Werkzeuge und Verwaltung von Laufzeitwerkzeugen
  • never_require-Genehmigung oder always_require-Genehmigung für execute_code
  • ein Stammverzeichnis des Arbeitsbereichs und explizite Dateieinhängepunkte
  • Monty-Ressourcenbeschränkungen
  • Dateien, die von Mounts mit Lese- und Schreibzugriff als Inhalt des Agent Frameworks zurückgegeben werden

Monty stellt keine Zulassungsliste für ausgehende URL bereit. Stellen Sie den Netzwerkzugriff über ein eng begrenztes Host-Tool bereit, das Ziele und Eingaben validiert.

Wählen Sie Monty oder Hyperlight aus.

Laufzeit Wählen Sie diese Option, 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