Pular para o conteúdo

Agente Python

Filter this guidePick generator option values to hide sections that don't apply.

Gere um agente de IA em Python para construir agentes com ferramentas, e opcionalmente implante-o no Amazon Bedrock AgentCore Runtime. Escolha o framework do agente com a opção framework: Strands (o padrão) ou LangChain (construído sobre LangGraph).

O gerador expõe seu agente através de um protocol de servidor. Ambos os frameworks suportam HTTP (o padrão), o protocolo Agent-to-Agent (A2A) para interoperabilidade com outros agentes compatíveis com A2A, e o protocolo AG-UI para integração direta com frontend via CopilotKit.

Você pode gerar um Agente Python de duas formas:

  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 - py#agent
  5. Preencha os parâmetros obrigatórios
    • Clique em Generate
    ParâmetroTipoPadrãoDescrição
    project Obrigatóriostring-O projeto ao qual adicionar o Agent
    framework strands | langchainstrandsO SDK do agente a ser usado.
    name string-O nome do seu Agent (padrão: agent)
    auth iam | cognitoiamO método usado para autenticar com seu Agent. Aplicável apenas quando infra está definido (ignorado quando infra é none).
    protocol http | a2a | ag-uihttpO protocolo do servidor para o seu Agent. HTTP expõe um servidor HTTP FastAPI. A2A expõe um servidor de protocolo Agent-to-Agent. AG-UI expõe um servidor de protocolo Agent-User Interaction para integração direta com frontend.
    iac inherit | cdk | terraforminheritO provedor IaC preferido. Por padrão, isso é herdado da sua seleção inicial.
    infra agentcore | noneagentcoreO tipo de infraestrutura para hospedar seu Agent.
    preferInstallDependencies booleantrueSe 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 geradores subsequentes possam computar o grafo de projetos Nx); instale uma vez no final.

    O gerador adicionará os seguintes arquivos ao seu projeto Python existente. Os arquivos gerados dependem do protocol escolhido:

    protocol = http
    • Directoryyour-project/
      • Directoryyour_module/
        • Directoryagent/ (ou nome personalizado se especificado)
          • __init__.py Inicialização do pacote Python
          • init.py Configuração da aplicação FastAPI com middleware CORS e tratamento de erros
          • agent.py Definição principal do agente com ferramentas de exemplo
          • main.py Ponto de entrada FastAPI para Bedrock AgentCore Runtime
          • Dockerfile Ponto de entrada para hospedar seu agente (excluído quando infra é None)
      • pyproject.toml Atualizado com dependências do Strands
      • project.json Atualizado com alvos de serviço do agente
    protocol = a2a

    O ponto de entrada expõe seu agente através do protocolo A2A (Strands usa o Strands A2A Server; LangChain envolve o grafo em um executor a2a-sdk), montado em uma aplicação FastAPI:

    • Directoryyour-project/
      • Directoryyour_module/
        • Directoryagent/ (ou nome personalizado se especificado)
          • __init__.py Inicialização do pacote Python
          • agent.py Definição principal do agente com ferramentas de exemplo
          • main.py Ponto de entrada do servidor A2A
          • Dockerfile Ponto de entrada para hospedar seu agente (excluído quando infra é None)
      • pyproject.toml Atualizado com dependências do framework e A2A
      • project.json Atualizado com alvos de serviço do agente
    protocol = ag-ui

    O ponto de entrada expõe seu agente via protocolo AG-UI para integração direta com frontend usando CopilotKit. Agentes Strands usam a integração ag-ui-strands; agentes LangChain usam ag-ui-langgraph:

    • Directoryyour-project/
      • Directoryyour_module/
        • Directoryagent/ (ou nome personalizado se especificado)
          • __init__.py Inicialização do pacote Python
          • agent.py Definição principal do agente com ferramentas de exemplo
          • main.py Ponto de entrada do servidor AG-UI
          • Dockerfile Ponto de entrada para hospedar seu agente (excluído quando infra é None)
      • pyproject.toml Atualizado com dependências do framework e AG-UI
      • project.json Atualizado com alvos de serviço do agente
    infra = agentcore

    Como este gerador fornece infraestrutura como código com base no iac escolhido, ele criará um projeto em packages/common que inclui os constructs CDK ou módulos Terraform relevantes.

    O projeto comum de infraestrutura como código está estruturado da seguinte forma:

    • Directorypackages/common/constructs
      • Directorysrc
        • Directoryapp/ Constructs para infraestrutura específica de um projeto/gerador
        • Directorycore/ Constructs genéricos reutilizados pelos constructs em app
        • index.ts Ponto de entrada exportando os constructs de app
      • project.json Metas de build e configuração do projeto

    Para implantar seu Agente, os seguintes arquivos são gerados:

    • Directorypackages/common/constructs/src
      • Directoryapp
        • Directoryagents
          • Directory<project-name>
            • <project-name>.ts Construct CDK para implantar seu agente
    infra = none

    Se você selecionou None para infra, nenhum construct CDK ou módulo Terraform é gerado — o Agente só pode ser executado localmente. A opção auth é ignorada neste modo, pois não há endpoint hospedado para autenticar.

    Quando implantado no Bedrock AgentCore Runtime, o agente é construído em uma imagem de contêiner, enviado para o Amazon ECR e executado no AgentCore Runtime. Os clientes invocam o endpoint do plano de dados do AgentCore Runtime, que encaminha as solicitações para o seu agente. O agente chama o Amazon Bedrock para inferência de modelo e pode invocar ferramentas, servidores MCP ou APIs downstream.

    ClientECRAgent(AgentCore Runtime)Bedrock(Model Inference)CloudWatch(Logs, Metrics) Containerimage InvokeModel

    Você pode editar agent.py para adicionar ferramentas, configurar o modelo e personalizar o prompt do sistema. A API depende do framework que você escolheu.

    Ferramentas são funções que o agente de IA pode chamar para executar ações. Ambos os frameworks usam uma abordagem baseada em decoradores para definir ferramentas, derivam o nome e a descrição da ferramenta a partir do nome da função e da docstring, e geram o schema de entrada a partir de suas dicas de tipo.

    from strands import Agent, tool
    @tool
    def calculate_sum(numbers: list[int]) -> int:
    """Calculate the sum of a list of numbers"""
    return sum(numbers)
    @tool
    def get_weather(city: str) -> str:
    """Get weather information for a city"""
    # Your weather API integration here
    return f"Weather in {city}: Sunny, 25°C"
    # Add tools to your agent
    agent = Agent(
    system_prompt="You are a helpful assistant with access to various tools.",
    tools=[calculate_sum, get_weather],
    )

    Strands fornece uma coleção de ferramentas pré-construídas através do pacote strands-tools:

    from strands_tools import current_time, http_request, file_read
    agent = Agent(
    system_prompt="You are a helpful assistant.",
    tools=[current_time, http_request, file_read],
    )

    Por padrão, agentes Strands usam Claude 4 Sonnet, mas você pode personalizar o provedor de modelo. Consulte a documentação do Strands sobre provedores de modelos para opções de configuração:

    from strands import Agent
    from strands.models import BedrockModel
    # Create a BedrockModel
    bedrock_model = BedrockModel(
    model_id="anthropic.claude-sonnet-4-20250514-v1:0",
    region_name="us-west-2",
    temperature=0.3,
    )
    agent = Agent(model=bedrock_model)

    Para consumir servidores MCP criados usando os geradores py#mcp-server ou ts#mcp-server, você pode usar o gerador connection, que conecta as ferramentas do servidor MCP ao seu agente para ambos os frameworks.

    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

      Consulte o guia do gerador connection para detalhes sobre como a conexão é configurada.

      Para outros servidores MCP, consulte a documentação MCP do Strands ou LangChain.

      Para um guia mais detalhado sobre escrita de agentes, consulte a documentação do Strands ou LangChain.

      O protocolo de servidor do seu agente determina como ele se comunica. Todas as opções são servidas pelo FastAPI — o ponto de entrada difere:

      • HTTP (padrão): Um servidor FastAPI padrão com um endpoint /invocations personalizado, CORS e streaming. Melhor para integrações de clientes personalizados.
      • A2A: Um servidor Agent-to-Agent montado em uma aplicação FastAPI (Strands usa o Strands A2A Server; LangChain usa o a2a-sdk agnóstico de framework). Melhor quando seu agente precisa ser descoberto e invocado por outros agentes compatíveis com A2A.
      • AG-UI: O protocolo AG-UI via SSE (Strands usa ag-ui-strands; LangChain usa ag-ui-langgraph). Melhor para integração direta com frontend usando CopilotKit em um website React.

      O ponto de entrada do servidor difere por framework (Strands produz um Agent gerenciado por contexto, enquanto LangChain conduz um grafo create_agent compilado), mas o contrato externo para cada protocolo é o mesmo.

      Todos os protocolos expõem /ping para o contrato de verificação de saúde do runtime AgentCore. Agentes A2A escutam na porta 9000; agentes HTTP e AG-UI escutam na porta 8080. O Dockerfile e a infraestrutura gerados são configurados para você.

      protocol = http

      O servidor HTTP gerado inclui:

      • Configuração da aplicação FastAPI com middleware CORS
      • Middleware de tratamento de erros
      • Geração de schema OpenAPI
      • Endpoint de verificação de saúde (/ping)
      • Endpoint de invocação do agente (/invocations)

      Personalizando Entradas e Saídas de Invocação com Pydantic

      Seção intitulada “Personalizando Entradas e Saídas de Invocação com Pydantic”

      O endpoint de invocação do agente usa modelos Pydantic para definir e validar os schemas de requisição e resposta. Você pode personalizar esses modelos em main.py para atender aos requisitos do seu agente.

      O modelo padrão InvokeInput aceita um prompt.

      from pydantic import BaseModel
      class InvokeInput(BaseModel):
      prompt: str

      Você pode estender este modelo para incluir quaisquer campos adicionais que seu agente necessite.

      O ID de sessão é extraído do cabeçalho HTTP x-amzn-bedrock-agentcore-runtime-session-id, consistente com o contrato de sessão do Bedrock AgentCore Runtime. Se o cabeçalho não for fornecido, um UUID aleatório é gerado como fallback.

      Para respostas em streaming, o gerador fornece JsonStreamingResponse que serializa automaticamente modelos Pydantic para o formato JSON Lines (application/jsonl). Este formato é compatível com a especificação de streaming do OpenAPI 3.2 e funciona perfeitamente com o cliente TypeScript gerado.

      Por padrão, o agente produz objetos StreamChunk contendo o texto de resposta do agente:

      class StreamChunk(BaseModel):
      content: str

      Você pode personalizar o modelo StreamChunk para atender às suas necessidades:

      from pydantic import BaseModel
      class StreamChunk(BaseModel):
      content: str
      timestamp: str
      token_count: int

      Existe uma solicitação de recurso aberta para suporte nativo no FastAPI.

      O gerador inclui uma dependência no Bedrock AgentCore Python SDK para as constantes PingStatus. Se desejar, é simples usar BedrockAgentCoreApp em vez de FastAPI, porém note que a segurança de tipos é perdida.

      Você pode encontrar mais detalhes sobre as capacidades do SDK na documentação aqui.

      protocol = a2a

      O main.py gerado monta um servidor A2A em uma aplicação FastAPI pai que também expõe /ping. Agentes Strands usam o A2AServer do Strands; agentes LangChain envolvem o grafo compilado em um AgentExecutor do a2a-sdk. Quando implantado no AgentCore, o ponto de entrada resolve o ARN público do runtime a partir do AppConfig e o anuncia no cartão do agente.

      A maioria dos usuários não precisará modificar este arquivo; edite agent.py para alterar ferramentas ou o prompt do sistema. O servidor A2A popula o cartão do agente (/.well-known/agent-card.json) a partir do name e description do agente.

      protocol = ag-ui

      O main.py gerado expõe um único endpoint POST que transmite eventos AG-UI via Server-Sent Events (SSE), além de /ping para a verificação de saúde do runtime AgentCore. A conexão depende do framework:

      • Strands: envolve seu Agent em um ag_ui_strands.StrandsAgent e cria a aplicação FastAPI via create_strands_app().
      • LangChain: envolve o grafo compilado em um ag_ui_langgraph.LangGraphAgent e o serve a partir de um loop FastAPI /invocations feito manualmente.

      A maioria dos usuários não precisará modificar este arquivo — edite agent.py para alterar ferramentas ou o prompt do sistema.

      Para executar seu Agente (e tudo conectado a ele) localmente, use o alvo dev do projeto:

      Terminal window
      pnpm nx dev your-project

      Se você adicionou múltiplos componentes ao seu projeto (agentes, servidores MCP, etc.), isso inicia todos eles. Para executar apenas este agente, use seu alvo <your-agent-name>-dev:

      Terminal window
      pnpm nx agent-dev your-project

      Isso usa uv run para executar seu Agente usando o Bedrock AgentCore Python SDK.

      O gerador configura um alvo Nx <your-agent-name>-chat que o coloca em um chat interativo de terminal com seu agente.

      O alvo de chat é executado de forma independente. Por padrão, ele se conecta ao seu agente em execução local, então inicie primeiro o alvo <your-agent-name>-dev do agente (em um terminal separado):

      Terminal window
      pnpm nx agent-dev your-project

      Em seguida, em outro terminal, inicie o chat:

      Terminal window
      pnpm nx run your-project:agent-chat

      O gerador emite um scripts/<your-agent-name>/chat.ts para cada protocolo. Ele se conecta ao agente local por padrão, ou ao seu agente implantado quando RUNTIME_CONFIG_APP_ID está definido (veja Converse com seu agente implantado abaixo).

      Para agentes HTTP, o script de chat usa um cliente TypeScript com segurança de tipos gerado a partir da especificação OpenAPI do agente. O gerador também emite:

      • scripts/<your-agent-name>_openapi.py — um pequeno script que exporta a especificação OpenAPI do agente
      • Um alvo Nx <your-agent-name>-openapi que o executa
      • Um alvo Nx <your-agent-name>-generate-client que produz um cliente TypeScript com segurança de tipos em scripts/<your-agent-name>/generated/

      Quando você personalizar a forma de entrada do agente (por exemplo, adicionar novos campos a InvokeInput), atualize chat.ts para passar os novos campos ao invocar o agente e o resto funciona automaticamente.

      infra = agentcore

      Para conversar com seu agente implantado no Bedrock AgentCore, defina a variável de ambiente RUNTIME_CONFIG_APP_ID para o id da aplicação AppConfig da implantação (saída como RuntimeConfigApplicationId pela stack implantada). O script de chat resolve o ARN de runtime do seu agente a partir da configuração de runtime e se conecta ao endpoint implantado:

      Para agentes autenticados por IAM, as requisições são assinadas com SigV4 usando suas credenciais AWS padrão. Certifique-se de que o ambiente tenha credenciais AWS com permissão para invocar o runtime:

      Terminal window
      RUNTIME_CONFIG_APP_ID=<app-id> pnpm nx run your-project:agent-chat
      infra = agentcore

      Implantando Seu Agente no Bedrock AgentCore Runtime

      Seção intitulada “Implantando Seu Agente no Bedrock AgentCore Runtime”

      Se você selecionou agentcore para infra, a infraestrutura CDK ou Terraform relevante é gerada, que você pode usar para implantar seu Agent no Amazon Bedrock AgentCore Runtime.

      Um construto CDK é gerado para o seu agente, nomeado com base no name que você escolheu ao executar o gerador, ou <ProjectName>Agent por padrão.

      Você pode usar este construto CDK em uma aplicação CDK:

      import { MyProjectAgent } from '@my-scope/common-constructs';
      export class ExampleStack extends Stack {
      constructor(scope: Construct, id: string) {
      new MyProjectAgent(this, 'MyProjectAgent');
      }
      }

      O gerador fornece uma opção auth para configurar a autenticação para o seu Agent. Você pode escolher entre autenticação IAM (padrão) ou Cognito ao gerar seu agente.

      Por padrão, seu Agent será protegido usando autenticação IAM, basta implantá-lo sem nenhum argumento:

      import { MyProjectAgent } from ':my-scope/common-constructs';
      export class ExampleStack extends Stack {
      constructor(scope: Construct, id: string) {
      new MyProjectAgent(this, 'MyProjectAgent');
      }
      }

      Você pode conceder acesso para invocar seu agente no Bedrock AgentCore Runtime usando o método grantInvokeAccess, por exemplo:

      import { MyProjectAgent } from '@my-scope/common-constructs';
      export class ExampleStack extends Stack {
      constructor(scope: Construct, id: string) {
      const agent = new MyProjectAgent(this, 'MyProjectAgent');
      const lambdaFunction = new Function(this, ...);
      agent.grantInvokeAccess(lambdaFunction);
      }
      }

      Quando você seleciona autenticação Cognito, o gerador configura o agente para usar Cognito para autenticação.

      O construto gerado aceita uma propriedade identity que configura a autenticação Cognito:

      import { MyProjectAgent, UserIdentity } from ':my-scope/common-constructs';
      export class ExampleStack extends Stack {
      constructor(scope: Construct, id: string) {
      const identity = new UserIdentity(this, 'Identity');
      new MyProjectAgent(this, 'MyProjectAgent', {
      identity,
      });
      }
      }

      O construto UserIdentity pode ser gerado usando o gerador ts#website#auth, ou você pode criar seu próprio UserPool e UserPoolClient CDK.

      Para construir seu Agente para o Bedrock AgentCore Runtime, um alvo bundle é adicionado ao seu projeto, que:

      • Exporta suas dependências Python para um arquivo requirements.txt usando uv export
      • Instala dependências para a plataforma alvo (aarch64-manylinux_2_28) usando uv pip install

      Um alvo docker específico para seu Agente também é adicionado, que copia o Dockerfile e os artefatos empacotados para um diretório de contexto docker. Isso co-localiza o Dockerfile com a saída construída, permitindo que o CDK construa a imagem Docker diretamente usando AgentRuntimeArtifact.fromAsset.

      A imagem Docker construída para este projeto pode ser verificada em busca de vulnerabilidades usando Trivy, executando a partir da imagem Trivy hospedada no ECR.

      Um target trivy é adicionado ao seu projeto que verifica a imagem construída e sai com código diferente de zero se qualquer vulnerabilidade de severidade HIGH ou CRITICAL for encontrada. O Dockerfile gerado usa uma imagem base sem vulnerabilidades corrigíveis conhecidas dessas severidades no momento da geração, e atualiza ferramentas incluídas (como npm) para mantê-la assim.

      A verificação usa o mesmo mecanismo de contêiner que a construção da sua imagem (docker ou finch), portanto, nenhuma ferramenta adicional é necessária. Como a verificação só é executada novamente quando a imagem muda, uma imagem inalterada não é verificada novamente. O script raiz trivy fornecido verifica todas as imagens no workspace:

      Terminal window
      pnpm trivy

      Pode haver casos em que você deseja suprimir uma vulnerabilidade específica, por exemplo, quando nenhuma correção está disponível ainda e você avaliou o risco como aceitável.

      Adicione o ID da vulnerabilidade (um por linha) ao arquivo .trivyignore na raiz do seu projeto (ou seja, ao lado do seu project.json):

      .trivyignore
      # node-tar arbitrary file write - not exploitable in our usage
      CVE-2024-XXXXX

      Para mais detalhes sobre filtragem de descobertas, consulte a documentação de filtragem do Trivy.

      Seu agente é configurado automaticamente com observabilidade usando o AWS Distro for Open Telemetry (ADOT), através da configuração de auto-instrumentação em seu Dockerfile.

      Você pode encontrar traces no Console AWS CloudWatch, selecionando “GenAI Observability” no menu. Note que para os traces serem populados, você precisará habilitar o Transaction Search.

      Para mais detalhes, consulte a documentação do AgentCore sobre observabilidade.

      protocol = http

      Para invocar um Agente executando localmente através do alvo <your-agent-name>-serve, você pode enviar uma requisição POST simples para /invocations na porta em que seu agente local está sendo executado. Por exemplo, com curl:

      Terminal window
      curl -N -X POST http://localhost:8081/invocations \
      -d '{"message": "what is 3 + 5?"}' \
      -H "Content-Type: application/json"

      Para invocar seu Agent implantado no Bedrock AgentCore Runtime, você pode enviar uma requisição POST para o endpoint do dataplane do Bedrock AgentCore Runtime com seu ARN de runtime codificado em URL.

      Você pode obter o ARN de runtime da sua infraestrutura da seguinte forma:

      import { CfnOutput } from 'aws-cdk-lib';
      import { MyProjectAgent } from '@my-scope/common-constructs';
      export class ExampleStack extends Stack {
      constructor(scope: Construct, id: string) {
      const agent = new MyProjectAgent(this, 'MyProjectAgent');
      new CfnOutput(this, 'AgentArn', {
      value: agent.agentCoreRuntime.agentRuntimeArn,
      });
      }
      }

      O ARN terá o seguinte formato: arn:aws:bedrock-agentcore:<region>:<account>:runtime/<agent-runtime-id>.

      Você pode então codificar o ARN em URL substituindo : por %3A e / por %2F.

      A URL do dataplane do Bedrock AgentCore Runtime para invocar o agent é a seguinte:

      https://bedrock-agentcore.<region>.amazonaws.com/runtimes/<url-encoded-arn>/invocations

      A maneira exata de invocar esta URL depende do método de autenticação usado.

      Para Autenticação IAM, a requisição deve ser assinada usando AWS Signature Version 4 (SigV4).

      Terminal window
      acurl <region> bedrock-agentcore -N -X POST \
      'https://bedrock-agentcore.<region>.amazonaws.com/runtimes/<url-encoded-arn>/invocations' \
      -d '{"message": "what is 3 + 5?"}' \
      -H 'Content-Type: application/json'
      Clique aqui para mais detalhes sobre como configurar o comando acurl acima

      Para invocar seu Agente a partir de um website React, você pode usar o gerador connection, que configura automaticamente um cliente com a autenticação correta (IAM ou Cognito).

      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

        Consulte o guia do gerador connection para detalhes sobre como a conexão é configurada.

        protocol = a2a

        Para delegar trabalho deste agente para um agente A2A remoto (seja TypeScript ou Python), use o gerador connection. Ele fornece um cliente autenticado com SigV4 para o agente alvo e transforma via AST o agent.py deste agente para registrar o agente A2A remoto como um delegado decorado com @tool.

        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

          Consulte o guia do gerador connection para detalhes sobre como a conexão é configurada.

          protocol = ag-ui

          Para invocar seu agente AG-UI a partir de um website React, use o gerador connection, que configura um cliente CopilotKit configurado para seu agente implantado com a autenticação correta (IAM ou Cognito).

          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

            Consulte o guia do gerador connection para detalhes sobre como a conexão é configurada.

            Os agentes atuam em entradas não confiáveis e podem executar ações reais através de suas ferramentas, por isso vale a pena considerar a segurança desde o início. As práticas a seguir se aplicam ao agente gerado.

            Trate a entrada e saída do modelo como não confiáveis

            Seção intitulada “Trate a entrada e saída do modelo como não confiáveis”

            Os prompts podem conter instruções adversárias (injeção de prompt), e a saída do modelo é não determinística — nenhum dos dois deve ser confiável em lógica sensível à segurança:

            • Defina esquemas de entrada estritos para suas ferramentas, como na ferramenta de exemplo gerada. Restrinja os valores ao que a ferramenta realmente precisa (enums, limites de comprimento, intervalos numéricos) em vez de aceitar strings de formato livre.
            • Nunca passe a saída do modelo diretamente para comandos shell, consultas SQL, avaliação de código ou HTML renderizado sem validação ou codificação.
            • Aplique verificações de autorização em suas ferramentas e serviços downstream — não confie no prompt do sistema para impedir que o modelo use indevidamente uma ferramenta à qual tem acesso.

            Os guias de Engenharia de Prompts e IA Responsável do Strands abordam como escrever prompts de sistema robustos e conscientes da segurança.

            Defina permissões de ferramentas de forma restrita

            Seção intitulada “Defina permissões de ferramentas de forma restrita”

            Conceda ao papel IAM do agente apenas as permissões que suas ferramentas precisam. Os construtos CDK e módulos Terraform fornecidos expõem métodos grant* e políticas com escopo definido para esse propósito — por exemplo, concedendo a um agente acesso para invocar uma API específica em vez de anexar políticas gerenciadas amplas. Quando uma ferramenta age em nome de um usuário, prefira autorizar a ação usando a identidade do usuário chamador (passada através do contexto da solicitação) em vez das permissões ambientes próprias do agente.

            Como o comportamento do modelo pode mudar de maneiras inesperadas, planeje desabilitar ou trocar o modelo rapidamente sem uma alteração de código:

            • Leia o ID do modelo da configuração (por exemplo, uma variável de ambiente MODEL_ID) para que os operadores possam alternar ou reverter para um modelo diferente atualizando a configuração.
            • Coloque o agente atrás de uma feature flag para que sua funcionalidade de IA possa ser desabilitada completamente. Quando desabilitado, retorne uma mensagem genérica em vez de um erro, e garanta que o resto da sua aplicação degrade graciosamente.

            Documente como ativar esses controles em seu manual operacional.

            • Evite registrar prompts e conclusões, que podem conter dados do usuário. O hook de registro de erros do modelo do agente gerado registra apenas metadados de erro, não o conteúdo da conversa — mantenha essa propriedade ao adicionar seu próprio registro.
            • Retorne mensagens de erro genéricas aos usuários; registre erros detalhados no lado do servidor.
            • Isole o estado da conversa entre usuários e sessões, e autorize o acesso a quaisquer dados de sessão persistidos.
            • Remova informações de identificação pessoal (PII) de prompts e saídas — seja com um filtro de informações sensíveis do Bedrock Guardrail (abaixo) ou, para agentes Strands, as abordagens no guia de PII Redaction.

            Amazon Bedrock Guardrails fornecem filtros de conteúdo configuráveis, tópicos negados e filtros de informações sensíveis (PII) que são avaliados na entrada e saída do modelo. Você pode anexar um guardrail ao modelo usado pelo agente gerado:

            agent.py
            import os
            from strands import Agent
            from strands.models import BedrockModel
            model = BedrockModel(
            model_id=os.environ.get("MODEL_ID"),
            guardrail_id=os.environ["GUARDRAIL_ID"],
            guardrail_version=os.environ.get("GUARDRAIL_VERSION", "DRAFT"),
            )
            agent = Agent(model=model)

            Consulte o guia de Guardrails do Strands para mais detalhes.

            Use o gerador connection para integrar este projeto com outros em seu workspace. As seguintes conexões envolvem este projeto:

            Strands AgentsPython
            React para Python AgentChame um Python Agent de um site React
            CopilotKit
            React para AG-UI AgentChame um Agent que expõe o protocolo AG-UI de um site React via CopilotKit
            Strands AgentsPythonModel Context Protocol
            Python Agent para MCPConecte um Python Agent a um servidor MCP
            Strands AgentsPythonAgent2Agent
            Python Agent para A2A AgentConecte um Python Agent a um agente A2A remoto
            Strands AgentsTypeScriptAgent2Agent
            TypeScript Agent para A2A AgentConecte um TypeScript Agent a um agente A2A remoto
            Strands AgentsPythonAmazon DynamoDBPython
            Python Agent para Python DynamoDBConecte um Python Agent a uma tabela DynamoDB
            Strands AgentsPythonAmazon Bedrock AgentCore Gateway
            Python Agent para AgentCore GatewayConecte um Python Agent a um AgentCore Gateway

            d>