首页
/ Dify 开源 LLM 应用开发平台:核心功能解析与 Docker 自托管部署实战指南

Dify 开源 LLM 应用开发平台:核心功能解析与 Docker 自托管部署实战指南

2026-09-06 14:39:10作者:明树来

本文以 Dify 官方简体中文 README 为主线,系统梳理 Dify 的七项核心能力(工作流、模型支持、Prompt IDE、RAG 管道、Agent、LLMOps、后端即服务),并完整给出社区版 Docker 自托管安装步骤、关键环境变量配置与高级部署选项,同时结合仓库源码目录印证各功能的实现位置,帮助读者快速从“了解 Dify”走到“跑起 Dify 并深入源码”。

Dify 官方封面图

Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,让团队可以较快从原型走向生产环境。

Dify 的七项核心能力

官方 README(简体中文说明)将 Dify 的核心功能归纳为七类,下面逐项说明,并标注其在当前仓库中的源码位置,方便读者从文档概念直接跳到实现。

1. 工作流(Workflow)

在画布上构建和测试功能强大的 AI 工作流程,并可组合使用下述所有功能。

从源码结构看,工作流引擎集中在 api/core/workflow 目录:workflow_entry.py 是工作流执行入口,node_factory.py 负责按节点类型实例化节点,graph_topology.py 处理图拓扑校验。api/core/workflow/nodes 下的子目录展示了当前内置的节点家族:agent / agent_v2knowledge_retrieval(知识检索)、human_input(人工介入)、datasource,以及三种触发器 trigger_webhooktrigger_scheduletrigger_plugin。前端则可通过环境变量 LOOP_NODE_MAX_COUNT(默认 100)、MAX_ITERATIONS_NUM(默认 99)、MAX_TREE_DEPTH(默认 50)等参数约束循环、迭代与树的规模,这些默认值定义在 docker/.env.example 中。

2. 全面的模型支持

Dify 与数百种专有/开源 LLM 以及数十种推理提供商和自托管解决方案无缝集成,涵盖 GPT、Mistral、Llama3 以及任何与 OpenAI API 兼容的模型。

在仓库层面,模型能力的扩展有两条路径:

  • 向量数据库/模型提供商api/providers/vdb 目录下以 vdb-* 命名的 30 余个包(vdb-weaviatevdb-qdrantvdb-pgvectorvdb-milvusvdb-opensearch 等)对应各向量存储的后端实现,部署时通过 VECTOR_STORE 环境变量(默认 weaviate)选择其一;
  • 插件系统:工作流与工具生态的持续扩展依赖插件机制,Docker 部署中专门包含 plugin_daemon 服务(见下文服务架构),由 api/core/pluginapi/core/tools 下的 plugin_toolmcp_toolcustom_toolworkflow_as_tool 等模块对接。

3. Prompt IDE

用于制作提示词、比较模型性能,以及向基于聊天的应用添加其他功能(如文本转语音)的直观界面。该能力主要由前端 web/ 工程与后端模型配置服务承载,其中文本转语音相关的后端处理可在 api/services/audio_service.py 等处找到。

4. RAG Pipeline

Dify 提供覆盖从文档摄入到检索的完整 RAG 功能,支持从 PDF、PPT 和其他常见文档格式中提取文本的开箱即用能力。

api/core/rag 目录完整体现了这一管道的分层结构,与文档描述的“摄入 → 切分 → 索引 → 检索”流程一一对应:

子模块 职责
extractor 文档解析,内置 pdf_extractor.pyexcel_extractor.pyword_extractor.pycsv_extractor.pyhtml_extractor.pymarkdown_extractor.pynotion_extractor.py 以及 unstructuredfirecrawlwatercrawl 等外部方案集成
splitter 文本分段切分
index_processor 索引构建
embedding / docstore 向量化与文档存储
retrieval / rerank / data_post_processor 检索、重排与结果后处理
pipeline 异步索引流水线(与 api/tasks/document_indexing_task.py 等 Celery 任务配合)

前端对索引行为的约束同样通过环境变量暴露,如 INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH(默认 4000,限制单条分段的最大 token 数)、TOP_K_MAX_VALUE(默认 10,限制检索 TopK 上限)。

5. Agent 智能体

可以基于 LLM 函数调用(Function Calling)或 ReAct 模式定义 Agent,并为 Agent 添加预构建或自定义工具。

这一点在源码中得到直接印证:api/core/agent 下同时存在 fc_agent_runner.py(Function Calling 策略)与 cot_agent_runner.py(Chain-of-Thought/ReAct 策略),两者均继承自 base_agent_runner.py,与文档中“函数调用或 ReAct”两种定义方式的描述完全一致。关于工具:文档提到 Dify 提供 50 多种内置工具(如谷歌搜索、DALL·E、Stable Diffusion、WolframAlpha 等);从当前源码结构看,核心仓库的 api/core/tools/builtin_tool/providers 保留了 audio、code、time、webscraper 等基础内置工具,其余大量工具能力已迁移至插件体系,通过 plugin_toolmcp_tool 等模块加载。单个应用可挂载的工具数量由 MAX_TOOLS_NUM(默认 10)约束。

6. LLMOps

随时间监视和分析应用日志与性能,基于生产数据和标注持续改进提示词、数据集和模型。对应的实现分布在多处:

部署时日志行为由 LOG_LEVEL(默认 INFO)、LOG_FILE(默认 /app/logs/server.log)、LOG_FILE_MAX_SIZE(默认 20 MB)、LOG_FILE_BACKUP_COUNT(默认 5)等变量控制,可在 docker/.env.example 中查看。

7. 后端即服务(Backend as a Service)

Dify 的所有功能都带有相应的 API,可将 Dify 作为后端服务集成进自有业务系统。路由层面这一点体现得非常清晰:api/controllers/service_api 是对外的服务 API 蓝图,init.py 中声明 bp = Blueprint("service_api", __name__, url_prefix="/v1"),即所有开放 API 挂载在 /v1 前缀下,覆盖 appdatasetend_userworkspace 等资源域;仓库同时提供 console(控制台)、web(终端用户应用)、inner_api(内部服务间调用)等多套蓝图,并在 api/app_factory.py 中统一注册。

三种使用方式

README 将使用方式分为三档,选型建议如下:

形态 说明 适用场景
云服务 官方提供的托管服务,零配置即可尝试,包含自部署版本的全部功能,沙盒计划含 200 次免费 GPT-4 调用 快速验证想法、不想运维基础设施
自托管社区版 使用下文的 Docker Compose 一键部署到自有环境 数据需要留在自己机器/内网、需要定制
企业版 在社区版之上提供额外的企业级功能,需联系官方商务获取 有组织级合规、权限、SLA 需求

安装 Dify 社区版

系统要求

在安装 Dify 之前,确保机器满足以下最低配置:

  • CPU ≥ 2 Core
  • RAM ≥ 4 GiB

快速启动

启动 Dify 服务器的最简单方式是运行仓库自带的 docker-compose.yaml 文件。运行安装命令前,请确认机器上已安装 Docker 与 Docker Compose:

cd docker
cp .env.example .env
docker compose up -d

三条命令的含义:

  1. cd docker:进入部署目录,该目录包含 Compose 编排文件与全部环境变量模板;
  2. cp .env.example .env:以官方示例为基线生成自己的 .env 配置文件(docker/.env.example),后续所有自定义都改这个文件;
  3. docker compose up -d:后台拉起整套服务栈。

运行后,在浏览器访问 http://localhost/install 即可进入 Dify 控制台,完成初始化安装操作。

注意:docker-compose.yaml 文件头明确标注该文件由 generate_docker_compose 脚本自动生成(对应 docker/generate_docker_compose),不要直接手工修改它;应修改 .envdocker-compose-template.yaml 后重新生成。

Compose 服务架构解读

当前版本(镜像标签 langgenius/dify-api:1.17.0)的编排文件中定义了完整的微服务栈,核心服务包括:

服务 作用
api Flask 主服务(工作流、RAG、控制台 API),健康检查为 /health
api_websocket 工作流协作的 WebSocket 服务(collaboration profile 按需启用)
worker / worker_beat Celery 异步任务执行器与定时调度器
web Next.js 前端
sandbox / local_sandbox 代码执行沙箱(CODE_EXECUTION_ENDPOINT 默认指向 http://sandbox:8194
plugin_daemon Go 编写的插件守护进程,负责插件的安装与运行隔离
agent_backend Agent 运行时后端(agent_ssrf_proxy 为其配套出口代理)
ssrf_proxy 统一的 SSRF 防护代理(docker/ssrf_proxy
nginx / certbot 入口反向代理与 HTTPS 证书
db_postgres / redis 默认数据底座;db_mysql 为可选替代
向量库服务 weaviate(默认)、qdrantpgvectormilvus 等,按 VECTOR_STORE 选用
etcd / minio Milvus 的依赖组件

关键环境变量速查

以下参数摘自 docker/.env.example,是部署调优时最常接触的配置:

# —— 安全 ——
SECRET_KEY=            # 必填。Flask 会话/令牌签密密钥,生产环境务必自定义

# —— 数据库(默认 PostgreSQL) ——
DB_TYPE=postgresql
DB_USERNAME=postgres
DB_PASSWORD=difyai123456
DB_HOST=db_postgres
DB_PORT=5432
DB_DATABASE=dify

# —— 缓存与任务队列 ——
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=difyai123456
CELERY_BROKER_URL=redis://:difyai123456@redis:6379/1
CELERY_BACKEND=redis
CELERY_WORKER_AMOUNT=4        # worker 进程数
CELERY_AUTO_SCALE=false

# —— 存储与功能开关 ——
MIGRATION_ENABLED=true        # 容器启动时自动执行数据库迁移
VECTOR_STORE=weaviate         # 向量库后端,可切换 qdrant/pgvector/milvus 等
CODE_EXECUTION_ENDPOINT=http://sandbox:8194
NEXT_PUBLIC_ENABLE_AGENT_V2=true

# —— 日志 ——
LOG_LEVEL=INFO
LOG_FILE=/app/logs/server.log
LOG_FILE_MAX_SIZE=20
LOG_FILE_BACKUP_COUNT=5

修改任何配置后,重新执行 docker compose up -d 使配置生效。更完整的环境变量说明可参考官方文档(docs.dify.ai 的环境变量页面,见 docs/zh-CN/ADVANCED_SETUP.md 的指引)。

高级设置

需要自定义配置、可观测性或云原生部署时,可参阅 高级设置文档,其要点包括:

  • 自定义配置:以 .env.example 中的注释为准更新 .env,必要时调整 docker-compose.yaml 的镜像版本、端口映射或卷挂载,改完重跑 docker compose up -d
  • Grafana 指标监控:以 Dify 的 PostgreSQL 作为数据源导入社区仪表板,监控应用、租户、消息等粒度指标;
  • Kubernetes 部署:社区提供了多套 Helm Chart 与原生 YAML 清单,可部署到自建 K8s 集群;
  • 云上 Terraform/CDK 一键部署:涵盖 Azure、Google Cloud、AWS(EKS/ECS)等方案;
  • 阿里云:支持通过计算巢、DMS 一键部署;亦可通过 Sealos App Store 部署。

贡献与社区

Dify 欢迎多种形式的贡献(贡献指南):

  • 代码:先阅读贡献指南,再处理标注为新手友好的问题;
  • 想法与反馈:在 GitHub Discussions 发起或参与讨论;
  • 翻译:参照 国际化指南 添加或更新语言,web/i18n 目录下已维护 888 个语言资源文件;
  • 社区:分享自己构建的应用、帮助其他用户。

获取帮助的渠道:GitHub Discussions(求助与反馈)、GitHub Issues(报告可复现的错误,提单前先读贡献指南)、Discord 与 X 等社交平台(实时交流与版本动态)。

安全与许可证

  • 安全问题:为保护隐私,请勿在公开渠道发布安全漏洞,应发送至 security@dify.ai;
  • 许可证:本仓库遵循 Dify Open Source License,本质上是 Apache 2.0,但包含一些额外限制(例如对 logo 的使用与多租户商业化条款等),二次开发或商用前请完整阅读。

小结

Dify 简体中文 README 勾勒的是一套“功能完整 + 部署极简”的开源 LLM 应用平台:七项核心能力(工作流、模型支持、Prompt IDE、RAG、Agent、LLMOps、API 化后端)在仓库中都有清晰对应的源码模块(api/core/workflowapi/core/ragapi/core/agentapi/providers/traceapi/controllers/service_api 等);而社区版部署只需“复制 .env + docker compose up -d”两步即可在满足 2 核 4 GiB 的机器上跑起包含 API、Worker、插件守护进程、沙箱与向量库的完整服务栈。掌握本文后,你可以自行完成 Dify 的安装调优,并沿源码路径深入任何一个功能模块的实现细节。

登录后查看全文
热门项目推荐
相关项目推荐