项目总览
相关源文件
本页面内容基于以下源文件生成:
- README.md
- api/README.md
- web/README.md
- docker/README.md
- web/app/components/app/overview/app-card.tsx
- web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/page.tsx
- web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx
- web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/provider-config-modal.tsx
- web/app/components/app/overview/app-chart.tsx
- web/app/components/app/overview/trigger-card.tsx
Dify 是一个开源的 LLM 应用开发平台,其直观的界面整合了 AI 工作流、RAG 管道、Agent 能力、模型管理、可观测性功能(包括 Opik、Langfuse 和 Arize Phoenix)等特性,帮助开发者快速从原型走向生产环境。该项目通过可视化画布降低 AI 应用开发门槛,同时为专业用户提供完整的 API 接口以集成到现有业务系统中。
项目简介与核心特性
Dify 定位为开源 LLM 应用开发平台,旨在解决 AI 应用从原型到生产的全流程问题。项目核心价值在于将复杂的 AI 能力封装为可视化组件,同时保持足够的灵活性以满足定制化需求。
核心功能模块
| 功能模块 | 描述 | 关键能力 |
|---|---|---|
| Workflow | 可视化 AI 工作流构建 | 在画布上拖拽编排节点,支持条件分支、循环等逻辑控制 |
| 模型支持 | 多模型统一接入 | 支持数百种商业/开源 LLM,包括 GPT、Mistral、Llama3 及任何 OpenAI API 兼容模型 |
| Prompt IDE | 提示词开发环境 | 可视化编写提示词、对比模型性能、添加 TTS 等增强功能 |
| RAG Pipeline | 检索增强生成 | 从文档摄取到检索的完整流程,开箱支持 PDF、PPT 等格式文本提取 |
| Agent 能力 | 智能代理构建 | 基于 Function Calling 或 ReAct 定义 Agent,提供 50+ 内置工具 |
| LLMOps | 运维监控 | 监控分析应用日志和性能,基于生产数据持续优化提示词、数据集和模型 |
| Backend-as-a-Service | 后端即服务 | 所有功能提供对应 API,轻松集成到业务逻辑 |
根据 README.md:59-59,Dify 的核心定位是"开源 LLM 应用开发平台",其界面整合了 AI workflow、RAG pipeline、agent capabilities、model management、observability features 等能力。
README.md:89-111 详细列出了七大核心功能:Workflow(可视化工作流)、Comprehensive model support(全面模型支持)、Prompt IDE(提示词开发环境)、RAG Pipeline(检索增强生成管道)、Agent capabilities(智能代理能力)、LLMOps(运维监控)、Backend-as-a-Service(后端即服务)。
技术栈概览
| 层级 | 技术选型 | 版本/要求 |
|---|---|---|
| 前端框架 | Next.js | - |
| 前端包管理 | pnpm | 需要安装 |
| 后端语言 | Python | - |
| 后端包管理 | uv | v1.3.0 起替代 poetry |
| 容器化 | Docker + Docker Compose | 必需 |
| 数据库 | PostgreSQL / MySQL | 通过 Docker 部署 |
| 缓存 | Redis | 通过 Docker 部署 |
| 向量数据库 | Weaviate / Milvus / OpenSearch | 可切换 |
项目目录结构
text1dify/ 2├── api/ # 后端 API 服务 3│ ├── .env # 后端环境变量配置 4│ ├── tests/ # 测试用例(unit_tests/integration_tests) 5│ └── dev/ # 开发脚本 6├── web/ # 前端 Web 服务 7│ ├── app/ # Next.js 应用目录 8│ │ ├── components/ # 可复用组件 9│ │ └── (commonLayout)/ # 通用布局路由 10│ ├── .env.local # 前端环境变量配置 11│ └── i18n-config/ # 国际化配置 12├── docker/ # Docker 部署配置 13│ ├── docker-compose.yaml # 主部署文件 14│ ├── docker-compose.middleware.yaml # 中间件部署 15│ ├── .env # Docker 环境变量 16│ └── certbot/ # SSL 证书管理 17└── dev/ # 项目级开发脚本 18 ├── setup # 初始化脚本 19 ├── start-api # 启动后端 20 ├── start-web # 启动前端 21 └── start-worker # 启动异步任务
适用场景
- 企业内部知识库:利用 RAG Pipeline 构建基于私有文档的问答系统
- 客服机器人:通过 Agent 能力和工作流构建多轮对话系统
- 内容生成平台:结合多模型支持和 Prompt IDE 快速迭代内容生成应用
- AI 应用原型验证:使用可视化工作流快速验证业务场景可行性
- 生产级 AI 服务:通过 LLMOps 监控和 Backend-as-a-Service API 集成到现有系统
系统架构与模块关系
Dify 采用前后端分离架构,通过 Docker Compose 编排多个服务组件。系统核心由 API 服务、Web 服务、Worker 服务和中间件(数据库、缓存、向量存储)组成。
正在加载图表渲染器...
架构要点说明
- API 服务:作为系统入口,处理所有同步 HTTP 请求,负责业务逻辑编排、权限校验和响应格式化
- Worker 服务:基于 Celery 的异步任务处理,执行文档索引、批量处理等耗时操作
- 中间件层:PostgreSQL 存储应用配置和用户数据,Redis 管理会话和缓存,Weaviate 提供向量检索能力
- 外部集成:通过统一接口对接多家 LLM 提供商,并支持将追踪数据导出到可观测性平台
README.md:89-111 提供了各功能模块的概览,支撑了架构图中后端服务层的核心能力划分。
部署方式概览
Dify 提供多种部署方式以满足不同场景需求:Docker Compose 快速部署、云服务直接使用、自托管社区版部署以及从源码开发部署。
Docker Compose 快速部署
这是最推荐的部署方式,适合快速体验和生产环境使用。根据 README.md:70-79,部署步骤如下:
bash1cd dify 2cd docker 3cp .env.example .env 4docker compose up -d
部署完成后,通过浏览器访问 http://localhost/install 开始初始化流程。
docker/README.md:19-31 详细说明了 Docker 部署的完整流程:
- 环境准备:确保系统已安装 Docker 和 Docker Compose
- 环境配置:复制
.env.example到.env并根据需求修改配置 - 服务启动:执行
docker compose up启动所有服务 - 向量数据库选择:通过设置
VECTOR_STORE环境变量切换不同的向量数据库(milvus/weaviate/opensearch) - SSL 证书配置:可选配置 Certbot 自动管理 HTTPS 证书
云服务与自托管版本
根据 README.md:114-119,Dify 提供两种使用方式:
| 部署方式 | 特点 | 适用场景 |
|---|---|---|
| Dify Cloud | 零配置托管服务,沙箱计划包含 200 次 GPT-4 调用 | 快速体验、小规模应用 |
| Self-hosting Community Edition | 完全控制部署环境,支持自定义配置 | 企业部署、数据敏感场景 |
部署架构流程
正在加载图表渲染器...
部署流程要点
- 系统要求:最低配置为 CPU 2 核、内存 4GiB(README.md:63-66)
- 环境变量持久化:通过
.env文件管理配置,确保升级时配置不丢失 - 向量数据库统一管理:所有向量数据库服务从单一 Docker Compose 文件管理
- 可选组件:Certbot 容器自动续期 SSL 证书,OpenTelemetry Collector 支持链路追踪
docker/README.md:19-31 提供了部署步骤的详细说明,支撑了流程图中从环境配置到服务启动的完整链路。
开发环境配置
对于需要深度定制或贡献代码的开发者,Dify 支持从源码部署开发环境。开发环境采用前后端分离架构,需要分别配置后端 API 服务和前端 Web 服务。
后端 API 服务配置
根据 api/README.md:5-55,后端服务在 v1.3.0 版本后将 poetry 替换为 uv 作为包管理器。配置流程如下:
bash1# 1. 运行初始化脚本(复制环境文件并安装依赖) 2./dev/setup 3 4# 2. 检查并修改环境变量 5# 重点检查 api/.env, web/.env.local, docker/middleware.env 6# 务必生成 SECRET_KEY 7 8# 3. 启动中间件服务 9./dev/start-docker-compose 10 11# 4. 启动后端 API(自动执行数据库迁移) 12./dev/start-api 13 14# 5. 启动前端服务 15./dev/start-web 16 17# 6. 访问应用进行初始化 18# http://localhost:3000 19 20# 7. 启动 Worker 服务(异步任务和调度任务) 21./dev/start-worker 22 23# 8. 可选:启动 Celery Beat(定时任务) 24./dev/start-beat
关键环境变量说明:
| 变量名 | 用途 | 注意事项 |
|---|---|---|
SECRET_KEY | 应用密钥 | 必须使用 openssl rand -base64 42 生成 |
COOKIE_DOMAIN | Cookie 域名 | 前后端不同子域名时需设置为顶级域名 |
前端 Web 服务配置
根据 web/README.md:11-49,前端服务依赖 Node.js 和 pnpm:
bash1# 安装依赖 2pnpm install 3 4# 配置环境变量 5cp .env.example .env.local
核心环境变量:
| 变量名 | 说明 | 示例值 |
|---|---|---|
NEXT_PUBLIC_DEPLOY_ENV | 部署环境 | DEVELOPMENT / PRODUCTION |
NEXT_PUBLIC_EDITION | 部署版本 | SELF_HOSTED |
NEXT_PUBLIC_API_PREFIX | Console API 基础 URL | http://localhost:5001/console/api |
NEXT_PUBLIC_PUBLIC_API_PREFIX | Web App API 基础 URL | http://localhost:5001/api |
NEXT_PUBLIC_COOKIE_DOMAIN | Cookie 域名 | 留空表示使用当前域名 |
开发环境启动时序
正在加载图表渲染器...
测试与代码质量
后端测试通过 uv run pytest 执行,支持单元测试和集成测试分离:
bash1cd api 2uv sync --group dev # 安装开发依赖 3uv run pytest # 运行所有测试 4uv run pytest tests/unit_tests/ # 仅单元测试 5uv run pytest tests/integration_tests/ # 仅集成测试
代码质量工具包括:
ruff check --fix:自动修复 lint 问题ruff format:代码格式化basedpyright:类型检查
api/README.md:5-55 详细描述了后端服务的完整配置流程,包括脚本使用、环境变量配置和服务启动顺序。
web/README.md:10-49 提供了前端服务的依赖安装和环境变量配置说明。
社区与生态
Dify 拥有活跃的开源社区和完善的贡献体系,支持多语言国际化。
社区渠道
根据 README.md:208-214,Dify 提供多种沟通渠道:
| 渠道 | 用途 | 适用场景 |
|---|---|---|
| GitHub Discussion | 分享反馈和提问 | 功能讨论、使用经验分享 |
| GitHub Issues | Bug 报告和功能提案 | 问题追踪、功能请求 |
| Discord | 应用展示和社区交流 | 实时讨论、社区活动 |
| X(Twitter) | 应用展示和社区交流 | 公告发布、案例分享 |
| 专业网络交流 | 企业合作、职业发展 |
贡献指南
根据 README.md:201-206,项目欢迎代码贡献和社区支持:
- 代码贡献:参考 CONTRIBUTING.md 了解贡献流程
- 社区支持:通过社交媒体和会议分享 Dify 来支持项目发展
- 国际化贡献:项目正在寻找帮助翻译到中文和英文以外语言的贡献者,详情参见 i18n README
许可证
Dify 采用基于 Apache 2.0 的 Dify Open Source License,包含额外条件。这意味着用户可以自由使用、修改和分发,但需遵守许可证中的特定条款。
报告阅读路线图
本技术分析报告包含多个章节,以下是推荐阅读顺序和章节关系:
正在加载图表渲染器...
章节导航说明
- 项目总览(当前章节):提供项目整体介绍、技术栈、部署方式和社区信息
- 系统架构:深入分析各模块职责边界、依赖关系和设计决策
- 数据流分析:追踪关键业务场景的数据流转和状态变化
- API 设计:详细说明 RESTful 接口设计、认证授权和错误处理
- 数据模型:解析核心实体关系、数据库 Schema 和索引策略
- 核心功能:深入 Workflow、RAG、Agent 等核心模块的实现细节
- 部署指南:生产环境部署的最佳实践和运维建议
项目核心能力量化
| 指标 | 数值 | 说明 |
|---|---|---|
| 支持的 LLM 提供商 | 数十家 | 包括 OpenAI、Anthropic、Mistral 等 |
| 支持的模型数量 | 数百种 | 覆盖商业和开源模型 |
| 内置 Agent 工具 | 50+ | 包括 Google Search、DALL·E、Stable Diffusion 等 |
| 支持的文档格式 | 多种 | PDF、PPT 等常见格式开箱支持 |
| 可观测性集成 | 3+ | Opik、Langfuse、Arize Phoenix |
| 国际化语言 | 10+ | 包括中文、英文、日文、韩文等 |
| Docker Pulls | 百万级 | 反映社区使用规模 |
| GitHub Stars | 高增长 | 活跃的开源项目 |
根据 README.md:89-111 的功能描述,Dify 在模型支持、Agent 工具、RAG 能力等方面提供了丰富的开箱即用功能,降低了 AI 应用开发的门槛。
