Pular para o conteúdo

Python Agent para Gateway

O gerador connection pode conectar seu Python Agent a um AgentCore Gateway.

O gerador configura o agente para que ele se autentique no Gateway com IAM SigV4 (via assinatura de requisição httpx) quando implantado, e se conecta ao gateway local iniciado pelo projeto Gateway quando executado localmente.

Antes de usar este gerador, certifique-se de ter:

  1. Um projeto Python com um componente Agent (infra: agentcore)
  2. Um projeto agentcore-gateway
  1. Instale o Nx Console VSCode Plugin se ainda não o fez
  2. Abra o console Nx no VSCode
  3. Clique em Generate (UI) na seção "Common Nx Commands"
  4. Procure por @aws/nx-plugin - connection
  5. Preencha os parâmetros obrigatórios
    • Clique em Generate

    Selecione o projeto do agente como origem e o projeto do Gateway como destino.

    Parâmetro Tipo Padrão Descrição
    sourceProject Obrigatório string - O projeto de origem
    targetProject Obrigatório string - O projeto de destino para conectar
    sourceComponent string - O componente de origem para conectar (nome do componente, caminho relativo à raiz do projeto de origem, ou id do gerador). Use '.' para selecionar explicitamente o projeto como origem.
    targetComponent string - O componente de destino para conectar (nome do componente, caminho relativo à raiz do projeto de destino, ou id do gerador). Use '.' para selecionar explicitamente o projeto como destino.
    preferInstallDependencies boolean true Se deve preferir instalar dependências após a execução do gerador. Defina como false para adiar a instalação ao executar múltiplos geradores em lote (uma instalação ainda é executada se necessário para que os geradores subsequentes possam calcular o grafo de projetos Nx); instale uma vez no final.

    O gerador emite módulos compartilhados core-gateway em seu projeto Python agent_connection, além de um wrapper por Gateway, e modifica seu agente:

    • Directorypackages/common/agent_connection
      • Directory<scope>_agent_connection
        • Directorycore/
          • agentcore_endpoints.py Resolução de ARN/URL independente de framework
          • agentcore_gateway_mcp_transport.py Transporte MCP Gateway independente de framework
          • agentcore_gateway_mcp_client_<framework>.py Cliente MCP Gateway para o framework do seu agente
          • Directoryauth/ httpx.Auth SigV4 / encaminhamento de sessão independente de framework
        • Directoryapp/
          • <gateway_snake>_client_<framework>.py Wrapper de cliente por Gateway
        • __init__.py Re-exporta o cliente do Gateway

    O sufixo do cliente corresponde ao framework do seu agente (_strands ou _langchain).

    Além disso, o gerador:

    • Modifica o agent.py do seu agente para importar o cliente do Gateway e registrar suas ferramentas em tools
    • Adiciona agent_connection como uma dependência de workspace do agente
    • Conecta o alvo <agent>-dev do agente para depender do alvo dev do Gateway

    O gerador transforma o agent.py do seu agente para usar o cliente do Gateway:

    packages/example/example/my_agent/agent.py
    from contextlib import contextmanager
    from strands import Agent
    from my_scope_agent_connection import MyGatewayClientStrands
    @contextmanager
    def get_agent():
    my_gateway = MyGatewayClientStrands.create()
    with (
    my_gateway,
    ):
    yield Agent(
    system_prompt="...",
    tools=[*my_gateway.list_tools_sync()],
    )

    MyGatewayClientStrands.create() retorna um único MCPClient gerenciável por contexto cujo list_tools_sync() produz todas as ferramentas disponíveis através do Gateway.

    Em ambos os casos, o cliente se comporta da mesma forma por modo:

    • Modo implantado (LOCAL_DEV não definido): ferramentas apontadas para o endpoint MCP do Gateway, assinado com SigV4.
    • Modo local (LOCAL_DEV=true): ferramentas HTTP simples apontadas para o gateway local iniciado pelo alvo dev do projeto Gateway.

    O ID da sessão é propagado para os servidores MCP downstream automaticamente via o cabeçalho X-Amzn-Bedrock-AgentCore-Runtime-Session-Id.

    Após executar o gerador, você deve conceder ao agente permissão para invocar o Gateway.

    packages/infra/src/stacks/application-stack.ts
    const gateway = new MyGateway(this, 'MyGateway');
    const myAgent = new MyAgent(this, 'MyAgent');
    // Grant the agent permissions to invoke the Gateway
    gateway.grantInvokeAccess(myAgent);

    A URL do Gateway é automaticamente registrada no namespace agentcore.gateways.<ClassName> da Runtime Configuration pelo construto CDK gerado, para que o agente possa descobri-la em tempo de execução.

    O gerador configura o alvo dev do agente para:

    1. Iniciar o gateway local do Gateway conectado e todos os servidores MCP anexados
    2. Definir LOCAL_DEV=true para que o cliente gerado aponte para o gateway local em vez do Gateway implantado

    Execute o agente localmente com:

    Terminal window
    pnpm nx <agent-name>-dev <project-name>

    Para executar o agente localmente contra o Gateway implantado (por exemplo, para exercitar políticas Cedar), use o target serve do agente. Sem LOCAL_DEV definido, o cliente resolve a URL do Gateway implantado a partir da configuração de runtime e assina solicitações SigV4 com suas credenciais AWS locais:

    Terminal window
    pnpm nx <agent-name>-serve <project-name>

    O gateway local substitui o Gateway implantado, então:

    • Sem avaliação de política Cedar. Todas as ferramentas são visíveis para o agente independentemente das políticas. Use o alvo serve para exercitar políticas contra o Gateway implantado.
    • A prefixação de nome de ferramenta é preservada. As ferramentas de cada servidor MCP local são expostas como <target-name>___<tool-name>, correspondendo ao que o Gateway implantado emite. Isso mantém o prompt do sistema do agente e os nomes de ação Cedar que você referencia consistentes entre execuções locais e implantadas. tadas.