Dify 工作流类型说明文档

版本:1.9.2

最后更新:2025年12月


概述

Dify 平台支持三种工作流类型,每种类型针对不同的使用场景进行了优化:

工作流类型 标识值 主要用途
常规工作流 workflow 一次性任务处理、批量数据处理
Chat 工作流 chat 多轮对话应用、智能助手
RAG Pipeline rag-pipeline 知识库文档处理、智能检索增强

类型定义

工作流类型在后端定义于 api/core/workflow/enums.pyapi/models/workflow.py

python 复制代码
class WorkflowType(StrEnum):
    WORKFLOW = "workflow"
    CHAT = "chat"
    RAG_PIPELINE = "rag-pipeline"

工作流类型详解

常规工作流 (Workflow)

定义

常规工作流是一种单次执行的处理流程,适用于不需要上下文记忆的任务。每次执行都是独立的,不保留历史交互信息。

核心特点
特性 描述
执行模式 单次执行,无状态
上下文 无对话历史
变量系统 仅支持环境变量 (Environment Variables)
触发方式 API 调用 / 手动触发
输出形式 结构化数据 / 文本
入口节点

使用 Start 节点作为入口,可配置多种输入参数类型:

  • 文本 (text-input)
  • 段落 (paragraph)
  • 数字 (number)
  • 选择器 (select)
  • 文件 (files)
典型结构
复制代码
Start → [处理节点链] → End
适用场景
  1. 批量数据处理

    • 文档批量翻译
    • 数据格式转换
    • 内容批量生成
  2. 自动化任务

    • 定时报告生成
    • 数据分析流程
    • 邮件内容生成
  3. API 服务

    • 无状态 API 接口
    • 数据处理服务
    • 内容审核服务
  4. 一次性处理

    • 表单数据处理
    • 图像分析
    • 文件解析

Chat 工作流 (Chat)

定义

Chat 工作流专为多轮对话场景设计,支持会话历史记忆和上下文感知。这是构建智能助手和对话机器人的首选类型。

核心特点
特性 描述
执行模式 会话式,有状态
上下文 支持完整对话历史
变量系统 环境变量 + 会话变量 (Conversation Variables)
触发方式 用户消息 / API 调用
输出形式 流式文本 / 结构化响应
入口节点

使用 Start 节点,但具备以下 Chat 专属特性:

  • 自动注入 sys.query(用户当前输入)
  • 自动注入 sys.conversation_id(会话标识)
  • 支持 sys.files(用户上传文件)
会话变量系统

Chat 工作流独有的会话变量 (Conversation Variables) 系统:

python 复制代码
# 会话变量定义在 Workflow 模型中
_conversation_variables: Mapped[str] = mapped_column(
    "conversation_variables", sa.Text, nullable=False, server_default="{}"
)

会话变量特点:

  • 跨轮次持久化:在同一会话内保持状态
  • 自动初始化:首次对话时创建
  • 运行时更新:通过 Variable Assigner 节点修改
  • 会话隔离:不同会话之间相互独立
典型结构
复制代码
Start → LLM (带历史) → [可选处理] → Answer
高级功能
  1. 对话历史管理

    • 自动累积对话记录
    • 可配置历史窗口大小
    • 支持历史摘要压缩
  2. 流式输出

    • 实时返回生成内容
    • 支持多个 Answer 节点
    • 支持中间状态展示
  3. 会话状态跟踪

    • 用户偏好记忆
    • 任务进度追踪
    • 多轮收集信息
适用场景
  1. 智能客服

    • 多轮问答
    • 问题诊断
    • 服务引导
  2. 个人助手

    • 日程管理
    • 信息查询
    • 任务规划
  3. 教育辅导

    • 知识问答
    • 学习引导
    • 练习批改
  4. 销售顾问

    • 产品推荐
    • 需求分析
    • 订单处理

RAG Pipeline

定义

RAG Pipeline 是专为知识库增强场景设计的工作流类型,用于处理文档索引、知识检索和智能问答。它是 Dify 知识库功能的核心引擎。

核心特点
特性 描述
执行模式 数据驱动,可批量
上下文 知识库上下文
变量系统 环境变量 + RAG Pipeline 变量
触发方式 文档导入 / 索引构建 / 检索请求
输出形式 索引数据 / 检索结果
专属节点

RAG Pipeline 具有两个独占节点,在其他工作流类型中不可用:

节点 用途
Datasource 定义数据来源(文件、Notion、网页爬取等)
Knowledge Index 执行文档分段、向量化和索引构建
RAG Pipeline 变量
python 复制代码
# RAG Pipeline 专属变量
_rag_pipeline_variables: Mapped[str] = mapped_column(
    "rag_pipeline_variables", db.Text, nullable=False, server_default="{}"
)
典型结构

文档处理流程:

复制代码
Datasource → [文档处理节点] → Knowledge Index

检索增强流程:

复制代码
Start → Knowledge Retrieval → LLM → Answer
核心能力
  1. 多源数据接入

    • 本地文件上传
    • Notion 集成
    • 网页爬取
    • API 数据源
  2. 智能分段策略

    • 自动分段
    • 自定义分段规则
    • 父子分段模式
  3. 向量化处理

    • 多种 Embedding 模型
    • 批量向量化
    • 增量更新
  4. 检索优化

    • 混合检索
    • 重排序
    • 上下文压缩
适用场景
  1. 企业知识库

    • 文档智能检索
    • 知识问答系统
    • 政策查询助手
  2. 文档处理

    • 大批量文档索引
    • 内容提取分析
    • 多格式文档解析
  3. 智能搜索

    • 语义搜索
    • 精准问答
    • 引用溯源

技术架构对比

执行引擎差异

复制代码
┌─────────────────────────────────────────────────────────────────┐
│                        执行引擎架构                              │
├─────────────────┬─────────────────┬─────────────────────────────┤
│   Workflow      │     Chat        │      RAG Pipeline           │
├─────────────────┼─────────────────┼─────────────────────────────┤
│ WorkflowRunner  │ AdvancedChat    │   PipelineRunner            │
│                 │ AppRunner       │                             │
├─────────────────┼─────────────────┼─────────────────────────────┤
│ 无会话状态      │ 维护会话状态    │   处理数据流                │
│ 单次执行        │ 多轮交互        │   批量/流式处理             │
│ 直接返回结果    │ 流式响应        │   索引构建                  │
└─────────────────┴─────────────────┴─────────────────────────────┘

后端服务对应

工作流类型 主要服务类 执行器
Workflow WorkflowService WorkflowAppRunner
Chat WorkflowService AdvancedChatAppRunner
RAG Pipeline RagPipelineService PipelineRunner

变量系统差异

变量类型支持矩阵

变量类型 Workflow Chat RAG Pipeline
环境变量 (Environment Variables)
会话变量 (Conversation Variables)
RAG Pipeline 变量
系统变量 (sys.*)

变量生命周期

复制代码
┌─────────────────────────────────────────────────────────────────┐
│                      变量生命周期对比                            │
├─────────────────────────────────────────────────────────────────┤
│ 环境变量                                                        │
│ ├── 作用域: 工作流级别                                          │
│ ├── 生命周期: 工作流配置期间                                     │
│ └── 用途: 全局配置、API Key、常量                                │
├─────────────────────────────────────────────────────────────────┤
│ 会话变量 (仅 Chat)                                              │
│ ├── 作用域: 会话级别                                            │
│ ├── 生命周期: 会话存续期间                                       │
│ └── 用途: 用户偏好、累积数据、状态追踪                           │
├─────────────────────────────────────────────────────────────────┤
│ RAG Pipeline 变量 (仅 RAG Pipeline)                             │
│ ├── 作用域: Pipeline 执行级别                                   │
│ ├── 生命周期: 单次 Pipeline 执行                                 │
│ └── 用途: 文档元数据、处理参数                                   │
└─────────────────────────────────────────────────────────────────┘

节点可用性矩阵

完整节点可用性

节点类型 Workflow Chat RAG Pipeline 说明
入口/出口节点
Start 入口配置不同
End Chat 使用 Answer
Answer 流式输出
LLM 节点
LLM
Agent
数据处理节点
Code
Template Transform
Variable Assigner
Variable Aggregator
List Operator
Document Extractor
知识库节点
Knowledge Retrieval
RAG Pipeline 专属
Datasource 数据源定义
Knowledge Index 索引构建
流程控制节点
IF/ELSE
Iteration
Loop
Parallel
工具节点
Tool
HTTP Request
其他节点
Parameter Extractor
Question Classifier

应用模式与工作流类型映射

Dify 的应用模式 (AppMode)工作流类型 (WorkflowType) 存在映射关系:

AppMode 定义

python 复制代码
class AppMode(StrEnum):
    COMPLETION = "completion"      # 文本生成
    WORKFLOW = "workflow"          # 常规工作流
    CHAT = "chat"                  # 基础对话
    ADVANCED_CHAT = "advanced-chat" # 高级对话 (Chat 工作流)
    AGENT_CHAT = "agent-chat"      # Agent 对话
    CHANNEL = "channel"            # 渠道
    RAG_PIPELINE = "rag-pipeline"  # RAG Pipeline

映射规则

python 复制代码
@classmethod
def from_app_mode(cls, app_mode: Union[str, "AppMode"]) -> "WorkflowType":
    app_mode = app_mode if isinstance(app_mode, AppMode) else AppMode.value_of(app_mode)
    return cls.WORKFLOW if app_mode == AppMode.WORKFLOW else cls.CHAT

映射关系表

AppMode WorkflowType 说明
workflow WORKFLOW 1:1 映射
advanced-chat CHAT 使用 Chat 工作流引擎
chat CHAT 基础对话模式
agent-chat CHAT Agent 也使用 Chat 引擎
rag-pipeline RAG_PIPELINE RAG 专用类型

适用场景指南

场景决策矩阵

场景特征 推荐类型 原因
需要多轮对话 Chat 内置会话管理
一次性数据处理 Workflow 无状态设计更高效
构建知识库 RAG Pipeline 专用节点支持
需要记忆用户偏好 Chat 会话变量支持
批量文档索引 RAG Pipeline 批量处理优化
API 服务接口 Workflow 简单直接
智能客服/助手 Chat 自然对话体验
定时任务 Workflow 易于调度触发
文档问答系统 Chat + 知识库 结合检索与对话

详细场景示例

场景 1: 智能客服系统

推荐类型: Chat 工作流

理由:

  • 需要多轮对话理解用户问题
  • 需要记住对话上下文
  • 需要流式输出提升体验

典型配置:

复制代码
Start → Knowledge Retrieval → LLM (with history) → Answer
场景 2: 文档批量翻译

推荐类型: 常规 Workflow

理由:

  • 单次处理,无需上下文
  • 批量处理效率更高
  • 结构化输出便于后处理

典型配置:

复制代码
Start → Document Extractor → LLM → End
场景 3: 企业知识库构建

推荐类型: RAG Pipeline

理由:

  • 需要专用的 Datasource 节点
  • 需要 Knowledge Index 进行索引
  • 支持多种数据源接入

典型配置:

复制代码
Datasource → Code (预处理) → Knowledge Index
场景 4: 数据分析报告生成

推荐类型: 常规 Workflow

理由:

  • 一次性任务
  • 需要多步骤数据处理
  • 输出结构化报告

典型配置:

复制代码
Start → HTTP Request → Code (分析) → LLM (报告) → End

选型决策树

复制代码
                    ┌─────────────────────┐
                    │   开始选择工作流类型  │
                    └──────────┬──────────┘
                               │
                    ┌──────────▼──────────┐
                    │ 是否需要构建知识库? │
                    └──────────┬──────────┘
                          ┌────┴────┐
                         是        否
                          │         │
               ┌──────────▼───┐     │
               │ RAG Pipeline │     │
               └──────────────┘     │
                               ┌────▼────────────────┐
                               │ 是否需要多轮对话?   │
                               └────┬────────────────┘
                               ┌────┴────┐
                              是        否
                               │         │
                    ┌──────────▼───┐  ┌──▼──────────┐
                    │ Chat 工作流  │  │ 常规 Workflow│
                    └──────────────┘  └─────────────┘

快速参考卡片

如果你需要... 选择
多轮对话、上下文记忆 Chat 工作流
一次性任务处理 常规 Workflow
文档索引、知识库构建 RAG Pipeline
用户偏好存储 Chat 工作流 (会话变量)
批量数据处理 常规 Workflow
API 无状态服务 常规 Workflow
智能问答系统 Chat 工作流 + 知识库

附录

相关代码文件

文件路径 说明
api/core/workflow/enums.py WorkflowType 枚举定义
api/models/workflow.py Workflow 模型和变量系统
api/models/model.py AppMode 枚举定义
api/services/workflow_service.py Workflow 服务实现
api/services/rag_pipeline/rag_pipeline.py RAG Pipeline 服务
api/core/app/apps/workflow/app_runner.py Workflow 执行器
api/core/app/apps/advanced_chat/app_runner.py Chat 执行器
api/core/app/apps/pipeline/pipeline_runner.py Pipeline 执行器

版本更新说明

版本 更新内容
1.9.x RAG Pipeline 类型增强,新增自定义模板支持
1.8.x 会话变量系统完善
1.7.x Loop 节点支持
1.6.x Agent 节点增强
相关推荐
哥本哈士奇(aspnetx)13 小时前
使用Gradio构建AI前端 - RAG召回测试
大模型
schinber19 小时前
大模型领域常见的核心名词解释
大模型·大模型名词
程序员柒叔19 小时前
Langfuse 项目概览
大模型·llm·prompt·可观测性·llm评估
FIT2CLOUD飞致云1 天前
学习笔记丨MaxKB WPS合同审核助手的设计与实现
ai·开源·工作流·智能体·maxkb
华尔街的幻觉1 天前
Dify如何解决Weaviate数据库 1.19.0 到 1.27.0+ 版本之间架构不兼容问题(附迁移脚本)
dify·weaviate·数据库兼容·数据库报错
攻城狮7号1 天前
Anthropic开源Skills项目,打响了智能体标准化的第一枪
人工智能·大模型·skills·anthropic开源·ai技能
南方者1 天前
大模型推理中 IRQ 中断优化:从机制解析到性能调优实践
大模型·irq
AI人工智能+1 天前
大模型如何革新银行流水信息抽取
大模型·ocr·文本信息抽取