Monty

Monty é um interpretador baseado em Rust para um subconjunto restrito de Python. MontyCodeActProvider fornece a um agente do Agent Framework uma ferramenta execute_code e permite que o código gerado chame ferramentas do fornecedor como funções assíncronas tipadas ou através de call_tool(...).

Esta integração utiliza o padrão CodeAct com um interpretador restrito em vez de um sandbox isolado por hardware.

Usa o Monty quando precisares de um runtime CodeAct multiplataforma sem o hipervisor do Hyperlight ou a dependência de convidados do WASM.

Observação

agent-framework-monty é um pacote beta. O Monty restringe o acesso direto ao sistema operativo, subprocesso e à rede, mas não é uma máquina virtual isolada do hardware.

Instale os pacotes

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

Adicionar MontyCodeActProvider

Regista as ferramentas de alojamento no fornecedor em vez de diretamente no agente. O modelo vê execute_code e chama essas ferramentas a partir do código gerado.

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 funcionalidades

Compatibilidade com MontyCodeActProvider e MontyExecuteCodeTool:

  • Ferramentas de host e gestão de ferramentas em tempo de execução
  • never_require ou always_require aprovação para execute_code
  • uma raiz do espaço de trabalho e montagens explícitas de ficheiros
  • Limites de recursos Monty
  • ficheiros retornados de montagens de leitura-escrita como conteúdo do Agent Framework

O Monty não fornece uma lista de URLs de saída permitidos. Forneça acesso à rede através de uma ferramenta host restrita que valide destinos e entradas.

Escolhe Monty ou Hyperlight

Tempo de execução Escolhe-o quando
Monty Execução multiplataforma e um interpretador restrito são suficientes.
Hiperluz Precisas de um sandbox reforçado, controlos de sistema de ficheiros ou listas de permissões para domínios externos.

Passos seguintes