支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


从零开始学 Dify- 工作流(Workflow)系统架构

发布日期:2025-05-15 05:39:00 浏览次数: 1570 作者:HelloTech技术派
推荐语

掌握Dify工作流系统,构建复杂AI应用的基石。

核心内容:
1. Dify工作流系统架构与组件分析
2. 前端编辑器基于ReactFlow的可视化设计
3. 后端执行引擎的工作流存储、验证与执行

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

工作流系统(Workflow System)是 dify 的核心组件,它支持通过可视化编程界面创建复杂的 AI 应用程序。它允许用户通过将不同的功能块连接在一起来设计工作流,以处理数据、与 AI 模型交互、管理条件并执行各种操作。本文将详细分析工作流系统的架构、组件和功能,重点介绍了前端编辑器和后端执行引擎。

???欢迎关注,一起进步???

往期内容推荐阅读

架构概述

工作流系统在构建时明确区分了前端和后端组件:

  1. 前端提供了一个基于 ReactFlow 的可视化编辑器,允许用户通过添加节点并连接它们来设计工作流程
  2. 后端处理工作流存储、验证和执行

工作流系统架构

核心数据表

前端工作流编辑器

工作流编辑器是一个可视化画布,用户可以在其中创建和编辑工作流。它基于 ReactFlow 构建,ReactFlow 是一个用于构建基于节点的编辑器和交互式图表的库。

工作流编辑器包括几个关键组件:

  1. 标题(Header) :包含发布、更新和管理工作流版本的操作
  2. 面板(Panel) :显示所选节点的配置选项
  3. 操作员(Operator) :提供添加块、缩放和更改模式的工具
  4. ReactFlow :显示并可操作节点和边的主画布

节点类型

工作流系统支持各种类型,每种都有特定的功能:

类别
节点类型
目的
流程控制
开始、结束
定义工作流的入口点和出口点
输出
回答
定义聊天对话的回复内容
AI
LLM, Agent
调用大型语言模型进行文本生成
Knowledge
Knowledge Retrieval
从知识库查询内容
Logic
If/Else,问题分类器
实现条件分支
Code
代码、模板转换
执行代码或转换数据
数据
HTTP 请求,变量分配器
获取外部数据或管理变量
迭代
迭代、循环
处理列表或创建循环
Tools
Tool
调用外部工具或插件

节点交互

工作流编辑器中的节点支持各种交互:

  1. 拖放(Drag and Drop) :可以在画布上拖动节点
  2. 连接(Connect) :可以通过从源手柄拖动到目标手柄来连接节点
  3. 配置(Configure) :单击节点显示其配置面板
  4. 调整大小(Resize) :某些节点可以调整大小
  5. 删除 :可以删除节点

工作流编辑器包括针对这些操作的复杂交互处理:

后端工作流管理

工作流系统的后端处理工作流的存储、验证和执行。

Workflow Services

后端为工作流管理提供了几种服务:

  1. WorkflowService :处理工作流的 CRUD 操作,包括草稿和已发布版本
  2. AppDslService :以 DSL(领域特定语言)的形式管理导入和导出工作流
  3. WorkflowExecutionService :执行工作流并管理其状态

工作流 CRUD 操作

Dify 中的工作流程遵循草稿和发布模型:

  1. 草稿工作流程(Draft Workflow) :每个工作流程应用程序都有一个可以编辑的草稿版本
  2. 已发布的工作流程(Published Workflow) :草稿准备好后即可发布,从而创建版本快照
  3. 版本历史记录(Version History) :已发布的工作流程有版本控制,允许用户查看和恢复以前的版本

DSL 导入/导出

可以使用领域特定语言 (DSL) 将工作流导出为 YAML 文件。这允许:

  1. 备份(Backup) :保存工作流程以供备份
  2. 共享(Sharing) :在实例或用户之间共享工作流程
  3. 版本控制 :将工作流程存储在版本控制系统中

AppDslService 处理导入和导出工作流,包括处理敏感信息:

工作流执行

工作流系统包括用于执行工作流的组件,既可用于开发期间的测试,也可用于生产使用。

执行流程

执行工作流时,它遵循以下步骤:

  1. 初始化(Initialization) :加载工作流配置并创建执行上下文
  2. 节点执行(Node Execution) :根据图执行工作流中的每个节点
  3. 数据流(Data Flow) :根据连接在节点之间传递数据
  4. 错误处理(Error Handling) :根据节点配置处理错误
  5. 完成(Completion) :返回最终结果

错误处理

节点可以配置不同的错误处理策略:

  1. None :发生错误时停止执行
  2. 默认值 :如果发生错误,则返回默认值
  3. 失败分支(Fail Branch) :发生错误时执行特定分支

此外,可以将节点配置为在失败时重试:

高级功能特性

变量和数据流

工作流系统支持多种类型的变量:

  1. 环境变量(Environment Variables) :存储配置和密码等
  2. 对话变量(Conversation Variables) :存储会话之间需要记住的交互信息
  3. 节点输出变量(Node Output Variables) :每个节点生成的数据可供后续节点使用

变量是有类型的,可以包括:

  • Strings  字符串
  • Numbers  数字
  • Objects  对象
  • Arrays  数组
  • Files  文件

并行和迭代处理

工作流系统支持高级流程控制:

  1. 并行处理 :同时执行多个分支
  2. 迭代 :逐个处理列表中的项目
  3. 循环 :重复节点序列,直到满足条件

工作流作为工具

工作流系统的一个强大功能是能够将工作流公开为可用于其他工作流或应用程序的工具:

  1. 工作流可以作为工具发布
  2. 该工具可以像任何其他工具一样在其他工作流程中使用
  3. 这使得工作流程的可重用性和组合成为可能

与其他 Dify 组件集成

工作流系统与 Dify 的其他核心组件集成:

模型提供者集成

工作流可以通过模型提供程序系统使用大型语言模型 (LLM):

  1. LLM 节点连接到模型提供系统以访问各种 AI 模型
  2. 系统处理身份验证、速率限制和特定于模型的配置

知识库集成

知识检索节点可以访问 Dify 的知识库:

  1. 工作流可以查询知识库来检索相关信息
  2. 检索到的内容可用于提示或进一步处理

工具集成

工作流程可以使用各种工具:

  1. 内置工具(Built-in Tools) :Dify 提供的系统工具
  2. 自定义工具(Custom Tools) :用户定义的 API 工具
  3. 插件工具(Plugin Tools) :已安装插件的工具
  4. 工作流工具(Workflow Tools) :其他以工具形式公开的工作流

总结

工作流系统是 Dify 的一个强大组件,它使用户能够通过可视化界面创建复杂的 AI 应用程序。它提供了一种灵活的、基于节点的方法来设计流程,可以整合 AI 模型、数据操作、外部服务和逻辑操作。

主要特点包括:

  • 用于设计工作流程的可视化编辑器
  • 支持多种节点类型用于不同的操作
  • 节点间数据流的变量系统
  • 高级流程控制,包括条件、迭代和循环
  • 与其他 Dify 组件(如模型、知识库和工具)集成
  • 错误处理和重试机制
  • 通过 DSL 导入/导出功能

工作流系统使技术和非技术用户无需编写代码即可创建复杂的 AI 应用程序,同时仍提供复杂用例所需的灵活性和功能。

参考资料

https://github.com/langgenius/dify

推荐阅读

接下来将分别介绍各个子系统:

模型提供者系统(Model Provider System) ✅

RAG 知识系统(RAG Knowledge System) ✅

对话系统(Conversation System) ✅

工作流系统(Workflow System) ✅

???欢迎关注,一起进步???

欢迎留言讨论哈

?点赞、分享、推荐恭喜发财?

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询