山西网站建设网站建设工具

北京一乐物流有限公司 2026/09/09 18:19:08

MAF 中间件管道架构:企业级 Agent 的三层拦截体系

一句话简介

MAF 提供三层中间件架构,分别拦截 ChatClient 调用、Agent 运行和工具调用,实现日志、限流、权限等企业级横切关注点。


🎯 核心价值

  • 三层拦截:ChatClient 层、Agent Run 层、Function Invocation 层

  • 职责分离:每层处理不同粒度的横切关注点

  • 灵活组合:可独立或组合使用,按需配置


📝 三层中间件架构

各层职责对比

层级

拦截时机

典型用途

触发频率

Agent RunRunAsync()

调用

PII 过滤、Guardrails

每次 Agent 调用 1 次

ChatClient

LLM 调用

Token 统计、限流、缓存

每次 LLM 调用(可能多次)

Function

工具执行

日志、权限检查、Mock

每次工具调用


💻 实现方式

1. ChatClient 中间件

使用 MEAI 的DelegatingChatClientUse()方法:

var chatClient = AIClientHelper.GetDefaultChatClient() .AsBuilder() .Use(getResponseFunc: async (messages, options, innerClient, ct) => { Console.WriteLine($"📊 [ChatClient] 请求消息数: {messages.Count()}"); var response = await innerClient.GetResponseAsync(messages, options, ct); Console.WriteLine($"📊 [ChatClient] Token: {response.Usage?.TotalTokenCount}"); return response; }) .Build();

核心要点:

  • 🔧 拦截每次 LLM 调用

  • 🔧 可访问完整的请求和响应

  • 🔧 适用于监控、限流、缓存等场景


2. Agent Run 中间件

使用AgentBuilder.Use()添加:

var agent = chatClient.CreateAIAgent(instructions: "你是智能助手") .AsBuilder() .Use(async (messages, thread, options, innerAgent, ct) => { Console.WriteLine($"🛡️ [Agent Run] Pre-Run 检查"); var response = await innerAgent.RunAsync(messages, thread, options, ct); Console.WriteLine($"🛡️ [Agent Run] Post-Run 完成"); return response; }, null) .Build();

核心要点:

  • 🛡️ 包裹整个 Agent 执行流程

  • 🛡️ 适用于安全检查、审计日志

  • 🛡️ 每次RunAsync()只触发一次


3. Function Invocation 中间件

拦截工具函数的执行:

var agent = chatClient.CreateAIAgent(...) .AsBuilder() .Use(async (agent, context, next, ct) => { Console.WriteLine($"🔧 [Function] 调用: {context.Function.Name}"); var result = await next(context, ct); Console.WriteLine($"🔧 [Function] 结果: {result}"); return result; }) .Build();

核心要点:

  • 🔧 拦截每个工具函数调用

  • 🔧 可修改参数或覆盖结果

  • 🔧 适用于权限检查、Mock 数据


🏢 企业级最佳实践

推荐的中间件组合

// 1️⃣ ChatClient 层:监控和性能 var chatClient = baseChatClient.AsBuilder() .Use(new TokenMonitoringMiddleware()) .Use(new RateLimitingMiddleware()) .Build(); // 2️⃣ Agent 层:安全和审计 var agent = chatClient.CreateAIAgent(...) .AsBuilder() .Use(PIIFilterMiddleware, null) // PII 过滤 .Use(GuardrailsMiddleware, null) // 内容安全 .Use(FunctionLoggingMiddleware) // 工具日志 .Build();

各层职责建议

层级

推荐用途

ChatClient

Token 统计、限流、缓存、重试

Agent Run

PII 过滤、Guardrails、全局审计

Function

权限检查、调用日志、Mock 数据


🎯 总结

  • 三层架构:ChatClient、Agent Run、Function Invocation 各司其职

  • 洋葱模型:请求从外向内,响应从内向外

  • 灵活组合:根据需求选择合适的中间件层级

  • 企业级应用:安全检查最外层,性能优化靠内层


如需获取文章配套完整代码,可扫码咨询领取。👇

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

个人网站建设天津网站建设公司

1. 为什么这个毕设项目值得你 pick ?基于Java的安全生产检查统计分析智慧管理系统的设计与实现旨在填补传统选题在实用性、创新性方面的空白。该系统涵盖企业管理、分支机构管理等多个功能模块

2026/06/30 13:53:07

装饰网站建设泰州网站建设

收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我这里写目录标题项目介绍项目实现效果图所需技术栈文件解析微信开发者工具HBuilderX+uniappmysql数

2026/06/30 12:00:58

门户网站建设龙岗网站建设

计算机毕业设计springboot社区养老管理系统o1293rte(配套有源码 程序 mysql数据库 论文)本套源码可以在文本联xi,先看具体系统功能演示视频领取

2026/06/30 11:08:54

网站建设收费松江网站建设

AO3镜像站终极使用指南:快速稳定访问全球最大同人作品库【免费下载链接】AO3-Mirror-Site项目地址: https://gitcode.com/gh_mirrors/ao/AO

2026/06/30 11:09:24

忻州网站建设网站建设杭州

一、传统判空的血泪史:一个价值9800笔的错误教训在复杂的业务系统中,空指针异常(NPE)是最常见但也是最危险的错误之一。某次生产事故中

2026/06/30 13:36:36

常州网站建设陕西网站建设

KiCad轨道平滑插件终极指南:5分钟学会让PCB设计更优雅【免费下载链接】kicad-round-tracks项目地址: https://gitcode.com/gh_mirrors/

2026/06/30 11:51:27

网站建设教程烟台网站建设

GLM-4.6V-Flash-WEB助力AI学生项目:开源镜像列表一键获取在高校AI课程设计中,一个常见的难题浮出水面:学生们满怀热情地选定了“智能视觉助手”

2026/06/30 11:04:53

浙江网站建设建设行业网站

Tftpd64作为一款开源免费的多协议网络服务套件,以其轻量级特性和强大功能组合,成为网络管理员和开发者的理想选择。本文将带您从零开始,全面掌握这款工具的部署

2026/06/30 11:20:25

网站建设收费岳阳网站建设

从零开始画一块能用的双层板:一个音频放大器的PCB实战笔记你有没有过这样的经历?原理图画得挺顺,仿真波形也漂亮,结果一打样回来,电

2026/06/30 13:46:37

免费网站建设孝感网站建设

JavaScript事件循环机制迷?VibeThinker动画模拟在前端开发的世界里,几乎每个开发者都曾被这样一个问题困扰过:为什么明明setTimeout的

2026/06/30 12:12:29