MAF条件路由工作流如何应用于处理?
摘要:在实际业务场景中,一个AI工作流的多个步骤之间往往会传递一些数据,有些步骤只会在数据满足一定条件下才会被触发,而有些步骤只会在数据不满足条件的时候才被触发,总之这种if-else的决策在工作流中很常见。在MAF中,我们可以使用 Condit
大家好,我是Edison。
最近我一直在跟着圣杰的《.NET+AI智能体开发进阶》课程学习MAF的开发技巧,我强烈推荐你也上车跟我一起出发!
上一篇,我们学习了MAF中如何进行工作流的状态共享,相信你一定对WorkflowContext有了更多的了解。本篇,我们来了解下MAF中工作流是如何实现条件路由的。
条件路由的应用场景
在实际业务场景中,一个AI工作流的多个步骤之间往往会传递一些数据,有些步骤只会在数据满足一定条件下才会被触发,而有些步骤只会在数据不满足条件的时候才被触发,总之这种if-else的决策在工作流中很常见。
在MAF中,我们可以使用 Conditional Edge 即条件边 或 待决策函数的边,来实现这种工作流内部if-else决策需求。
实验案例:企业内部邮件检测
今天来实践上面这个企业内部邮件检测的工作流案例:假设我们是一个企业客服团队,我们每天会接收成百上千封用户发来的Email邮件,其中既包含正常咨询 也夹杂很多 垃圾信息。那么,如何降低人工分拣成本(减少人工负担) 又同时保留 风控可观测性(便于扩展更多节点),就是我们需要解决的问题。因此,我们可以构建一个基于LLM的工作流:
首先,通过一个垃圾邮件检测器接收客户发来的邮件,通过LLM判断是否为垃圾邮件,输出一个判断结果(关键数据:IsSpam = true/false)。
其次,系统根据判断结果IsSpam决定交由哪个后续节点处理。
如果判断结果是非垃圾邮件,则转交给发送邮件执行器进行处理,比如发送给对应的客服代表;
否则,则交给垃圾邮件处理执行器进行截断并记录或者上报人工处理等等。
最后,结束工作流。
这个案例展示了Conditional Edge 条件路由的经典场景,后续它也可以扩展为多级路由。
准备工作
在今天的这个案例中,我们仍然创建了一个.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来进行本次实验。
