Monty

Monty es un intérprete basado en Rust para un subconjunto de Python restringido. MontyCodeActProvider proporciona a un agente de Agent Framework una herramienta execute_code y permite que el código generado llame a las herramientas del proveedor como funciones asíncronas tipadas o a través de call_tool(...).

Esta integración utiliza el patrón CodeAct con un intérprete restringido en lugar de un entorno aislado por hardware.

Utilice Monty cuando necesite un entorno de ejecución multiplataforma de CodeAct sin el hipervisor de Hyperlight ni la dependencia de un invitado WASM.

Note

agent-framework-monty es un paquete beta. Monty restringe el sistema operativo, el subproceso y el acceso directo a la red, pero no es una máquina virtual aislada por hardware.

Instalación de los paquetes

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

Agregue MontyCodeActProvider.

Registre las herramientas de host en el proveedor en lugar de directamente en el agente. El modelo ve execute_code y llama a esas herramientas desde código generado.

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

Configurar las capacidades

MontyCodeActProvider y MontyExecuteCodeTool soporte técnico:

  • herramientas de host y administración de herramientas en tiempo de ejecución
  • never_require o always_require aprobación para execute_code
  • una raíz del espacio de trabajo y montajes explícitos de archivos
  • Límites de recursos de Monty
  • archivos devueltos por montajes de lectura y escritura como contenido del Agent Framework

Monty no proporciona una lista de direcciones URL de salida permitidas. Proporcione acceso a la red mediante una herramienta de anfitrión limitada que valide los destinos y las entradas.

Elegir Monty o Hyperlight

Runtime Elíjalo cuando
Monty La ejecución multiplataforma y un intérprete restringido son suficientes.
Hyperlight Necesitas un entorno aislado reforzado, controles del sistema de archivos o listas de dominios salientes permitidos.

Pasos siguientes