MAF多路分支路由工作流如何应用于处理?

摘要:上一篇,我们学习了MAF中如何进行if-else类型的条件路由,但是实际工作中可能会村中多个分支路由的场景。在实际业务场景中,很多的业务逻辑涉及到不止两个判断条件,而是多个。在MAF中,我们可以使用 Switch-Case 来实现这种工作流
大家好,我是Edison。 最近我一直在跟着圣杰的《.NET+AI智能体开发进阶》课程学习MAF的开发技巧,我强烈推荐你也上车跟我一起出发! 上一篇,我们学习了MAF中如何进行if-else类型的条件路由,但是实际工作中可能会存在多个分支路由的场景。本篇,我们来了解下MAF中的switch-case路由实现多分支路由工作流。 Why switch-case? 在实际业务场景中,很多的业务逻辑涉及到不止两个判断条件,而是多个。 例如,在上一篇的企业内部邮件检测案例中,我们的检测结果只有两个(垃圾邮件 或 正常邮件),但如果我们想增加一个结果(不确定)就无法适用了。 在MAF中,我们可以使用 Switch-Case 来实现这种工作流内部多类决策条件的 工作流需求。 实验案例 今天来晚上上一篇这个企业内部邮件检测的工作流案例,上一篇的流程是这样的: 今天假设我们需要有更为精细的分类: ✅**正常邮件**(NotSpam):客户咨询、业务往来 ❌**垃圾邮件**(Spam):明显的诈骗、广告 ⚠️**不确定邮件**(Uncertain):可能是钓鱼邮件,需要人工审核 那么这就是一个三元分类的,在业务开发中我们通常会用到switch-case语法,而在MAF工作流中,也为我们定义了这种switch-case接口。 在下面的代码示例中,比对了两种接口的使用方式: // Conditional Edge builder .AddEdge(source, target1, condition: c => c.IsSpam == false) .AddEdge(source, target2, condition: c => c.IsSpam == true); // Switch-Case builder.AddSwitch(source, sb => sb .AddCase(c => c.Decision == NotSpam, target1) .AddCase(c => c.Decision == Spam, target2) .WithDefault(target3) ); 可以看到,switch-case模式其价值主要在于增强代码可维护性,对于后续如果有新增分类,只需要添加一个AddCase接口方法实现新增分类的处理,同时基于WithDefault接口方法实现兜底确保所有情况都有处理。 最后,下面是我们需要重构后的分支路由图: 准备工作 在今天的这个案例中,我们仍然创建了一个.NET控制台应用程序,安装了以下NuGet包: Microsoft.Agents.AI.OpenAI Microsoft.Agents.AI.Workflows Microsoft.Extensions.AI.OpenAI 我们的配置文件中定义了LLM API的信息: { "OpenAI": { "EndPoint": "https://api.siliconflow.cn", "ApiKey": "******************************", "ModelId": "Qwen/Qwen3-30B-A3B-Instruct-2507" } } 这里我们使用 SiliconCloud 提供的Qwen/Qwen3-30B-A3B-Instruct-2507模型,你可以通过这个URL注册账号:https://cloud.siliconflow.cn/i/DomqCefW获取大量免费的Token来进行本次实验。
阅读全文