Appearance
Dify工作流入门
如需转载,请联系微信群主
我们之前讲到的聊天助手应用
、文本生成应用
、Agent应用
都是依赖提示词Prompt
技术和LLM大
语言模型推理能力。
试想我们需要对一个数字数组进行自定义的复杂运算或者调用我们自己服务的Api
接口时,仅仅依靠LLM
大语言模型的推理能力是不够的。
工作流通过将复杂的任务分解成较小的步骤(节点)降低系统复杂度,减少了对提示词技术和模型推理能力的依赖,提高了 LLM 应用面向复杂任务的性能,提升了系统的可解释性、稳定性和容错性。
Dify
工作流分为两种类型:
Chatflow
:面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。Workflow
:面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。
多说无益,我们直接创建一个客户评价处理的工作流
。学习完这个工作流的案例,你就入门Dify工作流
了。
需求
一个商城网站,用户在PC
端对商品进行评价,传统的运营模式是运营人员登录管理后台系统查看用户对商品的评价。我们现在学习了AI
技术后,对评价进行智能分类,分为正面评价和负面评价,正面评价发送至公司品牌宣传部邮箱。对负面评价再进行二次分类,分为商品问题、运输问题和其他问题,商品问题发送至售后邮箱,运输问题发送至公司运输部邮箱,其他问题发送至默认的客户支持邮箱。是不是很酷?!😎
本应用属于Dify
工作流的Workflow
类型。
创建Workflow
重要节点
节点是工作流中的关键构成,通过连接不同功能的节点,执行工作流的一系列操作。
Dify
中目前支持14种节点,我们不打算流水账式一个个去介绍他们,因为对于初学者来说,这种介绍方式只会让初学者一知半解,看得云里雾里,我们直接在不断的实战案例中讲解每一个节点!
本小节的客户评价处理工作流
包括开始
、结束
、问题分类器
、HTTP请求
、变量聚合器
节点。
开始
每一个工作流都需要一个开始节点,你可以在开始节点中自定义启动工作流的输入变量。
客户评价处理的工作流的开始节点定义了productId(商品id)
、review(客户评价)
和默认的sys.user_id(客户id)
输入变量。
问题分类
通过定义分类描述,问题分类器能够根据用户输入推理与之相匹配的分类并输出分类结果。问题分类器其实就是依赖LLM
大语言自身的能力对用户输入进行分类。
客户评价处理工作流中问题分类节点的作用是对用户输入的商品评价文本进行正面评价和负面评价分类,其中负面评价再分为售后问题、运输问题和其他问题。
输入变量是用户输入的客户评价文本,输出变量是设置的分类名称。
别忘了在问题分类节点设置大模型。
HTTP请求
HTTP请求节点
能够向指定的网络地址发送定制化的HTTP
请求,实现与各种外部服务的互联互通。 客户评价处理的工作流中的HTTP请求节点将客户评价文本根据问题分类节点的分类发送给各部门的邮箱。
HTTP请求节点
可以支持GET
, POST
, HEAD
, PATCH
, PUT
, DELETE
请求方法。
这里设置了productId(商品id)
、review(客户评价)
和默认的sys.user_id(客户id)
、type(问题类型)
。
type
- type = 1 正面评价
- type = 2 售后问题
- type = 3 运输问题
- type = 其他 其他问题
4种问题对应4个HTTP请求节点
中的type
变量。
Java SpringBoot
编写客户评价处理接口。
http://localhost:8089/customer/handle?userId=1&productId=100&review=非常好,下次还买&type=1
接口方法中直接返回message
模拟发送邮件。
// CustomerServiceController.java
@RestController
@RequestMapping("/customer")
public class CustomerServiceController {
@GetMapping("/handle")
public String handle(
@RequestParam String userId,
@RequestParam String productId,
@RequestParam String type,
@RequestParam String review){
String message;
switch (type) {
case "1":
//发送至品牌宣传部邮箱
message = "已发送至品牌宣传部邮箱";
break;
case "2":
//发送至售后邮箱
message = "已发送至售后邮箱";
break;
case "3":
//发送至运输部邮箱
message = "已发送至运输部邮箱";
break;
default:
//发送至默认客户支持邮箱
message = "已发送至默认客户支持邮箱";
break;
}
return message;
}
}
变量聚合
将多路分支的变量聚合为一个变量,以实现下游节点统一配置。
客户评价处理的工作流中4个HTTP
请求节点输出的变量(即Java SpringBoot
接口返回值)聚合成一个变量在结束节点中输出。
结束
定义一个工作流程结束的最终输出内容。每一个工作流在完整执行后都需要至少一个结束节点,用于输出完整执行的最终结果。
结束节点为流程终止节点,后面无法再添加其他节点,工作流应用中只有运行到结束节点才会输出执行结果。若流程中出现条件分叉,则需要定义多个结束节点。
结束节点直接输出变量聚合节点输出的变量。
连接各个节点
连接工作流中的每一个节点,上一个节点的输出变量作为下一个节点的输入变量。
导出DSL
客户评价处理工作流
应用可以导出为DSL
,方便你在Dify
工作区中导入查看整个应用的编排。点击 客户评价处理工作流.yml下载。
创建应用时,选择导入DSL
文件即可。
如需转载,请联系微信群主
加群:
扫描下方二维码加好友,添加申请填写“ai加群”,成功添加后,回复“ai加群”或耐心等待管理员邀请你入群