2026年,AI应用开发平台Dify以149K+ Stars成为GitHub上最受欢迎的开源LLM应用开发平台。它如何工作?RAG管道、工作流引擎、Agent能力背后的架构设计是什么?本文从源码到实战,全景式剖析Dify。
目录
-
[二、项目概况:149k Stars、Apache 2.0、技术栈](#二、项目概况:149k Stars、Apache 2.0、技术栈)
-
[五、模型接入:DeepSeek / GLM 配置](#五、模型接入:DeepSeek / GLM 配置)
一、引言:从Dify看AI应用开发平台之战
2026 年,AI 应用开发正在经历一场深刻的范式转变。
一年前,开发者要构建一个 AI 应用,需要手动调用 LLM API、搭建 RAG 管道、编写 Agent 逻辑、处理会话管理。而今天,Dify------这个 149K+ Stars 的开源 LLM 应用开发平台------正在让这一切变得像搭积木一样简单。
Dify 正在成为 LLM 应用开发的"可视化 IDE"------它让 AI 应用开发从"写代码调 API"进化到"拖拽编排工作流"。
截至 2026 年 8 月,Dify 在 GitHub 上已获得 149K+ Stars,拥有 500+ 贡献者,被数千家企业用于生产环境。它采用 Apache 2.0 开源协议,技术栈为 Python + TypeScript + PostgreSQL + Redis,支持 RAG 管道、工作流编排、Agent 能力和多模型接入。
本文将深入剖析 Dify 的架构设计、核心功能、源码实现,并通过完整的实战演示,带你从零搭建一个 AI 客服应用。
二、项目概况:149k Stars、Apache 2.0、技术栈
2.1 项目定位
Dify 由 LangGenius 团队于 2023 年 5 月开源,定位为"LLM 应用开发平台"。它不是一个简单的 API 封装工具,而是一个完整的 AI 应用开发基础设施,覆盖了从数据接入、知识管理、模型配置到应用发布的全链路。
2.2 技术栈全景
| 层级 | 技术 | 用途 |
|---|---|---|
| 前端 | React + TypeScript | 可视化编辑器、应用管理界面 |
| API 服务 | Python Flask | RESTful API、WebSocket 实时通信 |
| Worker | Celery + Redis | 异步任务处理(文档解析、嵌入生成) |
| 数据库 | PostgreSQL | 业务数据存储 |
| 缓存/队列 | Redis | 会话缓存、消息队列 |
| 向量数据库 | Weaviate / Qdrant / Milvus / Pinecone | 语义检索 |
2.3 核心功能矩阵
Dify 的核心能力可以概括为四大模块:
-
RAG 管道:文档上传→自动分块→嵌入生成→向量索引→混合检索→生成增强
-
工作流引擎:DAG 可视化编排,支持 LLM、知识检索、代码执行、HTTP 请求等节点
-
Agent 能力:ReAct 模式、Function Calling、工具调用、2026 年新增沙箱执行
-
模型接入:内置 20+ 模型提供商适配,支持自定义端点
2.4 版本演进关键里程碑
| 时间 | 里程碑 |
|---|---|
| 2023-05 | 初始开源,支持 Chatbot 应用和基础 RAG |
| 2024-03 | 工作流引擎上线,支持 DAG 可视化编排 |
| 2024-09 | Agent 模式上线,支持 ReAct 和 Function Calling |
| 2025-06 | 插件系统上线,支持社区扩展 |
| 2026-01 | MCP 原生支持,工作流节点可调用 MCP 工具 |
| 2026-04 | Agent 沙箱上线,安全隔离代码执行 |
| 2026-07 | Creator Center 上线,应用模板市场 |
三、架构深度剖析
3.1 整体架构
3.2 前端层
前端基于 React + TypeScript,核心是可视化工作流编辑器。它使用 React Flow(一个基于 DAG 的节点编辑器库)来实现拖拽式的工作流编排。前端通过 RESTful API 与后端通信,同时使用 WebSocket 实现实时消息推送(如对话流式输出)。
3.3 API 服务层
API 服务基于 Python Flask 框架,职责包括:
-
用户认证与权限管理
-
应用 CRUD 与配置管理
-
对话会话管理(同步 + 流式)
-
知识库文档管理
-
工作流编排的 CRUD 与执行调度
-
模型提供商配置管理
3.4 Worker 层
Worker 使用 Celery 分布式任务队列(Redis 作为 Broker),处理以下异步任务:
-
文档解析(PDF、TXT、Markdown、DOCX 等格式)
-
文本分块与嵌入生成
-
向量索引构建与更新
-
批量数据导入导出
-
定时任务与 Webhook 触发
3.5 数据层
Dify 使用 PostgreSQL 作为主数据库,存储用户、应用、知识库、工作流定义等业务数据。Redis 用于会话缓存、消息队列和实时状态管理。
向量数据库是 Dify 的关键组件,支持 Weaviate、Qdrant、Milvus、Pinecone、Chroma 等多种后端。Dify 通过统一的向量数据库抽象层,屏蔽了不同后端的差异,开发者可以在配置文件中切换。
四、核心功能精讲
4.1 RAG 管道
RAG(检索增强生成)是 Dify 最核心的功能之一。它让 AI 应用能够基于用户提供的知识库进行回答,而不是依赖模型自身的训练数据。

RAG 管道的核心步骤:
-
文档加载:支持 PDF、TXT、Markdown、HTML、DOCX、CSV 等格式,通过插件可扩展更多格式
-
文档分块:提供固定大小分块、语义分块、递归分块三种策略,支持自定义分块参数
-
嵌入生成:调用配置的嵌入模型(如 DeepSeek Embedding、GLM Embedding、OpenAI Embedding)将文本转为向量
-
索引构建:将向量存入向量数据库,构建倒排索引和近似最近邻(ANN)索引
-
检索增强:支持向量检索、关键词检索(BM25)和混合检索(加权融合),提升召回质量
-
生成增强:将检索结果注入提示词模板,LLM 基于上下文生成回答,并附带引用来源
4.2 工作流引擎
Dify 的工作流引擎基于 DAG(有向无环图)模型,用户通过可视化编辑器拖拽节点,构建从输入到输出的完整处理流程。

工作流节点类型:
| 节点类型 | 功能 |
|---|---|
| LLM | 调用大语言模型生成回答 |
| 知识检索 | 从知识库检索相关文档 |
| 代码执行 | 执行 Python/JS 代码(2026 年起在沙箱中运行) |
| HTTP 请求 | 调用外部 API |
| 条件分支 | 根据条件选择不同路径 |
| 循环 | 重复执行子流程 |
| 变量赋值 | 设置或修改变量 |
| 模板转换 | 使用 Jinja2 模板转换文本 |
| MCP 工具 | 调用 MCP 协议的外部工具 |
4.3 Agent 能力
Dify 的 Agent 支持 ReAct(推理+行动)模式,让 AI 应用能够自主决策并调用工具。Agent 的工作流程如下:
-
接收用户输入
-
调用 LLM 分析意图,决定是否使用工具
-
如果需要工具,生成工具调用参数
-
执行工具调用,获取结果
-
将工具结果反馈给 LLM
-
循环直到生成最终回答
2026 年新增的 Agent 沙箱 提供了安全隔离的代码执行环境,支持 Python 和 JavaScript 脚本在沙箱中运行,确保代码执行不会影响宿主系统。
4.4 MCP 集成
2026 年,Dify 原生支持 MCP(Model Context Protocol),这是 Anthropic 推出的开放协议,用于标准化 AI 模型与外部工具的交互方式。
通过 MCP 集成,Dify 工作流中的节点可以直接调用 MCP 服务器提供的工具,无需编写自定义 API 适配代码。开发者只需配置 MCP 服务器地址,Dify 就会自动发现并注册可用的工具。
五、模型接入:DeepSeek / GLM 配置
Dify 的一大优势是模型无关性------它内置了 20+ 模型提供商的适配器,开发者可以自由切换。
5.1 接入 DeepSeek
DeepSeek 是目前最受欢迎的国产模型之一。在 Dify 中配置 DeepSeek 只需两步:
-
进入"设置 → 模型提供商",选择 DeepSeek
-
填写 API Key 并选择模型版本
Dify 中 DeepSeek 的配置示例
provider: deepseek
models:- name: deepseek-chat
type: llm
credentials:
api_key: "sk-your-deepseek-api-key" - name: deepseek-reasoner
type: llm
credentials:
api_key: "sk-your-deepseek-api-key" - name: deepseek-embedding
type: embedding
credentials:
api_key: "sk-your-deepseek-api-key"
- name: deepseek-chat
5.2 接入智谱 GLM
智谱 GLM 系列同样支持无缝接入:
# Dify 中 GLM 的配置示例
provider: zhipuai
models:
- name: glm-5
type: llm
credentials:
api_key: "your-zhipu-api-key"
- name: glm-5-embedding
type: embedding
credentials:
api_key: "your-zhipu-api-key"
5.3 自定义模型端点
Dify 还支持通过"兼容 OpenAI API 格式"的方式接入任意模型,极大地扩展了模型选择范围。只需在配置中填写自定义的 API 端点和 API Key 即可。
六、实战环节
6.1 Docker Compose 一键部署
# 克隆仓库
git clone https://github.com/langgenius/dify.git
cd dify
# 启动服务
docker compose up -d
# 查看服务状态
docker compose ps
Docker Compose 会启动以下服务:
| 服务 | 端口 | 说明 |
|---|---|---|
| nginx | 80 | 反向代理 |
| api | 5001 | API 服务 |
| worker | - | 异步任务 Worker |
| web | 3000 | 前端应用 |
| db | 5432 | PostgreSQL |
| redis | 6379 | Redis |
| weaviate | 8080 | 向量数据库 |
6.2 配置模型提供商
访问 http://localhost 进入 Dify 管理界面,完成账号注册后:
-
进入"设置 → 模型提供商"
-
添加 DeepSeek:填写 API Key,选择 deepseek-chat 模型
-
添加 GLM:填写 API Key,选择 glm-5 模型
-
如有需要,配置嵌入模型(deepseek-embedding 或 glm-5-embedding)
6.3 创建 AI 客服应用
-
点击"创建应用",选择"对话型应用"
-
输入应用名称,如"智能客服助手"
-
在"提示词编排"中设置系统提示词
-
选择模型(如 deepseek-chat)
系统提示词示例
你是一个专业的智能客服助手。
你的职责是:- 耐心解答用户的问题
- 基于知识库提供准确的信息
- 如果无法确定,请告知用户并建议转人工
保持友善、专业的语气。
6.4 对接知识库(RAG 配置)
-
进入"知识库"模块,点击"创建知识库"
-
上传文档(支持 PDF、TXT、Markdown 等格式)
-
选择分块策略和嵌入模型
-
等待文档处理完成,自动构建向量索引
-
在应用设置中关联知识库
-
配置检索策略(向量检索 / 关键词检索 / 混合检索)
6.5 发布应用
完成配置后,点击"发布",Dify 会生成:
-
Web 应用链接:可直接分享给用户
-
嵌入代码:通过 iframe 嵌入到现有网站
-
API 访问:提供 RESTful API 供自定义前端调用
-
客户端 SDK:支持 Python、JavaScript 等语言
七、代码深度分析
7.1 工作流引擎源码
Dify 的工作流引擎核心在 api/core/workflow/ 目录下。
DAG 定义与执行:
工作流使用 DAG(有向无环图)模型,每个节点定义自己的输入、输出和执行逻辑。引擎的核心是一个拓扑排序器,它会根据节点间的依赖关系确定执行顺序。
# 工作流引擎核心逻辑(简化)
class WorkflowEngine:
def __init__(self, graph_config):
self.graph = self._build_graph(graph_config)
self.topological_order = self._topological_sort(self.graph)
def execute(self, inputs):
results = {}
for node_id in self.topological_order:
node = self.graph[node_id]
node_inputs = self._resolve_inputs(node, results)
node_outputs = node.execute(node_inputs)
results[node_id] = node_outputs
return results
7.2 RAG 管道源码
RAG 管道的核心在 api/core/rag/ 目录下,包含文档加载、分块、嵌入、检索等模块。
# RAG 文档处理流程(简化)
class RAGPipeline:
def process_document(self, file_path):
# 1. 加载文档
loader = DocumentLoader.get_loader(file_path)
documents = loader.load(file_path)
# 2. 文档分块
chunks = TextSplitter.split(
documents,
chunk_size=500,
overlap=50
)
# 3. 生成嵌入
embeddings = self.embedding_model.embed_documents(chunks)
# 4. 构建索引
self.vector_store.add_texts(chunks, embeddings)
return len(chunks)
7.3 模型接入层源码
模型接入层使用 Provider 抽象模式,以 api/core/model_runtime/ 下的适配器为核心。每个模型提供商实现统一的接口,包括 LLM 调用、嵌入生成、Token 计数等功能。
# 模型提供商抽象接口(简化)
class BaseProvider:
def validate_credentials(self, credentials):
"""验证 API Key 等凭证"""
raise NotImplementedError
def get_llm_model(self, model_name):
"""获取 LLM 模型实例"""
raise NotImplementedError
def get_embedding_model(self, model_name):
"""获取嵌入模型实例"""
raise NotImplementedError
八、结论
Dify 的成功不是偶然。它精准地命中了 AI 应用开发时代最核心的需求:如何快速、可靠地构建 AI 应用。
四大核心优势:
-
开源透明:Apache 2.0 协议,149K+ Stars,500+ 贡献者,社区活跃
-
架构清晰:Python + TypeScript 技术栈,前后端分离,适合二次开发
-
功能完整:RAG + 工作流 + Agent + MCP,覆盖 AI 应用开发全链路
-
模型无关:支持 20+ 模型提供商,可自由切换大模型
对于开发者而言,学习 Dify 不仅是掌握一个工具,更是理解 AI 应用开发的最佳实践和架构模式。无论你是想搭建企业内部知识库、开发 AI 客服系统,还是探索 Agent 编排,Dify 都提供了开箱即用的解决方案。
2026 年,随着 MCP 协议的普及和 Agent 沙箱的成熟,Dify 的生态优势将进一步扩大。如果你还没有开始学习 Dify,现在就是最好的时机。
参考资料
-
Dify 官方仓库 --- https://github.com/langgenius/dify
-
Dify 官方文档 --- Dify Documentation - Dify Docs
-
Dify 官方 Blog --- Blog - Dify
-
MCP 协议规范 --- What is the Model Context Protocol (MCP)? - Model Context Protocol
-
DeepSeek 平台文档 --- DeepSeek
-
智谱 AI 开放平台 --- 智谱丨BigModel 平台
-
PostgreSQL 文档 --- PostgreSQL: Documentation
-
Redis 文档 --- Docs
-
Weaviate 文档 --- https://weaviate.io/developers/weaviate
-
Qdrant 文档 --- Documentation - Qdrant
