Dify工作流相关节点(一)
文章摘要: Dify工作流通过分解任务为节点降低复杂度,提供Chatflow和Workflow两种模式。Chatflow支持多轮对话交互,适用于客服、语义搜索等场景;Workflow适合自动化批处理任务如翻译、数据分析。核心节点包括开始节点(收集用户输入)、LLM节点(模型处理)、文档提取器(解析文件)和知识检索节点(RAG应用)。通过案例演示了标题生成、文档分析、医学问答等典型工作流构建过程,展
工作流通过将复杂的任务分解成较小的步骤(节点)降低系统复杂度,减少了对提示词技术和模 型推理能力的依赖,提高了 LLM 应用面向复杂任务的性能,提升了系统的可解释性、稳定性和容 错性。
Dify 工作流分为两种类型:Chatflow和Workflow:
Chatflow面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步 逻辑的对话式应用程序,该类应用特点在于支持对生成的结果进行多轮对话交互,调整生成 的结果。
Workflow面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自 动化等应用程序。该类型应用无法对生成的结果进行多轮对话交互。
Chatflow和Workflow两者相比,chatflow增加了 Chatbot 特性的支持。Chatflow常见的交互 路径为:给出指令 → 生成内容 → 就内容进行多次讨论 → 重新生成结果 → 结束。Workflow常 见的交互路径为给出指令 → 生成内容 → 结束。
Chatflow和Workflow的创建位置如下:

工作流节点
为了更好的使用Dify中的工作流(Chatflow/Workflow),我们先了解下工作流中的节点。节点 是工作流中的关键构成,通过连接不同功能的节点,执行工作流的一系列操作。下面介绍常用的 节点。
开始节点
"开始" 节点是每个工作流应用(Chatflow / Workflow)必备的预设节点,为后续工作流节点以 及应用的正常流转提供必要的初始信息,例如应用使用者所输入的内容、以及上传的文件等。
如下是工作流应用(Chatflow / Workflow)开始节点的设置页,可以看到“输入字段”和预设 的系统变量。

输入字段
输入字段功能由用户设置,用于让用户主动补全更多信息。例如在周报应用中要求用户按照格式 预先提供更多背景信息,如姓名、工作日期区间、工作详情等。这些前置信息将有助于 LLM 生成 质量更高的答复。
输入字段支持文本、段落、下拉选项、数字、单文件、文件列表六种类型。
系统变量
系统变量指的是在 Chatflow / Workflow 应用内预设的系统级参数,可以被应用内的其它节点全 局读取。
Chatflow 类型应用提供以下系统变量:

Workflow 类型应用提供以下系统变量:

LLM节点
LLM 节点是 Chatflow/Workflow 的核心节点。该节点能够利用大语言模型的对话/生成/分类/处 理等能力,根据给定的提示词处理广泛的任务类型,并能够在工作流的不同环节使用。选择合适 的模型,编写提示词,你可以在 Chatflow/Workflow 中构建出强大、可靠的解决方案。
LLM节点设置页如下:


模型:选择LLM模型。
上下文(可选):上下文可以理解为向 LLM 提供的背景信息,常用于填写知识检索的输出变 量。
SYSTEM:指定提示词,告诉模型做什么事情。
记忆:是否开启聊天记忆。
视觉:开启视觉功能允许模型输入图片,并根据图像内容的理解回答用户问题。
输出变量:模型生成内容输出的变量。
直接回复节点
定义一个 Chatflow 流程中的回复内容。你可以在文本编辑器中自由定义回复格式,包括自定义 一段固定的文本内容、使用前置步骤中的输出变量作为回复内容、或者将自定义文本与变量组合 后回复。
直接回复节点设置页如下:

案例一 :创建chatflow,根据用户输入的关键词生成标题。
1) 在开始节点中加入自定义字段“title”

2) 加入LLM节点,配置模型根据用户关键字生成标题
在LLM中配置提示词:“你是一个专业的标题撰写大师,请根据用户输入的{{title}}来生成吸引眼球 的标题。”

3) 创建直接回复节点,配置输出格式

4) 运行与分布模型
点击“预览”可以测试chatflow,点击“发布”可以发布模型到工作区。

点击发布将Chatflow应用发布到工作区。

文档提取器节点
LLM 自身无法直接读取或解释文档的内容。因此需要将用户上传的文档,通过文档提取器节点解 析并读取文档文件中的信息,转化文本之后再将内容传给 LLM 以实现对于文件内容的处理。
文档提取器节点设置页如下:

输入变量:文档提取器仅接受一个文件或者多个文件,对应File和Array[File]。文档提取器仅 能够提取文档类型文件中的信息,例如 TXT、Markdown、PDF、HTML、DOCX 格式文件 的内容,无法处理图片、音频、视频等格式文件。
输出变量:输出变量固定命名为 text。输出的变量类型取决于输入变量(输入为File则输出 为string;输入为File[Array]则输出为array[string])。
案例二:创建chatflow,使用大模型分析文档内容,根据文档内容回复用户问题。
1) 创建开始节点,添加单文件变量并命名为pdf

2) 添加文档提取节点,并在输入变量中选择pdf变量

3) 添加LLM节点
LLM节点中设置系统提示词:“请读取文档{{text}}内容,并根据文档中的内容回答用户问题”。 特别提示:text为文档提取器输出变量,不要选择pdf变量,因为LLM无法直接读取pdf文件。

4) 添加直接回复节点,输出模型结果

5) 测试并发布chatflow
预览测试:

发布使用:

知识检索节点
知识检索节点用于从知识库中检索与用户问题相关的文本内容,可作为下游 LLM 节点的上下文来 使用,知识检索节点常用于构建基于外部数据/知识的 AI 问答系统(RAG)系统。
知识检索节点设置页如下:

查询变量:查询变量通常代表用户输入的问题,该变量可以作为输入项并检索知识库中的相 关文本分段。在常见的对话类应用中一般将开始节点的 sys.query 作为查询变量,知识库所 能接受的最大查询内容为 200 字符。
知识库:选择需要查询的知识库,可选知识库需要在 Dify 知识库内预先创建。
元数据过滤:在元数据筛选板块中配置元数据的筛选条件,使用元数据功能筛选知识库内的 文档。
输出变量:知识检索的输出变量 result 为从知识库中检索到的相关文本分段。其变量数据结 构中包含了分段内容、标题、链接、图标、元数据信息。
在常见的chatflow中,知识库检索的下游节点一般为 LLM 节点,知识检索的输出变量 result 需 要配置在 LLM 节点中的上下文变量内关联赋值,关联后你可以在提示词的合适位置插入上下文变 量。
当用户提问时,若在知识检索中召回了相关文本,文本内容会作为上下文变量中的值填入提示 词,提供 LLM 回复问题;若未在知识库检索中召回相关的文本,上下文变量值为空,LLM 则会 直接回复用户问题。
案例三:创建chatflow,构建医学知识问答系统(RAG)。
1) 在“知识库”中创建知识库
在知识库中上传“内科学.pdf”文件,构建知识库。



2) 创建开始节点

3) 创建知识检索节点

4) 创建LLM节点
LLM节点中要设置上下文,上下文就是知识检索节点中的知识库,并且需要在SYSTEM中引用上 下文,让LLM知道回答用户问题所引用的知识库。
你是一个精通内科学的高手,使用以下内容作为你所学习的知识,放在<context></context>标签内。
<context> {{上下文}}
</context>
回答用户时,仅能根据知识库中的内容来回复用户问题,避免提及你是从上下文中获取的信息,如果你不知道,就

5) 创建直接回复节点

6) 测试并发布chatflow
预览测试:

发布使用:

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)