跳转至

Dify意图分类工作流的搭建

本节目标:

1、理解多工作流融合的整体思路

2、掌握意图分类在智能体中的核心作用

3、能基于用户问题自动判断意图(分析 / 知识 / 通用)

一 本节说明

通过前几节的学习,我们已经分别搭建了三类核心工作流: 1、直接大模型回复工作流(通用问答) 2、RAG回复工作流(知识库问答) 3、数据分析工作流(数据库查询与分析)

在本节中,我们将通过意图分类节点,对用户问题进行自动识别与分流,将以上三类能力进行统一整合。

当用户提出不同类型的问题时,系统可以自动判断其意图,并路由到对应的工作流分支,例如:

通用问题 → 走大模型回复流程

知识类问题 → 走RAG检索流程

数据类问题 → 走数据分析流程

最终实现一个多能力融合的智能体系统,让用户通过一个入口,即可完成多种类型的问题处理。

二 工作流示意图

工作流示意图如下,先进行大模型意图分类,然后用JSON解析意图,最后用分支节点进行分支。

img

三 工作流搭建

1、意图分类节点

通过意图分类节点,对用户输入进行分类处理。

img

系统提示词:

【意图分类】
sales_analysis
涉及基于数据库的销售数据分析问题,包括但不限于:
销量、销售额、订单量、用户数统计
趋势分析(按天/周/月)
分类/商品/城市维度对比
排名、TopN、占比分析
报表、聚合计算
数据范围限定为以下四张表:
user(用户:城市、注册时间)
product(商品:名称、分类、价格)
orders(订单:金额、时间)
order_item(订单明细:商品、数量、金额)
只要问题涉及“数据库数据统计/分析”,归为 sales_analysis。

product_query
涉及“具体产品信息或产品内容理解”的问题,包括但不限于:
产品介绍、参数、功能、价格
产品卖点、定位、适用人群、使用场景
产品推荐、对比、选购建议
基于提供的产品资料进行总结、改写、提炼、销售话术生成
已知产品资料范围包括(但不限于):
美的空调 酷省电 1.5匹
iPhone 15 Pro
MacBook Air M3
《Python编程从入门到实践》
只要问题涉及“这些产品的内容/理解/加工”,一律归为 product_query,即使没有明确提到“产品”二字。

other
不属于以上两类的问题。

【强判定规则(非常重要)】
优先判断是否为 product_query(只要涉及产品内容,一律归此类)
只有明确涉及“数据统计/分析/SQL/报表”的,才归为 sales_analysis
不明确或泛问题,一律归为 other

【输出字段】
intent:意图类型
reason:分类依据的简短说明

【严格约束】
所有字段的值都必须是字符串
intent 只能是 "sales_analysis"、"product_query"、"other"
reason 必须控制在 20 个字以内
不允许输出 markdown 代码块
不允许输出 ```json
不允许输出解释说明
不允许输出多余字段
不允许输出数组格式
必须直接输出可被 JSON 解析器解析的纯 JSON 字符串

【输出格式示例】
{"intent":"product_query","reason":"询问产品卖点"}

用户提示词

【用户输入】
{{#sys.query#}}

2、Json处理-Json解析

通过json解析,对意图进行解析处理。

img

3、条件分支节点-分析意图走向

根据用户意图进行不同的走向处理

img

四 完整工作流图

至此,我们项目的完整工作流已经部署完成了。

导出工作流图:

img

完整工作流图导出如下。

img

五 测试完整工作流

1、测试基础问答

img

2、测试RAG回答

img

3、测试数据分析问答

img

4、测试数据分析+图表问答

img

六 本节总结

本节通过意图分类,将不同工作流整合在一起,实现自动分流处理。

核心流程:意图识别 → JSON解析 → 分支执行