菜单

工作流引擎

相关源文件

工作流引擎是驱动 Dify 工作流和高级聊天应用的执行系统。它提供了一个基于图的执行引擎,可以顺序或并行处理节点,管理变量状态,处理流式输出,并与 AI 模型和外部服务集成。本页介绍了核心执行架构、节点类型和管道实现。

架构概述

工作流引擎由多个关键组件组成,共同执行工作流图。

  1. GraphEngine:处理工作流图的核心执行引擎
  2. 节点类型:执行特定操作的独立处理单元
  3. 变量池:节点间数据流的运行时状态管理
  4. 事件系统:流式执行事件和进度更新
  5. 管道管理器:与聊天和工作流应用的集成

工作流引擎架构

来源

Graph Engine Runtime Model

来源

Graph Engine Execution

The GraphEngine 是处理工作流图的核心执行系统,通过遍历节点和管理执行状态来完成。

Graph Engine Execution Flow

来源

节点类型和执行

工作流引擎支持多种节点类型,每种节点类型都实现为 BaseNode 的子类,并具有特定的执行逻辑。

核心节点类型实现

节点类型目的关键方法
NodeType.LLMLLMNodeAI 模型调用_invoke_llm(), _fetch_model_config()
NodeType.ITERATIONIterationNode列表处理_run_single_iter(), _handle_event_metadata()
NodeType.KNOWLEDGE_RETRIEVALKnowledgeRetrievalNode知识库查询_run()
NodeType.CODECodeNode代码执行_run_code()
NodeType.HTTP_REQUESTHttpRequestNodeHTTP 请求_do_http_request()
NodeType.IF_ELSEIfElseNode条件逻辑_run()

LLM Node Execution Flow

来源

Iteration Node Parallel Execution

The IterationNode 支持顺序和并行执行模式来处理列表项。

来源

变量池和状态管理

The VariablePool 在工作流执行期间管理运行时状态和节点之间的数据流。

Variable Pool Architecture

系统变量

工作流引擎提供所有节点可访问的内置系统变量。

System Variable目的
用户查询SYSTEM_VARIABLE_NODE_ID.query用户输入文本
文件SYSTEM_VARIABLE_NODE_ID.files上传的文件
对话 IDSYSTEM_VARIABLE_NODE_ID.conversation_id聊天会话 ID
用户 IDSYSTEM_VARIABLE_NODE_ID.user_id当前用户 ID

来源

高级聊天和工作流管道

工作流引擎通过专门的管道类与 Dify 应用集成,这些管道类负责执行和流式处理。

管道架构

Advanced Chat Pipeline Execution

The AdvancedChatAppGenerateTaskPipeline 处理带有工作流后端的聊天应用。

来源

事件系统和流式处理

工作流引擎使用事件驱动的架构来进行实时执行更新和流式响应。

Event Flow Architecture

LLM 流式集成

The LLMNode 支持通过事件系统进行流式输出。

来源

与模型提供商集成

工作流引擎与 Dify 的模型提供商系统集成,用于 AI 模型访问和管理。

Model Provider Integration Flow

Provider Configuration Access

The LLMNode 通过提供商系统访问模型配置。

来源

结论

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

主要功能包括

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

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