Pular para o conteúdo

TypeScript Strands Agent para Banco de Dados Relacional

O gerador connection conecta um TypeScript Strands Agent a um projeto de Banco de Dados Relacional, disponibilizando um cliente Prisma dentro da sua fábrica de agente.

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

  1. Um projeto ts#strands-agent
  2. Um projeto ts#rdb
  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 seu projeto Strands Agent como origem e seu projeto de banco de dados relacional como destino. Se o projeto contiver múltiplos componentes de agente, especifique sourceComponent para desambiguar.

    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.

    O gerador modifica um único arquivo:

    • Directorypackages/my-service/src/my-agent
      • agent.ts Cliente Prisma buscado dentro de getAgent e disponível para ferramentas

    Além disso, o alvo <agent-name>-serve-local do agente é atualizado para depender do alvo serve-local do banco de dados.

    O cliente Prisma é buscado diretamente dentro de getAgent() em vez de ser passado através de parâmetros de função. Isso se alinha com a forma como o runtime strands-agent propaga o contexto de sessão — withSessionId envolve getAgent e armazena em cache uma instância de Agent por sessão, então getPrisma() é chamado no máximo uma vez por sessão.

    getAgent é atualizado para importar e chamar o getter do Prisma no início de seu corpo:

    packages/my-service/src/my-agent/agent.ts
    import { getPrisma as getMyDb } from ':my-scope/my-db';
    export const getAgent = async () => {
    const myDb = await getMyDb();
    return new Agent({ /* use myDb in tools */ });
    };

    Executar o gerador novamente com um destino diferente adiciona o segundo banco de dados junto com o primeiro:

    packages/my-service/src/my-agent/agent.ts
    import { getPrisma as getMyDb } from ':my-scope/my-db';
    import { getPrisma as getOtherDb } from ':my-scope/other-db';
    export const getAgent = async () => {
    const myDb = await getMyDb();
    const otherDb = await getOtherDb();
    return new Agent({ /* use both clients in tools */ });
    };

    O construto de agente gerado implementa IGrantable e IConnectable, então você pode conceder acesso de rede e IAM ao banco de dados diretamente no construto.

    packages/infra/src/stacks/application-stack.ts
    import { MyDatabase } from ':my-scope/common-constructs';
    const db = new MyDatabase(this, 'Db', { vpc, ... });
    const myAgent = new MyAgent(this, 'MyAgent', { vpc, ... });
    db.allowDefaultPortFrom(myAgent);
    db.grantConnect(myAgent);

    allowDefaultPortFrom abre a regra do grupo de segurança para que o runtime do agente possa alcançar a porta do banco de dados. grantConnect concede permissão IAM rds-db:connect à função de execução do agente.

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

    Isso inicia o agente e todos os bancos de dados conectados. A variável de ambiente SERVE_LOCAL=true faz com que cada cliente Prisma se conecte ao seu banco de dados Docker local em vez do Aurora.