Salta ai contenuti

Python Agent a Gateway

Il generatore connection può connettere il tuo Python Agent a un AgentCore Gateway.

Il generatore configura l’agent in modo che si autentichi al Gateway con IAM SigV4 (tramite la firma delle richieste httpx) quando distribuito, e si connetta al gateway locale avviato dal progetto Gateway quando eseguito localmente.

Prima di utilizzare questo generatore, assicurati di avere:

  1. Un progetto Python con un componente Agent (infra: agentcore)
  2. Un progetto agentcore-gateway
  1. Installa il Nx Console VSCode Plugin se non l'hai già fatto
  2. Apri la console Nx in VSCode
  3. Clicca su Generate (UI) nella sezione "Common Nx Commands"
  4. Cerca @aws/nx-plugin - connection
  5. Compila i parametri richiesti
    • Clicca su Generate

    Seleziona il progetto agent come sorgente e il progetto Gateway come destinazione.

    Parametro Tipo Predefinito Descrizione
    sourceProject Obbligatorio string - Il progetto sorgente
    targetProject Obbligatorio string - Il progetto di destinazione a cui connettersi
    sourceComponent string - Il componente sorgente da cui connettersi (nome del componente, percorso relativo alla radice del progetto sorgente, o id del generatore). Usare '.' per selezionare esplicitamente il progetto come sorgente.
    targetComponent string - Il componente di destinazione a cui connettersi (nome del componente, percorso relativo alla radice del progetto di destinazione, o id del generatore). Usare '.' per selezionare esplicitamente il progetto come destinazione.
    preferInstallDependencies boolean true Se preferire l'installazione delle dipendenze dopo l'esecuzione del generatore. Impostare su false per rimandare l'installazione quando si eseguono più generatori in batch (l'installazione viene comunque eseguita se necessaria affinché i generatori successivi possano calcolare il grafo dei progetti Nx); installare una volta alla fine.

    Il generatore emette moduli core-gateway condivisi nel tuo progetto Python agent_connection, più un wrapper per-Gateway, e modifica il tuo agent:

    • Directorypackages/common/agent_connection
      • Directory<scope>_agent_connection
        • Directorycore/
          • agentcore_endpoints.py Risoluzione ARN/URL indipendente dal framework
          • agentcore_gateway_mcp_transport.py Trasporto MCP Gateway indipendente dal framework
          • agentcore_gateway_mcp_client_<framework>.py Client MCP Gateway per il framework del tuo agent
          • Directoryauth/ httpx.Auth SigV4 / session-forwarding indipendente dal framework
        • Directoryapp/
          • <gateway_snake>_client_<framework>.py Wrapper client per-Gateway
        • __init__.py Ri-esporta il client Gateway

    Il suffisso del client corrisponde al framework del tuo agent (_strands o _langchain).

    Inoltre, il generatore:

    • Modifica il file agent.py del tuo agent per importare il client Gateway e registrare i suoi strumenti in tools
    • Aggiunge agent_connection come dipendenza workspace dell’agent
    • Collega il target <agent>-dev dell’agent per dipendere dal target dev del Gateway

    Il generatore trasforma il file agent.py del tuo agent per utilizzare il client 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() restituisce un singolo MCPClient gestibile tramite context manager il cui list_tools_sync() fornisce ogni strumento disponibile attraverso il Gateway.

    In entrambi i casi il client si comporta allo stesso modo per modalità:

    • Modalità distribuita (LOCAL_DEV non impostato): strumenti puntati all’endpoint MCP del Gateway, firmati con SigV4.
    • Modalità locale (LOCAL_DEV=true): strumenti HTTP semplici puntati al gateway locale avviato dal target dev del progetto Gateway.

    L’ID di sessione viene propagato automaticamente ai server MCP downstream tramite l’header X-Amzn-Bedrock-AgentCore-Runtime-Session-Id.

    Dopo aver eseguito il generatore devi concedere all’agent il permesso di invocare il 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);

    L’URL del Gateway viene automaticamente registrato nel namespace agentcore.gateways.<ClassName> della Runtime Configuration dal costrutto CDK generato, in modo che l’agent possa scoprirlo a runtime.

    Il generatore configura il target dev dell’agent per:

    1. Avviare il gateway locale del Gateway connesso e ogni server MCP collegato
    2. Impostare LOCAL_DEV=true in modo che il client generato punti al gateway locale invece del Gateway distribuito

    Esegui l’agent localmente con:

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

    Per eseguire l’agent localmente contro il Gateway distribuito invece (ad esempio, per esercitare le policy Cedar), utilizza il target serve dell’agent. Senza LOCAL_DEV impostato, il client risolve l’URL del Gateway distribuito dalla configurazione runtime e firma le richieste con SigV4 utilizzando le tue credenziali AWS locali:

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

    Il gateway locale sostituisce il Gateway distribuito, quindi:

    • Nessuna valutazione delle policy Cedar. Ogni strumento è visibile all’agent indipendentemente dalle policy. Utilizza il target serve per esercitare le policy contro il Gateway distribuito.
    • Il prefisso del nome dello strumento è preservato. Gli strumenti di ciascun server MCP locale sono esposti come <target-name>___<tool-name>, corrispondendo a ciò che emette il Gateway distribuito. Questo mantiene il system prompt dell’agent e i nomi delle azioni Cedar che referenzi coerenti tra esecuzioni locali e distribuite. te.