Adicionando Middleware

A página anterior mostrou como o conhecimento especializado de domínio reutilizável é embalado em pacotes de habilidades — incluindo instruções, material de referência e scripts — formando unidades autocontidas que qualquer agente pode carregar sob demanda. Mas à medida que você implanta agentes em produção, surge uma nova categoria de problemas: problemas que permeiam todas as interações, independentemente do que o agente faz.

Você precisa registrar todas as solicitações e respostas em log. Você precisa de guardrails que bloqueiam conteúdo prejudicial antes que o modelo o veja. Você precisa impor limites de taxa, capturar exceções normalmente e injetar telemetria , tudo sem tocar na lógica central do agente. Copiar essas questões em cada agente (ou cada ferramenta, ou cada habilidade) não escala e cria pesadelos de manutenção.

O middleware resolve isso. O Middleware permite encapsular o pipeline de execução do agente com comportamentos reutilizáveis que interceptam, inspecionam e modificam solicitações e respostas em pontos bem definidos. Pense no middleware como uma série de camadas concêntricas ao redor do agente – cada camada tem a chance de agir na entrada antes de chegar ao agente e na saída antes de chegar ao chamador.

Quando usar

Adicione middleware ao seu agente quando:

  • Você precisa de guardrails para bloquear conteúdo prejudicial, impróprio ou que violem políticas, antes ou depois de ser processado pelo modelo.
  • Você deseja registro centralizado de logs ou telemetria para todas as interações dos agentes sem modificar cada agente individualmente.
  • Você precisa modificar solicitações ou respostas – enriquecendo prompts, transformando saídas ou substituindo resultados inteiramente – sem alterar a lógica do agente.
  • Você deseja impor políticas como limitação de taxa, filtragem de conteúdo ou verificações de autenticação que se aplicam a cada execução.
  • Você precisa lidar com exceções de forma consistente – repetindo falhas transitórias, retornando respostas de fallback normalmente ou registrando erros de diagnóstico.
  • Você deseja compartilhar o estado em todo o pipeline, por exemplo, acompanhar o tempo de requisição ou acumular métricas de que vários componentes de middleware precisam.

Dica

O Agent Framework inclui instrumentação interna para rastreamento e métricas. Consulte Observabilidade para obter detalhes.

Como funciona o pipeline de middleware

Quando você chama o método de execução do agente, a solicitação não vai diretamente para o modelo. Em vez disso, ele flui por um pipeline de camadas de middleware, cada uma das quais pode inspecionar ou modificar a solicitação, delegar para a próxima camada e, em seguida, inspecionar ou modificar a resposta no caminho de volta.

┌─────────────────────────────────────────────────────────┐
│  Caller: agent.run("What's the weather?")               │
└──────────────┬──────────────────────────────────────────┘
               ▼
┌─────────────────────────────────────────────────────────┐
│  Middleware 1 (Logging)                                  │
│  • Logs the incoming request                            │
│  • Calls next middleware                                │
│  • Logs the outgoing response                           │
└──────────────┬──────────────────────────────────────────┘
               ▼
┌─────────────────────────────────────────────────────────┐
│  Middleware 2 (Guardrails)                               │
│  • Checks input against content policy                  │
│  • If blocked → returns early with rejection message    │
│  • If allowed → calls next middleware                   │
│  • Checks output against content policy                 │
└──────────────┬──────────────────────────────────────────┘
               ▼
┌─────────────────────────────────────────────────────────┐
│  Agent core (model invocation, tool calls, etc.)        │
└─────────────────────────────────────────────────────────┘

Pontos principais:

  1. Cada middleware decide se deseja continuar. Um middleware pode chamar a próxima camada na cadeia para continuar normalmente ou, assim como, pode interromper o pipeline retornando uma resposta diretamente — por exemplo, quando uma barreira de segurança bloqueia uma solicitação.
  2. O Middleware enxerga ambas as direções. Um middleware executa o código antes de delegar (para inspecionar ou modificar a entrada) e depois que a resposta retorna (para inspecionar ou modificar a saída). Este é o padrão clássico de "cebola".
  3. Várias cadeias de middleware juntas. Quando você registra vários componentes de middleware, eles aninham: o primeiro middleware registrado é a camada mais externa e o último registrado é a camada mais interna mais próxima do agente.

Dica

Para obter uma visão detalhada de como o middleware se encaixa no pipeline completo de execução do agente, incluindo provedores de contexto e camadas de cliente de bate-papo, consulte a Arquitetura de Pipeline do Agente.

O que o middleware pode fazer

O Agent Framework dá suporte ao middleware em três camadas do pipeline — execução do agente, chamada de função e cliente de chat — fornecendo controle refinado sobre onde você intercepta a execução. Os padrões comuns incluem:

Padrão Exemplo Referência
Guardrails & encerramento Bloquear conteúdo prejudicial, limitar o comprimento da conversa Terminação & Barreiras
Tratamento de exceções Tentar novamente em falhas transitórias, retornar respostas alternativas Tratamento de exceção
Substituições de resultados Redigir dados confidenciais, enriquecer ou substituir a saída do agente Substituições de resultados
Estado compartilhado Passe IDs de solicitação ou dados de tempo entre middlewares Estado Compartilhado
Contexto de runtime Variar o comportamento com base na configuração de sessão, usuário ou por execução Contexto de runtime
Escopo Aplicar middleware a todas as execuções ou apenas a uma única execução Agente vs Escopo de Execução

Para obter um passo a passo completo de definição e registro de middleware, consulte Definir Middleware. Para obter a visão geral da arquitetura completa, consulte a Visão geral do Middleware.

Considerações

Consideração Detalhes
Separação de interesses Middleware mantém a lógica transversal fora do código do agente, das ferramentas e das suas competências. Cada componente de middleware tem uma única responsabilidade — registro de log, barreiras de segurança, tratamento de erros — que você pode adicionar, remover ou reordenar independentemente.
Dependência de pedidos Middleware forma uma cadeia. A ordem em que você registra o middleware é importante: um middleware de log executado primeiro verá a entrada bruta, enquanto um que é executado por último verá a entrada já modificada pelo middleware anterior. Planeje deliberadamente a ordem do seu pipeline.
Depurando a complexidade Quando o middleware modifica entradas ou saídas, a depuração requer a compreensão do pipeline completo. Uma resposta pode parecer errada não por causa do agente, mas porque um middleware a transformou. Um bom middleware de log ajuda a diagnosticar esses casos quando colocado no início da cadeia.
Sobrecarga de desempenho Cada camada de middleware adiciona tempo de processamento a cada solicitação. Para operações leves como registro em log, isso é insignificante. Para operações caras, como chamar uma API externa de moderação de conteúdo, a latência se acumula, especialmente quando vários middlewares desse tipo são encadeados.

Próximas Etapas 

Agora que seu agente tem ferramentas, habilidades e middleware, a próxima etapa são os provedores de contexto – componentes que injetam memória, perfis de usuário e conhecimento dinâmico na janela de contexto do agente antes de cada execução.

Vá mais fundo: