Pular para o conteúdo
fernando.moretes.com
BlogEstudosCursosE-booksOpen SourcePodcasts
Loading…
Fernando Azevedo

Arquiteto de TI Especialista

Arquitetura, AWS, IA em produção, sistemas financeiros e FinOps, escritos a partir do que foi operado, com os números.

  • LinkedIn
  • GitHub
  • E-mail

Conteúdo

  • Blog
  • Estudos de arquitetura
  • Cursos
  • E-books
  • Open Source
  • Podcasts
  • Assuntos
  • Trilhas

Ferramentas

  • Well-Architected self-check
  • Arquitetura deste site
  • Números públicos
  • Histórico de estudo

Sobre

  • Comunidade
  • IA Builder
  • Perfil
  • Currículo (CV)
  • Trabalhe comigo
  • Media kit
  • RSS do blog
  • RSS dos estudos
  • Artigos narrados (podcast)
  • llms.txt
  • Termos, privacidade e uso de IA

(c) 2026 Fernando Francisco Azevedo

Blog/Artigo
RSSMarkdownLLMs
IA & AgentesReview de Tecnologia

Quatro padrões de engenharia que separam multiagente de prompt chain

22 de set. de 2026 9 minAvançado Com apoio de IA000 visualizações00 reproduções
Ouvir artigo

17:54 · voz do Fernando

O post do Google sobre o AI Agents Challenge diz uma coisa que eu levei anos para aceitar em plataformas financeiras: "multiagente" foi a alegação mais frequente entre milhares de submissões, e boa parte era um modelo só passando por uma cadeia de prompts com nomes de agente colados. Os que ficaram no topo de cada trilha repetiam quatro decisões de engenharia que não têm nada a ver com o modelo, e tudo a ver com quem opera o sistema quando o modelo principal devolve 503 às 2h da manhã.

Os números que sustentam a review

40%+
das mensagens resolvidas sem modelo
Primeira camada (regex, zero tokens) do time de roteamento em camadas, medida por eles mesmos
1
função de validação para os dois modelos
validate_clinical_response() na saída do Gemini 3.1 Pro e do fallback Gemini 3.6 Flash
185 / 24h
retries padrão do EventBridge por alvo
O que um bus gerenciado entrega de graça e quatro asyncio.Queue num processo não entregam

O que o post é, e o que não é

O texto de Sergio Villani (Google Cloud AI, 2 de setembro de 2026) não é anúncio de produto, é um relatório de banca. Ele descreve, sem nomear times, o código real de quem venceu: um agente de telemetria que é cliente e servidor MCP ao mesmo tempo; um pipeline clínico refeito sobre quatro asyncio.Queue; um agente de raciocínio clínico que sobreviveu aos 503 do Gemini 3.1 Pro caindo para o 3.6 Flash sem baixar a régua; e um roteador de três camadas em que o modelo caro só entra quando regex e um classificador de dez tokens já desistiram.

A pergunta que vale reenquadrar não é "esses padrões funcionam?", funcionaram, tem submissão pontuada provando. A pergunta é: o que sobrevive quando o protótipo sai da máquina do hackathon e vai para uma conta AWS com auditoria, SLO e conta de Bedrock no fim do mês? É essa a lente da review. Cada padrão abaixo tem uma versão que cabe num notebook e uma versão que aguenta plantão; o post descreve a primeira e insinua a segunda.

Depois de 16 anos operando plataformas financeiras, o que me chamou atenção foi outra coisa: nenhum dos quatro padrões é novo. Interface de ferramenta em vez de conexão crua, pub/sub em vez de call chain, validação em ponto único, roteamento barato antes do caro, isso é engenharia de sistemas distribuídos de 2010 com outro vocabulário. O que mudou é o custo do erro: uma call chain lenta antes atrasava uma tela; agora ela multiplica tokens.

Padrão 1: MCP bidirecional é uma decisão de superfície de ataque

A metade interna do padrão é a que mais vale em produção. O agente vencedor não fazia SELECT * na base de telemetria e despejava linhas no contexto, ele acessava a base por uma camada de tools MCP que devolvia o plano de execução de um job ou um stack trace específico. É o que mantém o contexto pequeno o bastante para raciocinar e o que impede que uma única pergunta consuma o orçamento de tokens do dia. Em sistemas financeiros eu vou mais longe: a tool devolve resposta limitada por contrato (N linhas, campos nomeados, sem colunas de PII), porque é isso que o auditor vai ler.

A metade externa é onde o post acerta e para cedo. Expor o mesmo raciocínio como servidor MCP transforma um chat em infraestrutura, outro agente, num IDE, pergunta sobre um job sem ninguém abrir dashboard. Só que "esse servidor precisa de controle de acesso real" é uma frase; a especificação MCP de 2025-06-18 é um contrato: o servidor é resource server OAuth 2.1, publica metadata por RFC 9728, responde 401 com WWW-Authenticate, e deve rejeitar token cuja audiência não seja ele (RFC 8707). Token passthrough é proibido explicitamente, o servidor não repassa ao banco o token que recebeu do agente.

Na AWS, o AgentCore Gateway já entrega as duas metades: autenticação inbound (JWT/OAuth) e outbound (injeção de credencial por tool), alvos Lambda, OpenAPI e Smithy convertidos em tools MCP, e busca semântica de ferramenta para o catálogo não estourar o prompt. Use-o quando o chamador é um agente que você não controla. Se só o seu agente chama, um Lambda atrás de IAM com aws:PrincipalTag resolve, e custa menos para manter.

Padrão 2: quatro filas num processo não são um event bus

O caso clínico é o melhor argumento do post. A versão linear, monitoramento chama compliance, que chama mensageria, que chama despacho, passou na demo e quebrou no uso real: detectar risco de queda por variação de marcha, cruzar com base de interação medicamentosa e avisar alguém antes de fechar a janela de ação. Numa call chain a latência é aditiva; num bus por tópico, dois agentes que não dependem um do outro rodam no mesmo instante. Uma queda de 15% na velocidade de marcha publica CLINICAL.ANOMALY_DETECTED; o agente de compliance já está estacionado no tópico e publica CLINICAL.COMPLIANCE_REPORT_READY quando termina, sem polling, sem handoff explícito.

O que o post chama de event bus é quatro asyncio.Queue, uma por agente, cada uma com sua corrotina. Isso é um bus dentro de um processo: o processo reinicia, os eventos em voo somem; um consumidor trava, ninguém sabe; não há retry, DLQ nem ordem garantida. Serve para o desafio. Para produção eu troco por EventBridge, o padrão de retry por alvo é 24 horas e até 185 tentativas com backoff exponencial e jitter, e a DLQ recebe o que esgotar, ou por SNS com fan-out para uma SQS por agente quando preciso de ordem por chave (FIFO com MessageGroupId = paciente).

Dois detalhes que a versão em memória esconde: idempotência, porque um bus gerenciado entrega pelo menos uma vez e o agente de mensageria não pode avisar a família duas vezes; e schema do evento, porque "evento tipado" em Python é uma dataclass, e entre serviços é um contrato versionado em EventBridge Schema Registry. Quem esquece o segundo descobre na primeira mudança de campo.

Os quatro padrões numa única requisição

Uma mensagem entra, passa pelo roteamento em camadas, vira evento, aciona agentes em paralelo, cruza uma única função de validação e sai como tool MCP para outros agentes.

🟧 AWS: Roteamento em camadas (padrão 4)
  • Camada 0: regex · 0 tokens, >40% resolvido
  • Camada 1: classificador · ~10 tokens, temperature 0.1
  • Camada 2: modelo completo · só o que sobrou
📡 AWS: Event bus (padrão 2)
  • EventBridge · CLINICAL.* por tópico
  • DLQ (SQS) · após 185 retries / 24h
🤖 Agentes, reação paralela
  • Agente de compliance · cruza interação medicamentosa
  • Agente de mensageria · idempotente por paciente
  • Agente de despacho
🔐 Saída, mesma régua (padrões 3 e 1)
  • Modelo primário · 503 → fallback com backoff
  • Modelo fallback · mesma família ou menor
  • validate_response() · ponto único, sem atalho
  • AgentCore Gateway · servidor MCP, JWT + audiência

Padrão 3: o fallback passa pela mesma função ou não é fallback

O time de raciocínio clínico viu o Gemini 3.1 Pro devolver 503 sob carga real. A resposta comum seria retry contra o mesmo modelo; eles caíram para o Gemini 3.6 Flash com backoff. O detalhe que vale roubar não é o fallback, é onde mora a validação: uma única validate_clinical_response() que os dois caminhos são obrigados a chamar, checando se a resposta cita uma diretriz clínica real e não linguagem médica plausível. Não é "lembrar de aplicar a régua duas vezes"; é tornar estruturalmente impossível aplicá-la uma só.

Eu já vi a versão errada desse padrão em plataforma de pagamentos: validação duplicada por caminho, uma cópia atualizada num sprint, a outra esquecida, e a resposta de menor qualidade saindo pelo caminho "raro" durante um incidente, exatamente quando ninguém está olhando. A lição dura: fallback sem validação compartilhada é rebaixamento silencioso de SLO, e rebaixamento silencioso é o pior tipo em ambiente regulado, porque o log diz 200.

No Bedrock a primeira linha de defesa contra 503 e ThrottlingException nem é trocar de modelo: é chamar por inference profile cross-region (us., eu., apac.), que roteia para outra região da mesma geografia sem custo adicional de roteamento, o preço é o da região de origem, e o CloudTrail registra additionalEventData.inferenceRegion para a auditoria. Só quando isso esgota eu troco de modelo, e aí três regras: o modelId que respondeu vai para o log estruturado e para uma métrica (fallback_ratio com alarme acima de 5%); a validação é uma função com testes próprios, não um trecho de prompt; e o fallback nunca recebe ferramentas que o primário não recebia.

Padrão 4: roteamento em camadas é FinOps aplicado a tokens

O time que olhou a própria conta de inferência achou o que todo mundo acha: "onde está meu pedido" e "cancela minha consulta" passando pela mesma chamada completa que uma pergunta genuinamente ambígua. A resposta foi três camadas, regex para intenção navegacional (zero tokens), uma chamada barata ao Gemini com dez tokens de saída e temperature 0.1 para o ambíguo, e o modelo de raciocínio só para o resto. A primeira camada sozinha resolveu mais de 40% das mensagens, por medição deles, antes de qualquer modelo ser tocado.

É o mesmo princípio de todo custo de manutenção que eu aplico a plataforma de dados: o processamento mais barato é o que não acontece. A camada zero é determinística, testável com uma tabela de casos, e auditável, em ambiente com BACEN ou LGPD na mesa, poder dizer "essa resposta não passou por modelo" tem valor próprio. O risco é o inverso: regex generoso demais classifica errado sem custar nada, e erro grátis não aparece em dashboard de custo. Meça a taxa de "regex acertou" com amostragem humana, não só o volume.

A versão gerenciada na AWS é o Intelligent Prompt Routing do Bedrock: um endpoint que prevê a qualidade de resposta de dois modelos da mesma família e roteia pelo responseQualityDifference que você configura, com modelo de fallback como âncora. Serve como camada 1 ou 2, não como camada 0, ele ainda gasta tokens, e tem três limites documentados: é otimizado só para inglês, exige exatamente dois modelos da mesma família e não aprende com a performance da sua aplicação. Para o português das minhas cargas, a camada zero continua sendo regex e a camada um continua sendo um classificador meu, com maxTokens de dez e a lista de intenções versionada no repositório.

Onde os quatro padrões brilham

Contexto limitado por construção: a tool devolve o plano de execução, não a tabela, o orçamento de tokens deixa de depender da disciplina de quem escreve prompt.
Latência deixa de ser aditiva: compliance e mensageria acordam no mesmo evento; o agente mais rápido não espera o mais lento.
Fallback sem rebaixar a régua: uma função de validação, dois modelos, nenhum atalho, o incidente não vira queda de qualidade invisível.
Custo cortado antes da inferência: mais de 40% do tráfego resolvido por regex, com zero tokens e resposta auditável.
Raciocínio vira infraestrutura: um servidor MCP é chamado por outros agentes sem segunda integração, desde que tenha audiência de token validada.

Onde o protótipo do desafio não sobrevive

Três coisas quebram na primeira semana de produção. Bus em memória: quatro asyncio.Queue morrem com o processo, sem retry, sem DLQ e sem métrica de fila, troque por EventBridge ou SNS/SQS antes de ligar tráfego real. Servidor MCP sem audiência: aceitar qualquer bearer token válido é o confused deputy da especificação; valide aud por RFC 8707 e nunca repasse o token recebido ao banco. Regex sem medição de erro: a camada zero não custa tokens, então o erro dela não aparece em conta nenhuma, amostre e conte.

Como adotar na AWS, na ordem que reduz risco

  1. 1

    Meça a camada zero antes de qualquer coisa

    Exporte uma semana de mensagens, rode a lista de regex offline e conte quantas casam e quantas casam errado. Sem esse número, o padrão 4 é opinião.

  2. 2

    Coloque o banco atrás de tools com resposta limitada

    Lambda por tool, IAM de leitura por tabela, N máximo de linhas e campos nomeados. É a metade interna do padrão 1 e o pré-requisito da externa.

  3. 3

    Troque a call chain por EventBridge com DLQ

    Um tópico por evento tipado, uma regra por agente, DLQ em SQS e chave de idempotência no detail. Mantenha o retry padrão (24h/185) até ter motivo para encurtar.

  4. 4

    Escreva a validação como função testada, depois ligue o fallback

    Primeiro inference profile cross-region contra throttling; só depois modelo alternativo. O modelId que respondeu vai para log e métrica com alarme.

  5. 5

    Exponha o servidor MCP por último, pelo AgentCore Gateway

    Inbound JWT com audiência validada, outbound com credencial por tool, e um único chamador externo na primeira semana. Superfície nova merece tráfego pequeno.

Anti-padrões que o post insinua e eu já vi de perto

  • Multiagente de crachá: um modelo, cinco prompts com nome de agente, latência somada e nenhum paralelismo, é um sistema single-thread com etiqueta nova.
  • Validação por caminho: uma cópia para o primário, outra para o fallback; a segunda envelhece e o incidente sai pela porta menos vigiada.
  • Conexão crua no contexto: SELECT * despejado no prompt; funciona no dataset de demo e estoura o orçamento de tokens na primeira tabela real.
  • Token passthrough: o servidor MCP usa no banco o mesmo token que recebeu do agente, o downstream passa a confiar num token que nunca validou.
FA
Nota do curador
Arquiteto de TI Especialista

Se eu tivesse que escolher um dos quatro para implantar amanhã numa plataforma financeira, seria o padrão 3, a validação única, porque é o único que protege contra um erro que o log não mostra. Os outros três economizam dinheiro ou latência; esse economiza um incidente com auditor. Eu faria a função de validação primeiro, com testes que rodam no CI contra respostas gravadas dos dois modelos, e só depois ligaria o fallback. A lição que carrego de anos de plantão: o caminho raro é o que roda no pior dia, e código que roda no pior dia precisa do mesmo teste que o caminho feliz.

Veredito

4/5

O post vale como lista de verificação, não como arquitetura de referência: ele descreve corretamente o que separa multiagente de prompt chain e para antes da parte cara, que é operar. Adote os quatro padrões quando seu sistema tem agentes com tempos diferentes, um modelo que já devolveu 503 em produção e uma conta de inferência que alguém lê todo mês. Fique na call chain quando são dois passos, um modelo e nenhum SLO, o bus e a validação única custam manutenção que esse caso não paga. Na AWS, a tradução é EventBridge com DLQ, inference profile cross-region antes de trocar de modelo, e AgentCore Gateway só quando o chamador é um agente que você não controla.

Referências

Google Developers Blog: 4 engineering patterns behind the strongest AI Agents Challenge submissions (2 set 2026)MCP Specification 2025-06-18: Authorization (OAuth 2.1, RFC 9728, RFC 8707, token passthrough)Amazon Bedrock AgentCore Gateway, inbound/outbound auth, alvos Lambda/OpenAPI/Smithy, busca semântica de toolsAmazon EventBridge: How EventBridge retries delivering events (24h / 185 tentativas)Amazon Bedrock: Cross-Region inference (perfis geográficos e globais, sem custo de roteamento)Amazon Bedrock: Understanding intelligent prompt routing (responseQualityDifference, limites)AWS Machine Learning Blog: Migrating multi-model AI agents to Amazon Bedrock AgentCore runtime (18 set 2026)
#ai-agents#mcp#event-driven#bedrock#agentcore#eventbridge#finops#resilience
Compartilhar:LinkedInWhatsAppXBaixar em Markdown
Fonte analisada: 4 engineering patterns behind the strongest AI Agents Challenge submissions
Próximo passo
Agentes de IA em produção na AWSComo eu desenho, oriento e audito agentes que vão ao ar, com os números e as fontes.Ver o IA BuilderTrilha Arquiteto de IA, gratuitaFundamentos, LLMs, RAG, tools, MCP e arquitetura na AWS, em aulas curtas e interativas.Começar a trilha

Continue lendo

IA & AgentesWeb Search no Bedrock AgentCore: Revisão Técnica AprofundadaO Web Search no Amazon Bedrock AgentCore entrega busca web gerenciada para agentes de IA, com zero egresso de dados fora do ambiente AWS e grounding via MCP. Avalio a capacidade com olhar crítico de arquiteto sênior: trade-offs reais, limites operacionais e quando faz sentido adotar.Ler IA & AgentesFable 5.1 no Bedrock: retenção de dados virou decisão de arquiteturaClaude Fable 5.1 chegou ao Bedrock em 1º de setembro de 2026 com 1M de contexto e uma condição que nenhum modelo anterior da Anthropic tinha: você precisa autorizar explicitamente a retenção de prompts e saídas por até 30 dias dentro da AWS. Isso não é uma caixinha de consentimento, é uma configuração de conta com raio de alcance organizacional, que colide com o SCP de zero data retention que a maioria dos ambientes regulados já tem escrito.Ler IA & AgentesRAG sobre ServiceNow: o conector que apaga o user criteriaO conector nativo de ServiceNow do Amazon Bedrock Managed Knowledge Base chegou em 4 de setembro de 2026 e tira semanas de pipeline artesanal do caminho. Ele também instrui você a usar uma conta de serviço com knowledge_admin, que ignora o user criteria por knowledge base, e o conector não ingere ACL de documento. Este é o retro do piloto em que essas duas linhas de documentação se encontraram.Ler
AnteriorBeanstalk Cluster Mode: o postmortem que escrevi antes do incidentePróximoNotebook fora do cluster: migrar para Spark Connect no EMR on EKS
Gostou desta análise? Receba a próxima.

Deep dives de arquitetura, AWS, IA e mercado: direto no seu email. Grátis.

Sem spam · cancele quando quiser

Pergunte ao Fernando sobre isto

Uma resposta focada sobre este artigo, do meu assistente de IA, baseada no meu trabalho.

Participe da conversa

Entre para comentar

Confirme seu e-mail para participar, você também recebe a newsletter. Sem senha.

Neste artigo
O que o post é, e o que não éPadrão 1: MCP bidirecional é uma decisão de superfície de ataquePadrão 2: quatro filas num processo não são um event busArquiteturaPadrão 3: o fallback passa pela mesma função ou não é fallbackPadrão 4: roteamento em camadas é FinOps aplicado a tokensComo adotar na AWS, na ordem que reduz riscoAntipadrõesVereditoReferências