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

中生国态(北京)文化传播有限公司 2026/09/09 18:34:30

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 各司其职

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

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

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


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

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

石家庄网站建设莆田网站建设

快速体验打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容:请生成一个完整的H5视频直播网页应用源码,要求包含以下功能&#

2026/06/30 11:54:28

襄樊网站建设建设购物网站

2025网络安全新方向:华为HCIE认证详解(建议收藏)本文针对35岁+人群转行IT行业问题,强调考证重要性,推荐华为HC

2026/06/30 10:17:49

成都网站建设公司成都 网站建设

STM32固件开发:为什么老工程师还在用Keil编译器v5.06?你有没有遇到过这样的情况?接手一个老旧的STM32项目,打开Keil工程文件时

2026/06/30 12:20:30

长安网站建设番禺网站建设

树莓派5上手实录:从拆盒到系统跑起来上周刚拿到全新的树莓派5,迫不及待开箱折腾了一番。作为一个从树莓派3时代就开始玩的老用户,这次升级真的让我眼前一亮——不只

2026/06/30 12:11:59

丹阳网站建设济南营销型网站建设

HuggingFace镜像网站与AI数字人系统的落地实践在大模型时代,一个开发者最熟悉的场景莫过于:深夜加班,准备跑通一个刚发现的开源项目,结果

2026/06/30 11:03:53

邵阳网站建设巴中网站建设

还在为Proxmark3的存储瓶颈和天线性能而困扰?🤔 这款被誉为RFID安全研究利器的设备,通过巧妙的硬件改装,可以释放出令人惊叹的潜能&#

2026/06/30 11:24:55

西安网站建设公司郴州网站建设

ESP32 WiFi连接实战:从零搞定稳定联网,告别断连重试你有没有遇到过这种情况?设备上电好几秒都没连上Wi-Fi,串口疯狂打印“Reconn

2026/06/30 11:09:24

厦门网站建设番禺网站建设

YOLO推理速度提不上去?可能是你没选对GPU架构在工业质检产线的实时监控系统中,一个看似简单的“卡顿”问题,可能让整条自动化流水线停摆。某客户反馈ÿ

2026/06/30 11:55:58

建设网站公司乐清网站建设

PaddlePaddle数据加载瓶颈分析与提速方法在现代深度学习训练中,我们常常会遇到这样一种“怪象”:明明配备了高端GPU,监控工具却显示显卡利用率长期徘徊

2026/06/30 13:55:08

企业网站建设方案北京网站建设公司

目录已开发项目效果实现截图开发技术介绍系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码

2026/06/30 12:43:02