一、简介
官方地址:https://docs.dify.ai/zh-hans/guides/workflow
工作流通过将复杂的任务分解成较小的步骤(节点)降低系统复杂度,减少了对提示词技术和模型推理能力的依赖,提高了 LLM 应用面向复杂任务的性能,提升了系统的可解释性、稳定性和容错性。
Dify 工作流分为两种类型:
-
Chatflow:面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。
-
Workflow:面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。
为解决自然语言输入中用户意图识别的复杂性,Chatflow 提供了问题理解类节点。相对于 Workflow 增加了 Chatbot 特性的支持,如:对话历史(Memory)、标注回复、Answer 节点等。
为解决自动化和批处理情景中复杂业务逻辑,工作流提供了丰富的逻辑节点,如代码节点、IF/ELSE 节点、模板转换、迭代节点等,除此之外也将提供定时和事件触发的能力,方便构建自动化流程。
二、工作流使用
先来看一个,比较复杂的工作流
本文不会演示这么复杂的工作流,先来演示一个简单的工作流。
创建工作流
效果如下:
增加一个功能,查询我的公网ip,需要调用api来获取,比如:http://ip-api.com/json
访问之后,会显示一段json
{"status": "success","country": "China","countryCode": "CN","region": "BJ","regionName": "Beijing","city": "Jinrongjie","zip": "","lat": 39.9175,"lon": 116.362,"timezone": "Asia/Shanghai","isp": "China Unicom Shanghai network","org": "Unicom SH","as": "AS17621 China Unicom Shanghai network","query": "140.206.98.218" }
最后需要从json里面,提取query字段,就是我们要的公网ip了。
点击中间的LLM,右键删除
点击加号,选择条件分支
添加条件,选择query,也就是聊天输入框,对于的变量
条件是,包含公网ip
点击if后面的加号,选择HTTP请求
输入地址http://ip-api.com/json即可,其他的不需要设置
点击加号,选择代码执行
删除参数arg2,选择arg1变量,选择body,也就是上一步http请求的结果
arg1的变量就是http请求的body
python代码如下:
import json def main(arg1: str) -> dict:content=json.loads(arg1)return {"result": content['query'],}
代码说明:
content变量就是将body内容转换为字典,使用json.loads
最后return字典的query字段,也就是body内容的query
设置效果如下:
连线到 直接回复,点击{x},选择变量,选择代码执行result
最后添加else分支,选择LLM,上下文选择变量sys.query
最后添加直接回复
最终效果如下:
点击发布更新,运行一下
提问
点击Workflow Process,就可以看到执行的流程
如果不包含公网ip,就会走下面的流程