在低代码AI开发领域,dify以其创新的工作流节点系统成为行业标杆。通过将复杂任务拆解为可编排的智能单元,Dify实现了从对话机器人到企业级自动化流程的全场景覆盖。
Dify 中提供了五种应用类型:
-
聊天助手:基于 LLM 构建对话式交互的助手 -
文本生成应用:面向文本生成类任务的助手,例如撰写故事、文本分类、翻译等 -
Agent:能够分解任务、推理思考、调用工具的对话式智能助手 -
对话流:适用于定义等复杂流程的多轮对话场景,具有记忆功能的应用编排方式 -
工作流:适用于自动化、批处理等单轮生成类任务的场景的应用编排方式
主要就对话流和工作流进行对比分析
Dify 工作流分为两种类型:
-
Chatflow: -
适用场景面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。该类型应用的特点在于支持对生成的结果进行多轮对话交互,调整生成的结果。
常见的交互路径:给出指令 → 生成内容 → 就内容进行多次讨论 → 重新生成结果 → 结束

-
Workflow: -
面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。该类型应用无法对生成的结果进行多轮对话交互。
常见的交互路径:给出指令 → 生成内容 → 结束

下述 Dify 变量系统的结构化对比:
变量 | Dify
-
Workflow 和 Chatflow 类型应用由独立节点相构成。大部分节点设有输入和输出项,但每个节点的输入信息不一致,各个节点所输出的答复也不尽相同。
如何用一种固定的符号指代动态变化的内容?
-
变量作为一种动态数据容器,能够存储和传递不固定的内容,在不同的节点内被相互引用,实现信息在节点间的灵活通信。
系统变量
系统变量指的是在 Chatflow / Workflow 应用内预设的系统级参数,可以被其它节点全局读取。系统级变量均以 sys
开头。
Workflow
Workflow 类型应用提供以下系统变量:
|
|
|
|
---|---|---|---|
sys.files
|
|
|
|
sys.user_id |
|
|
|
sys.app_id |
|
|
|
sys.workflow_id |
|
|
|
sys.workflow_run_id |
|
|
|

Chatflow
Chatflow 类型应用提供以下系统变量:
|
|
|
|
---|---|---|---|
sys.query |
|
|
|
sys.files |
|
|
|
sys.dialogue_count |
|
|
|
sys.conversation_id |
|
|
|
sys.user_id |
|
|
|
sys.app_id |
|
|
|
sys.workflow_id |
|
|
|
sys.workflow_run_id |
|
|
|

环境变量
环境变量用于保护工作流内所涉及的敏感信息,例如运行工作流时所涉及的 API 密钥、数据库密码等。它们被存储在工作流程中,而不是代码中,以便在不同环境中共享。

环境变量支持以下三种数据类型:
-
String
字符串 -
Number
数字 -
Secret
密钥
环境变量拥有以下特性:
-
环境变量可在大部分节点内全局引用; -
环境变量命名不可重复; -
环境变量为只读变量,不可写入;
会话变量
会话变量面向多轮对话场景,而 Workflow 类型应用的交互是线性而独立的,不存在多次对话交互的情况,因此会话变量仅适用于 Chatflow 类型(聊天助手 → 工作流编排)应用。
-
会话变量允许应用开发者在同一个 Chatflow 会话内,指定需要被临时存储的特定信息,并确保在当前工作流内的多轮对话内都能够引用该信息,如上下文、上传至对话框的文件(即将上线)、用户在对话过程中所输入的偏好信息等。好比为 LLM 提供一个可以被随时查看的“备忘录”,避免因 LLM 记忆出错而导致的信息偏差。
-
例如你可以将用户在首轮对话时输入的语言偏好存储至会话变量中,LLM 在回答时将参考会话变量中的信息,并在后续的对话中使用指定的语言回复用户。

会话变量支持以下六种数据类型:
-
String
字符串 -
Number
数值 -
Object
对象 -
Array[string]
字符串数组 -
Array[number]
数值数组 -
Array[object]
对象数组
会话变量具有以下特性:
-
会话变量可在大部分节点内全局引用; -
会话变量的写入需要使用变量赋值节点; -
会话变量为可读写变量;

注意事项
-
为避免变量名重复,节点命名不可重复; -
节点的输出变量一般为固定变量,不可编辑。