Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A página anterior mostrou como as competências empacotam conhecimentos de domínio reutilizáveis — instruções, material de referência e scripts — em unidades autónomas que qualquer agente pode carregar a pedido. Mas, à medida que se implementam agentes em produção, surge uma nova categoria de problemas: problemas que atravessam todas as interações independentemente do que o agente faça.
Tens de registar todos os pedidos e respostas. Precisas de guardas que bloqueiem conteúdos prejudiciais antes que o modelo o veja. Precisa de impor limites de taxa, detetar exceções com elegância e injetar telemetria — tudo isto sem tocar na lógica central do agente. Copiar e colar estas preocupações em todos os agentes (ou em todas as ferramentas, ou em todas as competências) não é sustentável e cria problemas sérios de manutenção.
Middleware resolve isto. O middleware permite-lhe envolver o pipeline de execução do agente com comportamentos reutilizáveis que intercetam, inspecionam e modificam pedidos e respostas em pontos bem definidos. Pense no middleware como uma série de camadas concêntricas em torno do agente — cada camada tem a oportunidade de agir sobre a entrada antes de chegar ao agente, e sobre a saída antes de chegar ao chamador.
Quando utilizar isto
Adicione middleware ao seu agente quando:
- É preciso mecanismos de proteção para bloquear conteúdos prejudiciais, fora do tópico ou que violem políticas antes ou depois de o modelo o processar.
- Quer registo centralizado ou telemetria para todas as interações com agentes sem modificar cada agente individualmente.
- É necessário modificar pedidos ou respostas — enriquecendo prompts, transformando resultados ou substituindo resultados por completo — sem alterar a lógica do agente.
- Queres impor políticas como limitação de taxas, filtragem de conteúdo ou verificações de autenticação que se aplicam a todas as execuções.
- É necessário gerir exceções de forma consistente — tentar novamente em falhas transitórias, devolver respostas alternativas eficientes, ou registrar erros para diagnósticos.
- Querer partilhar o estado ao longo da cadeia de processamento — por exemplo, acompanhar o tempo de execução dos pedidos ou acumular métricas que vários componentes de middleware necessitam.
Sugestão
O Agent Framework inclui instrumentação incorporada para rastreamento e métricas. Consulte Observabilidade para mais detalhes.
Como funciona o pipeline de middleware
Quando chamas o método run do teu agente, o pedido não vai diretamente para o modelo. Em vez disso, flui através de um pipeline de camadas de middleware, cada uma das quais pode inspecionar ou modificar o pedido, delegar à camada seguinte e depois inspecionar ou modificar a resposta no regresso.
┌─────────────────────────────────────────────────────────┐
│ 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:
- Cada middleware decide se continua ou não. Um middleware pode chamar a camada seguinte da cadeia para proceder normalmente, ou pode curto-circuitar o pipeline ao devolver uma resposta diretamente — por exemplo, quando um guardrail bloqueia um pedido.
- O middleware observa ambos os sentidos. Um middleware executa código antes de delegar (para inspecionar ou modificar a entrada) e depois de a resposta regressar (para inspecionar ou modificar a saída). Este é o padrão clássico da "cebola".
- Vários middlewares são encadeados juntos. Quando registas vários componentes de middleware, eles aninham-se: o primeiro middleware registado é a camada mais externa, e o último registado é a camada mais interna, mais próxima do agente.
Sugestão
Para uma visão detalhada de como o middleware se integra no pipeline completo de execução do agente — incluindo fornecedores de contexto e camadas de cliente de chat — consulte a Arquitetura do Pipeline de Agentes.
O que o middleware pode fazer
O Agent Framework suporta middleware em três camadas do pipeline — execução do agente, chamada de funções e cliente de chat — dando-lhe controlo detalhado sobre onde interceta a execução. Os padrões comuns incluem:
| Padrão | Exemplo | Referência |
|---|---|---|
| Guarda-corpos e terminação | Bloquear conteúdos prejudiciais, limitar a duração das conversas | Terminação e Barreiras de Proteção |
| Processamento de exceções | Repetir em falhas transitórias, devolver respostas alternativas | Tratamento de exceções |
| Sobreposições de resultado | Editar dados sensíveis, enriquecer ou substituir os resultados do agente | Sobreposições de Resultados |
| Estado compartilhado | Passe IDs de solicitação ou dados de temporização entre os componentes do middleware | Estado Partilhado |
| Contexto de execução | Varia o comportamento consoante a sessão, utilizador ou configuração por execução | Contexto de Execução |
| Âmbito | Aplique middleware a todas as execuções ou apenas a uma única execução | Âmbito do Agente vs Âmbito de Execução |
Para uma explicação completa da definição e registo de middleware, veja Definição de Middleware. Para uma visão geral completa da arquitetura, consulte a Visão Geral do Middleware.
Considerações
| Consideração | Detalhes |
|---|---|
| Separação de responsabilidades | O middleware mantém a lógica transversal fora do código do seu agente, das suas ferramentas e das suas competências. Cada componente de middleware tem uma única responsabilidade — registo, proteções, gestão de erros — que pode adicionar, remover ou reordenar de forma independente. |
| Dependência da ordem | O middleware forma uma cadeia. A ordem em que registas o middleware importa: um middleware de registo que corre primeiro verá a entrada bruta, enquanto a que correr por último verá a entrada já modificada pelo middleware anterior. Planeie a ordem do seu oleoduto de forma deliberada. |
| Complexidade de depuração | Quando o middleware modifica entradas ou saídas, a depuração exige a compreensão de todo o pipeline. Uma resposta pode parecer errada não por causa do agente, mas porque um middleware a transformou. Um bom middleware de registo (colocado cedo na cadeia) ajuda a diagnosticar estes casos. |
| Sobrecarga de desempenho | Cada camada de middleware adiciona tempo de processamento a cada pedido. Para operações leves como o registo, isto é negligenciável. Para operações dispendiosas, como chamar uma API externa de moderação de conteúdo, a latência acumula-se — especialmente quando vários desses middleware estão em cadeia. |
Passos seguintes
Agora que o seu agente tem ferramentas, competências e middleware, o próximo passo são os fornecedores de contexto — componentes que injetam memória, perfis de utilizador e conhecimento dinâmico na janela de contexto do agente antes de cada execução.
Vai mais fundo:
- Visão Geral do Middleware — referência completa para todos os tipos de middleware
- Arquitetura do Pipeline de Agentes — como o middleware se integra no pipeline de execução