Monty

Monty è un interprete basato su Rust per un subset con restrizioni Python. MontyCodeActProvider fornisce un agente di Agent Framework uno execute_code strumento e consente di generare strumenti di proprietà del provider di chiamate di codice come funzioni asincrone tipate o tramite call_tool(...).

Questa integrazione usa il modello CodeAct con un interprete con restrizioni anziché un sandbox isolato dall'hardware.

Usare Monty quando è necessario un runtime CodeAct multipiattaforma senza l'hypervisor o la dipendenza guest WASM di Hyperlight.

Annotazioni

agent-framework-monty è un pacchetto beta. Monty limita il sistema operativo, il subprocesso e l'accesso diretto alla rete, ma non è una macchina virtuale isolata dall'hardware.

Installare i pacchetti

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

Aggiungere MontyCodeActProvider

Registrare gli strumenti host nel provider anziché direttamente nell'agente. Il modello vede execute_code e chiama tali strumenti dal codice generato.

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

Configurare le funzionalità

MontyCodeActProvider e MontyExecuteCodeTool supporto:

  • strumenti host e gestione degli strumenti di runtime
  • never_require o always_require approvazione per execute_code
  • montaggi di file espliciti e radice dell'area di lavoro
  • Limiti delle risorse Monty
  • file restituiti dai montaggi di lettura/scrittura come contenuto di Agent Framework

Monty non fornisce un elenco di url in uscita consentito. Fornire l'accesso alla rete tramite uno strumento host ristretto che convalida le destinazioni e gli input.

Scegliere Monty o Hyperlight

Runtime Sceglilo quando
Monty L'esecuzione multipiattaforma e un interprete con restrizioni sono sufficienti.
Hyperlight Sono necessari un sandbox con protezione avanzata, controlli del file system o elenchi di indirizzi consentiti di dominio in uscita.

Passaggi successivi