解密 Dify 工作流:从概念到实操的全面指南
Dify 平台不仅提供简单易用的应用模式,更强大的能力体现在其工作流(Workflow)功能中。工作流是构建复杂 AI 应用的核心,它允许您将不同的 AI 能力、工具、逻辑控制节点连接起来,像搭建积木一样构建出处理多步骤任务的自动化流程。
本篇文章将围绕 Dify 工作流的核心疑问,带您深入了解其具体细节。
工作流是什么?(What)
简单来说,Dify 工作流是一个可视化的编排工具,用于设计和执行一系列由 AI 模型、外部工具、以及各种逻辑判断、数据处理步骤组成的自动化流程。
它不像单次提问那样简单,而是通过拖拽、连接不同的节点,构建一个流程图。信息(输入、中间结果、最终输出)在这些节点之间流动,每个节点完成特定的任务,并将结果传递给下一个节点,直至整个流程完成。
您可以将其理解为:
- AI 任务的流水线
- 结合多种 AI 能力的自动化脚本
- 用于构建复杂 AI 应用的底层逻辑骨架
为什么需要工作流?(Why)
单次的 AI 模型调用(例如,一个简单的聊天或补全应用)难以处理以下场景:
- 多步骤任务:例如,先阅读一篇文档,然后提取关键信息,接着根据信息撰写一封邮件,最后将邮件发送出去。这需要多个连续的 AI 或工具操作。
- 结合外部工具:AI 模型本身不具备实时搜索、执行代码、访问数据库等能力。工作流可以将 AI 模型与这些外部工具无缝集成。
- 条件判断与分支:根据前一步的结果决定下一步怎么做。例如,如果用户问题关于天气,则调用天气工具;如果关于新闻,则调用新闻工具。
- 复杂的逻辑控制:处理更复杂的逻辑,如循环(虽然 Dify 目前版本可能简化了循环概念,但流程设计可以模拟)、并行处理等。
- 提高可靠性与可维护性:将复杂任务分解成小的、可管理的步骤,每个节点可以单独测试和优化,整个流程结构清晰,易于理解和修改。
- 实现更高级的 Agent 行为:通过工作流,可以赋予 AI 应用规划、工具使用和自我纠错的能力,使其表现得更像一个 Agent。
因此,当您的 AI 应用需求超出单次模型调用的范畴时,工作流就成为了构建更强大、更智能应用的必选项。
在哪里创建和使用工作流?(Where)
您可以在 Dify 平台的以下位置找到工作流功能:
-
创建工作流:
- 登录 Dify 平台。
- 导航到左侧菜单的 “Studio” 或 “工作流” 部分(具体名称可能随版本更新)。
- 在这里,您可以创建新的工作流,或管理已有的工作流。界面提供了一个画布区域,供您拖拽节点并进行连接。
-
使用工作流:
- 在应用中集成:创建好的工作流可以作为 Dify 应用(如助手模式、聊天应用、补全应用)的底层“引擎”。当用户与这些应用交互时,实际执行的是您设计好的工作流。在创建或编辑应用时,选择“工作流”作为应用的基底。
- 通过 API 调用:Dify 提供 API 接口,允许您从外部系统调用您的工作流。这使得您可以将工作流能力集成到自己的网站、移动应用或后端服务中。
使用工作流需要多少成本?(How much)
使用 Dify 工作流的成本主要包含两部分:
- Dify 平台使用费:Dify 平台本身有不同的定价计划(免费版、标准版、企业版等)。这些计划通常基于工作空间的协作人数、数据存储量、以及工作流的运行次数或总消耗量来收费。具体费用取决于您选择的计划。
- 底层模型和工具调用成本:这通常是主要的成本来源。工作流中的每个 LLM 节点调用 AI 模型(如 OpenAI 的 GPT 系列、Anthropic 的 Claude 等)都会产生费用,费用通常按使用的 token 数量计算。调用外部工具(如搜索工具、代码执行工具)也可能产生费用,这取决于工具本身或 Dify 集成工具的机制。Dify 平台会统计工作流执行过程中对这些资源的消耗,并在您的账户下进行扣费或计入使用量。
总成本是平台费用加上您工作流实际执行过程中产生的模型和工具调用费用。在设计工作流时,优化流程、选择合适的模型、减少不必要的工具调用,都能有效降低运行成本。
如何搭建一个 Dify 工作流?(How / How to – build)
搭建一个 Dify 工作流是一个可视化的过程,步骤如下:
1. 进入工作流编辑界面
- 登录 Dify,进入 “Studio” 或 “工作流” 页面。
- 点击 “创建新工作流” 按钮。
- 您将看到一个空白的画布,中间有一个默认的 “Start” 节点。
2. 了解核心节点类型
工作流由不同功能的节点组成。常见的节点包括:
- Start(开始):工作流的入口点,用于接收外部输入(如用户在应用中输入的问题)。您可以配置输入参数。
- End(结束):工作流的出口点,用于定义工作流的最终输出,通常是返回给用户的结果。您可以配置输出参数,映射流程中的变量。
- LLM(大语言模型):核心节点,用于调用配置好的大语言模型执行文本生成、理解、摘要、翻译等任务。您可以设置模型、Prompt、温度、最大生成长度等参数,并引用上游节点的变量作为 Prompt 输入。
- Tool(工具):用于调用外部工具,扩展 AI 能力,如网页搜索、文档读取、代码执行、调用自定义 API 等。需要选择具体的工具并配置其输入参数。
- Code(代码):允许您执行自定义代码(目前通常支持 Python 或 Node.js),用于数据预处理、格式转换、复杂的逻辑判断等。
- If/Else(条件判断):根据前一个节点输出的布尔条件(真或假)来决定流程走向不同的分支。
- Knowledge Retrieval(知识检索):调用配置好的知识库,检索与输入相关的信息,常用于为 LLM 节点提供参考文本。
- Template Transform(模板转换):使用 Jinja 或类似模板语言,将输入数据按照预设模板进行格式化输出。
- Variable Assigner(变量赋值):用于创建和赋值中间变量,方便数据在流程中传递和管理。
3. 拖拽并连接节点
从左侧的节点面板中选择您需要的节点类型,将其拖拽到画布上。将一个节点的输出端口拖拽到下一个节点的输入端口,即可建立连接,定义数据的流向和执行顺序。
4. 配置每个节点
双击画布上的节点,或点击节点后在右侧弹出的面板中进行配置。每个节点有不同的配置选项:
- 输入:定义节点需要接收哪些数据。这些数据可以来自 Start 节点的初始输入,也可以是上游节点的输出变量。使用 `{{variable_name}}` 语法引用变量。
- 设置:配置节点的具体行为。例如,LLM 节点需要选择模型、编写 Prompt;Tool 节点需要选择工具并设置参数;If/Else 节点需要定义判断条件。
- 输出:查看节点会产生哪些输出变量,这些变量可以被下游节点使用。
5. 映射变量
在配置节点时,尤其是在连接节点后,需要确保上游节点的输出变量被正确地映射到下游节点的输入参数中。例如,如果一个 “Search” 工具节点的输出是 `search_results`,您想在后续的 LLM 节点中使用这些结果撰写摘要,那么在 LLM 节点的 Prompt 输入中,您就需要引用 `{{search_results}}` 这个变量。
6. 测试工作流
在编辑界面的右上角找到 “运行” 或 “测试” 按钮。点击后,会弹出测试运行面板。您可以输入 Start 节点所需的输入参数,然后点击运行。界面会实时显示流程的执行路径、每个节点的输入、输出以及执行状态,这对于调试非常关键。
7. 保存工作流
编辑完成后,点击保存按钮。工作流将被保存并在您的工作流列表中显示。
如何运行、测试和调试工作流?(How to – run/test/debug)
运行:
- 如前所述,在编辑界面点击 “运行” 进行即时测试。
- 将工作流集成到 Dify 应用后,通过与应用交互来触发工作流的执行。
- 通过 Dify 提供的 API 发起调用来运行工作流。
测试:
- 在编辑界面的测试面板中,输入不同的参数组合来验证工作流在各种情况下的表现。
- 关注每个节点的输出是否符合预期。
调试:
- 查看运行日志:在测试运行面板或应用运行历史中,点击具体的运行记录,可以展开查看每个节点的详细执行情况、输入、输出和任何错误信息。
- 定位问题节点:如果工作流运行失败或结果不正确,根据运行日志找到出错的节点。
- 检查节点配置:仔细检查出错节点的输入、输出映射、Prompt 设计、工具参数设置、代码逻辑或条件判断是否正确。
- 分步测试:对于复杂的工作流,可以尝试只运行一部分节点进行测试,逐步定位问题。
- 简化问题:暂时移除或简化流程中的复杂部分,看看基础流程是否工作正常,然后逐步添加回复杂性。
通过不断地测试、查看日志和调整节点配置,您可以有效定位并解决工作流中的问题,确保其按照设计预期执行。
构建高效且稳定的工作流需要实践和经验。从小处着手,逐步增加复杂性,并充分利用 Dify 提供的可视化调试工具。
掌握了工作流的使用,您就解锁了 Dify 平台构建更复杂、更智能 AI 应用的强大能力。无论是自动化办公任务、构建智能客服、还是搭建数据分析流程,工作流都是实现这些目标的关键工具。
希望本篇详细教程能帮助您更好地理解和上手 Dify 工作流!