news 2026/8/14 6:22:13

.NET+AI | Agent | 自定义中间件(11)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
.NET+AI | Agent | 自定义中间件(11)

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

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

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

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


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

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

3D模型生成终极指南:腾讯Hunyuan3D-2mini轻量化技术深度解析

还在为复杂的3D建模软件发愁吗?专业建模师需要花费数小时完成的工作,现在普通人只需输入文字描述,30秒内就能获得完整的3D模型。腾讯最新开源的Hunyuan3D-2mini模型,以仅0.6B的参数规模,实现了前所未有的"轻量高速…

作者头像 李华
网站建设 2026/8/13 9:27:01

Kubernetes Dashboard可视化监控:从架构原理到生产实践

在Kubernetes集群运维中,命令行工具虽然功能强大但学习曲线陡峭,而Dashboard作为官方提供的Web管理界面,通过直观的可视化方式降低了操作门槛。本文将深入解析Dashboard的部署架构、安全认证机制和实际应用场景,帮助您构建可靠的可…

作者头像 李华
网站建设 2026/8/12 22:36:11

基于DWS MCP Server搭建数据分析Agent

本文分享自华为云社区《基于DWS MCP Server搭建数据分析Agent》 1. 前言 MCP(Model Context Protocol)是由Anthropic于2024年11月提出的开放协议标准,旨在解决大型语言模型与外部系统(如数据库、API)交互的碎片化问题。…

作者头像 李华
网站建设 2026/8/12 17:45:09

兰州失控车辆证明科技已偷走车辆的控制权,黑客入侵会如何?

兰州失控车辆以115公里时速狂奔4个多小时,直到燃油耗尽才将车辆停下,证明了电子控制系统的不可靠,那么那些已赋予智驾更多控制权的车辆呢?想想都觉得后背发凉,事实证明科技无法为人类提供足够的安全保障!在…

作者头像 李华
网站建设 2026/8/13 15:26:08

FaceFusion在虚拟演唱会中的粉丝形象互动应用

FaceFusion在虚拟演唱会中的粉丝形象互动应用如今,一场虚拟演唱会的后台正悄然上演着技术与情感的双重交响。大屏上,成千上万张面孔随着音乐节奏律动——那些不是预设的3D模型,而是真实粉丝的脸,被实时“搬”上了舞台。有人看到自…

作者头像 李华