工作流引擎是驱动 Dify 工作流和高级聊天应用的执行系统。它提供了一个基于图的执行引擎,可以顺序或并行处理节点,管理变量状态,处理流式输出,并与 AI 模型和外部服务集成。本页介绍了核心执行架构、节点类型和管道实现。
工作流引擎由多个关键组件组成,共同执行工作流图。
来源
来源
The GraphEngine 是处理工作流图的核心执行系统,通过遍历节点和管理执行状态来完成。
来源
工作流引擎支持多种节点类型,每种节点类型都实现为 BaseNode 的子类,并具有特定的执行逻辑。
| 节点类型 | 类 | 目的 | 关键方法 |
|---|---|---|---|
NodeType.LLM | LLMNode | AI 模型调用 | _invoke_llm(), _fetch_model_config() |
NodeType.ITERATION | IterationNode | 列表处理 | _run_single_iter(), _handle_event_metadata() |
NodeType.KNOWLEDGE_RETRIEVAL | KnowledgeRetrievalNode | 知识库查询 | _run() |
NodeType.CODE | CodeNode | 代码执行 | _run_code() |
NodeType.HTTP_REQUEST | HttpRequestNode | HTTP 请求 | _do_http_request() |
NodeType.IF_ELSE | IfElseNode | 条件逻辑 | _run() |
来源
The IterationNode 支持顺序和并行执行模式来处理列表项。
来源
The VariablePool 在工作流执行期间管理运行时状态和节点之间的数据流。
工作流引擎提供所有节点可访问的内置系统变量。
| System Variable | 键 | 目的 |
|---|---|---|
| 用户查询 | SYSTEM_VARIABLE_NODE_ID.query | 用户输入文本 |
| 文件 | SYSTEM_VARIABLE_NODE_ID.files | 上传的文件 |
| 对话 ID | SYSTEM_VARIABLE_NODE_ID.conversation_id | 聊天会话 ID |
| 用户 ID | SYSTEM_VARIABLE_NODE_ID.user_id | 当前用户 ID |
来源
工作流引擎通过专门的管道类与 Dify 应用集成,这些管道类负责执行和流式处理。
The AdvancedChatAppGenerateTaskPipeline 处理带有工作流后端的聊天应用。
来源
工作流引擎使用事件驱动的架构来进行实时执行更新和流式响应。
The LLMNode 支持通过事件系统进行流式输出。
来源
工作流引擎与 Dify 的模型提供商系统集成,用于 AI 模型访问和管理。
The LLMNode 通过提供商系统访问模型配置。
来源
工作流系统是 Dify 的强大组成部分,它使用户能够通过可视化界面创建复杂的 AI 应用程序。它提供了一种灵活的、基于节点的流程设计方法,可以包含 AI 模型、数据操作、外部服务和逻辑运算。
主要功能包括
工作流系统使技术和非技术用户都能够创建复杂的 AI 应用程序,而无需编写代码,同时仍然为复杂用例提供所需的灵活性和功能。