
Dify 是一个开源的、面向生产环境的智能体工作流构建平台由 LangGenius 团队开发。它允许开发者或团队通过可视化拖拽的方式快速构建、部署和管理基于大型语言模型的 AI 应用、智能体工作流和 RAG 管道。简单来说它把复杂的 AI 应用开发变成了“搭积木”你不需要写大量代码就能组合出功能强大的 AI 应用。既然已经有了像“扣子”这样的在线 AI 应用开发平台为什么还需要在本地部署 Dify核心原因在于控制权、数据隐私和成本。在线平台虽然方便但你的数据、你的工作流、你的模型调用都依赖于外部服务。而本地部署的 Dify 让你完全掌控一切数据不出内网可以自由连接本地模型如通过 Ollama不受网络或服务商限制并且对于高频次调用长期来看成本可能更低。它更适合企业级应用、对数据安全有要求的场景或是希望深度定制和集成的开发者。这篇文章将带你快速了解 Dify 的核心能力并重点演示如何在本地环境中通过四个关键步骤完成 Dify 的部署和启动。我们会关注它的硬件门槛、启动方式、核心功能验证以及如何将其接入你自己的项目。无论你是想搭建一个内部知识库问答机器人还是创建一个自动化的内容生成流水线本地 Dify 都能提供一个坚实、可控的基础。1. 核心能力速览在深入部署细节前我们先通过一个表格快速了解 Dify 的核心特性这有助于判断它是否是你的菜。能力项说明项目类型开源 AI 应用开发平台 / 智能体工作流构建器核心功能可视化工作流编排、RAG 知识库、多模型支持开源/闭源、工具/插件集成、应用发布与监控部署方式支持 Docker 一键部署、源码部署、云服务托管硬件门槛内存建议 8GB 以上。CPU现代多核处理器。存储至少 10GB 可用空间。GPU非必需但连接本地视觉或多模态模型时需要。显存占用Dify 服务本身不直接消耗大量显存。显存占用取决于你连接的 AI 模型如本地部署的 Llama、Qwen 等。支持平台Windows (WSL2/Docker Desktop)、Linux、macOS启动方式主要通过 Docker Compose 一键启动提供 WebUI 管理界面是否支持 API是提供完整的 RESTful API可用于集成到第三方系统是否支持批量任务是可通过工作流编排处理批量数据或通过 API 进行批量调用适合场景企业级 AI 应用开发、内部知识库问答、自动化内容生成、AI 智能体原型验证与部署、需要数据本地化的项目从表格可以看出Dify 的核心价值在于提供了一个低代码/无代码的 AI 应用开发环境并且支持混合云和本地化部署。这意味着你可以用 OpenAI 的 GPT-4 快速验证想法然后无缝切换到本地部署的 Qwen 或 Llama 模型以保障数据安全整个过程无需重写业务逻辑。2. 适用场景与使用边界Dify 并非万能明确它的适用边界能帮你更好地决策。它非常适合以下场景快速构建企业级 AI 应用比如为内部团队搭建一个基于公司文档的智能问答助手利用其 RAG 功能轻松实现。可视化 AI 工作流编排如果你需要设计一个包含多个步骤的复杂 AI 流程例如爬取新闻 - 分析情感 - 生成报告 - 发送邮件Dify 的拖拽式工作流编辑器比写代码快得多。多模型管理与测试需要在 GPT、Claude、通义千问、智谱等多个模型间快速切换和对比效果Dify 提供了统一的管理界面。需要数据隐私和本地化部署的项目所有数据知识库文档、对话记录、应用配置都保存在你自己的服务器上。作为 AI 能力中台通过 Dify 的 API为其他业务系统如 CRM、OA提供统一的 AI 能力调用入口。它可能不适合极致的单模型性能调优如果你只专注于某一个特定模型如 Stable Diffusion的参数微调和极致性能专门的工具如 ComfyUI可能更合适。完全离线的边缘设备部署Dify 服务本身需要一定的计算资源来运行虽然可以连接本地模型但其后端服务不适合部署在资源极其有限的边缘设备上。只需要简单对话聊天如果需求仅仅是一个类似 ChatGPT 的聊天界面直接使用模型提供的官方客户端或更轻量的 WebUI 可能更简单。使用边界与合规提醒模型合规性使用 Dify 连接第三方模型 API如 OpenAI时请遵守相应服务商的使用条款。数据安全本地部署虽提升了数据安全性但仍需做好服务器的安全防护如设置防火墙、定期更新、管理好访问权限。内容责任基于 Dify 构建的应用所产生的内容其责任由应用创建者和使用者承担。需建立内容审核机制避免生成有害或侵权内容。版权与授权在构建知识库或使用文本/图像生成功能时确保使用的训练数据和应用生成的内容拥有合法授权不侵犯他人知识产权。3. 环境准备与前置条件本地部署 Dify 主要依赖 Docker 环境。以下是详细的准备工作清单。3.1 操作系统推荐Linux (Ubuntu 20.04/22.04, CentOS 7/8 等) 或 Windows 10/11 with WSL2。macOS同样支持通过 Docker Desktop 运行。3.2 硬件资源内存最低 4GB建议 8GB 或以上。运行知识库索引等操作时内存消耗较大。CPU2 核以上现代处理器。磁盘至少 10GB 可用空间用于存放 Docker 镜像、数据库和向量数据库数据。网络需要能访问 Docker Hub 或国内镜像源以下拉镜像。部署完成后可以完全离线运行前提是模型已本地化。3.3 软件依赖Docker版本 20.10.0 或更高。这是运行 Dify 的基石。Linux 安装# Ubuntu/Debian 示例 sudo apt-get update sudo apt-get install docker.io docker-compose sudo systemctl start docker sudo systemctl enable docker # 将当前用户加入 docker 组避免每次 sudo sudo usermod -aG docker $USER # 退出终端重新登录生效Windows/macOS直接下载并安装 Docker Desktop 。Windows 用户务必启用 WSL2 后端以获得更好性能。Docker Compose通常随 Docker Desktop 安装。Linux 可能需要单独安装如上命令。确保版本兼容。Git可选用于克隆官方仓库获取最新的docker-compose.yaml配置文件。3.4 端口检查Dify 默认会占用几个端口请确保它们未被其他程序占用3000前端 Web 界面端口。5001后端 API 服务端口。6379Redis 服务端口用于缓存和会话。5432PostgreSQL 数据库端口。 如果端口冲突可以在后续的docker-compose.yaml文件中进行映射修改。4. 安装部署与启动方式四步搞定这是本文的核心。我们将通过 Docker Compose 方式部署这是官方推荐也是最简单的方式。第一步获取部署配置文件打开终端Linux/macOS或 PowerShell/WSL2 终端Windows选择一个你希望安装 Dify 的目录然后下载官方提供的docker-compose.yaml文件。# 创建一个专门目录并进入 mkdir dify-local cd dify-local # 从官方仓库下载 docker-compose 配置文件 # 使用 curl curl -o docker-compose.yaml https://raw.githubusercontent.com/langgenius/dify/main/docker/docker-compose.yaml # 或者使用 wget # wget -O docker-compose.yaml https://raw.githubusercontent.com/langgenius/dify/main/docker/docker-compose.yaml如果网络不畅也可以访问 Dify 的 GitHub 仓库 (https://github.com/langgenius/dify)手动下载docker/docker-compose.yaml文件到本地目录。第二步检查与修改配置可选用文本编辑器打开docker-compose.yaml。大部分情况下默认配置即可运行。你可以根据需要进行调整修改端口映射如果默认端口被占用找到ports部分进行修改。例如将前端端口改为8080:3000。services: web: # ... 其他配置 ports: - 8080:3000 # 将宿主机8080端口映射到容器3000端口配置持久化存储默认配置已经将数据卷挂载到本地确保数据在容器重启后不丢失。你可以查看volumes部分确认路径。配置环境变量关键配置如OPENAI_API_KEY等是在部署后通过 Web 界面进行设置的无需在此文件提前修改。第三步启动 Dify 服务在包含docker-compose.yaml文件的目录下执行一条命令启动所有服务。# 在 dify-local 目录下执行 sudo docker-compose up -d-d参数表示在后台运行。命令执行后Docker 会开始拉取 Redis、PostgreSQL、Dify 后端和前端等多个镜像并启动容器。首次运行需要几分钟时间下载镜像请耐心等待。你可以使用以下命令查看容器状态和日志# 查看所有容器状态 sudo docker-compose ps # 查看实时日志组合日志 sudo docker-compose logs -f # 查看特定服务日志如后端 api sudo docker-compose logs -f api当看到所有容器状态均为Up并且日志中没有持续报错时说明服务已成功启动。第四步访问与初始化访问 Web 界面在浏览器中打开http://你的服务器IP:3000。如果是在本机部署直接访问http://localhost:3000。初始化设置首次访问会进入初始化页面。设置管理员账号输入邮箱和密码这是你后续管理平台的超级管理员账户。配置初始 LLM你需要至少配置一个大型语言模型提供商才能开始使用。Dify 支持多种方式云端 API填入如 OpenAI、Azure OpenAI、Anthropic Claude、智谱、月之暗面等服务的 API Key 和 Base URL。本地模型填入本地部署的 OpenAI 兼容 API 服务地址例如 Ollama (http://localhost:11434/v1) 或 LocalAI、vLLM 等服务的地址。配置向量数据库可选如果你计划使用 RAG 知识库功能需要配置一个向量数据库。Dify 内置了 Qdrant也可以选择连接外部的 Pinecone、Weaviate 等。首次使用可以先跳过后续在设置中配置。进入控制台完成初始化后即可登录进入 Dify 主控制台。至此Dify 本地部署完成。5. 功能测试与效果验证部署成功只是第一步我们来验证几个核心功能是否工作正常。5.1 测试基础对话应用这是最简单的测试用于验证 LLM 连接是否正常。创建应用在控制台点击“创建应用”选择“对话型应用”输入名称如“测试助手”。配置模型在应用编排页面确保“模型”节点已正确选择你之前配置的 LLM 提供商和模型例如 GPT-3.5-Turbo 或本地 Qwen。对话测试点击右上角“发布”后在应用预览窗口或“访问地址”生成的链接中与你的 AI 助手进行简单对话如“你好请介绍一下你自己”。观察是否能正常返回响应。5.2 测试可视化工作流智能体流程这是 Dify 的亮点功能我们构建一个简单的“文章总结器”工作流。创建工作流点击“创建应用”这次选择“工作流”。命名为“文章总结器”。拖拽节点从左侧节点库拖入一个“文本”节点作为输入框将其重命名为“输入文章”。拖入一个“LLM”节点。将“输入文章”节点的输出连接到“LLM”节点的“上下文”输入。配置节点点击“LLM”节点在右侧面板的“提示词”区域输入系统指令例如“你是一个专业的编辑请将用户提供的文章浓缩成一段不超过200字的摘要突出核心观点。”选择好模型。运行测试点击右上角“运行”。在运行面板的“输入文章”框内粘贴一段长文本。点击“运行”观察工作流执行过程并在“LLM”节点的输出区域查看生成的摘要。如果成功说明工作流编排和模型调用链路畅通。5.3 测试 RAG 知识库核心功能这个测试稍复杂但能完整体验 Dify 的检索增强生成能力。创建知识库在左侧导航栏进入“知识库”点击“创建知识库”命名为“测试文档库”。上传文档并处理点击进入该知识库选择“上传文件”可以上传一个 TXT、PDF、Word 或 Markdown 文件例如一篇技术博客或产品说明书。上传后Dify 会自动进行“文本分段”和“索引构建”。这个过程会将文档切片并转换为向量存入向量数据库。在“索引方法”中可以选择“高质量”或“经济”。首次测试选“经济”更快。创建基于知识库的对话应用返回“应用”创建一个新的“对话型应用”。在编排页面除了“对话开场白”和“LLM”节点从左侧拖入一个“知识库检索”节点。将“用户问题”节点连接到“知识库检索”节点再将“知识库检索”节点的输出连接到“LLM”节点的“上下文”。配置“知识库检索”节点选择刚才创建的“测试文档库”。在“LLM”节点的提示词中可以加入指令如“请根据提供的上下文信息回答用户问题。如果上下文未包含相关信息请如实告知。”进行问答测试发布应用并进行测试。询问一个你上传文档中明确包含答案的问题例如文档是关于“Dify 部署”的你可以问“如何启动 Dify 服务”。观察 AI 的回答是否基于文档内容并且回答末尾是否显示了引用的文档片段。这证明了 RAG 功能工作正常。6. 接口 API 与批量任务Dify 不仅提供 Web 界面更提供了完整的 API方便集成到你的自动化脚本或业务系统中。6.1 API 访问与认证获取 API Key在 Dify 控制台点击右上角个人头像 - “设置” - “API 密钥”生成一个新的密钥并妥善保存。API 文档Dify 提供了交互式 API 文档。访问http://你的服务器IP:5001/console/api即可查看。这里列出了所有可用的端点包括应用对话、工作流运行、知识库管理等。6.2 调用对话应用 API以下是一个使用 Pythonrequests库调用对话应用的示例。假设你的应用 ID 是app-xxxxxx。import requests import json # 配置信息 API_KEY 你的-API-KEY APP_ID 你的-应用-ID BASE_URL http://localhost:5001 # 如果你的 Dify 部署在其他机器替换 IP url f{BASE_URL}/v1/chat-messages headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } payload { inputs: {}, # 工作流变量对话应用通常为空 query: Dify 是什么, # 用户问题 response_mode: streaming, # 或 blocking (阻塞式) conversation_id: , # 为空则创建新会话 user: test_user_001 # 标识用户 } # 流式响应 response requests.post(url, jsonpayload, headersheaders, streamTrue) if response.status_code 200: for line in response.iter_lines(): if line: decoded_line line.decode(utf-8) if decoded_line.startswith(data: ): data json.loads(decoded_line[6:]) # 处理返回的数据例如打印内容 if answer in data: print(data[answer], end, flushTrue) if data.get(event) message_end: print() # 换行 else: print(f请求失败: {response.status_code}) print(response.text)6.3 批量任务处理Dify 本身没有专门的“批量任务队列”界面但可以通过 API 轻松实现。思路一串行调用编写脚本循环读取任务列表如一个 CSV 文件中的多条问题依次调用上述对话 API并将结果保存。思路二工作流批量输入如果你构建的工作流支持处理列表型输入例如一个“文本列表”节点可以在单次运行中传入多个输入项。这需要你在设计工作流时考虑好。思路三异步与监控对于大量任务建议在调用 API 的脚本中加入错误重试机制、速率限制避免对模型 API 造成压力和日志记录。Dify 控制台的“日志与标注”页面可以查看所有 API 调用的历史记录和状态便于监控和排查问题。7. 资源占用与性能观察部署后了解服务运行状态和资源消耗很重要。7.1 服务状态监控使用 Docker 命令可以方便地查看# 查看所有容器资源占用CPU 内存 sudo docker stats # 查看 Dify 相关容器的详细状态 sudo docker-compose ps sudo docker-compose logs --tail50 api # 查看后端最近50行日志7.2 性能影响因素Dify 平台的性能瓶颈通常不在其本身而在其连接的组件向量数据库当知识库文档数量巨大时检索速度可能变慢。确保为 Qdrant或你选择的其他向量库分配足够内存并考虑使用 GPU 进行索引加速如果向量库支持。LLM 推理速度这是最主要的性能因素。如果连接的是云端 API速度取决于网络和 API 提供商如果连接的是本地模型如 Ollama 上的 7B/13B 模型则取决于你的 GPU 显存和算力。工作流复杂度一个包含多个 LLM 调用、条件判断、代码执行节点的复杂工作流其执行时间会是各节点耗时的总和。并发请求Dify 后端可以处理一定程度的并发但最终受限于上述第 1、2 点。在高并发场景下可能需要调整 Docker 容器的资源限制或考虑水平扩展后端服务更高级的部署方式。7.3 如何优化与排查知识库检索慢检查向量数据库索引是否构建完成尝试减少单次检索返回的片段数量考虑对知识库进行更精细的分段。LLM 响应慢如果是本地模型尝试使用量化版本如 GGUF 格式的 Q4_K_M以降低显存占用和提高推理速度。确保没有其他进程占用大量 GPU 资源。服务无响应首先检查docker-compose ps确认所有容器是否运行。然后查看docker-compose logs寻找错误信息。常见原因是端口冲突、磁盘空间不足、或数据库连接失败。8. 常见问题与排查方法以下是部署和使用 Dify 时可能遇到的典型问题及解决思路。问题现象可能原因排查方式解决方案访问localhost:3000失败1. 容器未成功启动。2. 端口被占用。3. 防火墙/安全组阻止。1.docker-compose ps查看状态。2.netstat -tlnp | grep :3000查看端口占用。3. 检查系统/云平台防火墙规则。1. 查看日志docker-compose logs。2. 修改docker-compose.yaml端口映射。3. 开放对应端口。初始化页面无法加载或报错1. 后端 API 服务 (api容器) 启动失败。2. 数据库连接失败。1.docker-compose logs api重点查看后端日志。2. 检查db和redis容器日志。1. 根据日志错误解决常见如依赖缺失、权限问题。2. 确保docker-compose.yaml中服务网络配置正确。配置 LLM 时测试连接失败1. API Key 或 Base URL 错误。2. 网络不通针对云端 API。3. 本地模型服务未启动。1. 仔细核对 API Key。2. 尝试用curl或 Postman 直接测试模型 API。3. 检查本地模型服务如 Ollama是否运行在指定端口。1. 更正配置信息。2. 解决网络问题或使用代理。3. 启动本地模型服务。知识库文件上传后一直“处理中”1. 向量数据库 (qdrant) 容器异常。2. 文本嵌入模型未配置或不可用。3. 文件格式不支持或损坏。1.docker-compose logs qdrant。2. 在“设置 - 模型供应商”中检查文本嵌入模型配置。3. 尝试上传一个简单的 TXT 文件测试。1. 重启qdrant容器。2. 配置一个可用的文本嵌入模型如 OpenAItext-embedding-3-small或本地 BGE 模型。3. 转换文件格式或检查文件。工作流运行报错或卡住1. 某个节点配置错误如变量名错误。2. 连接的 LLM 节点响应超时或失败。3. 代码节点存在语法错误。1. 检查工作流每个节点的配置和连线。2. 查看运行详情中的节点日志。3. 单独测试有问题的节点。1. 修正节点配置。2. 检查 LLM 连接状态调整超时时间。3. 调试代码节点。API 调用返回 401/403 错误1. API Key 错误或已失效。2. 请求头Authorization格式不正确。3. 应用未发布或已被停用。1. 在 Dify 控制台重新生成 API Key。2. 确保请求头为Bearer {API_KEY}。3. 检查应用状态是否为“已发布”。1. 使用正确的 API Key。2. 修正请求头格式。3. 发布应用。磁盘空间不足1. Docker 镜像、容器日志、数据库数据增长。docker system df查看 Docker 资源占用。1. 清理无用镜像和容器docker system prune -a。2. 限制容器日志大小在docker-compose.yaml中配置日志驱动和大小。9. 最佳实践与使用建议为了让你的 Dify 体验更顺畅这里有一些经验之谈。从简单开始第一次使用先创建一个最简单的对话应用连接一个稳定的云端 LLM如 OpenAI确保整个平台基础功能跑通。然后再逐步尝试工作流、知识库等复杂功能。环境隔离使用 Docker Compose 部署本身提供了很好的隔离。建议为生产环境和测试环境部署不同的实例使用不同的docker-compose.yaml文件和端口。数据备份定期备份 Docker 卷中的数据。关键数据位于docker-compose.yaml中定义的卷挂载路径下如./storage./pg_data。备份这些目录即可。模型策略采用“云端验证本地落地”的策略。用 GPT-4 等强大模型快速设计和验证工作流逻辑待流程稳定后再切换至成本更低或更安全的本地模型如 Qwen、Llama。知识库优化文档预处理上传前尽量清理文档格式将复杂的 PDF/Word 转换为纯文本或 Markdown能提升索引质量和检索精度。分段策略根据文档类型调整分段规则。技术文档可能适合按章节分而对话记录可能按轮次分。混合检索Dify 支持关键词检索和向量检索的混合模式通常能获得更准确的结果。工作流设计善用变量在工作流中灵活使用变量来传递数据使流程更清晰。添加调试节点在关键步骤后添加“文本”或“变量赋值”节点来输出中间结果便于排查问题。版本管理Dify 支持应用版本。在做出重大修改前先发布一个版本便于回滚。安全与权限保管好管理员密码和 API Key。在生产环境务必修改默认端口并通过 Nginx 等反向代理配置 HTTPS。利用 Dify 的“团队协作”功能为不同成员分配适当的角色管理员、编辑者、操作员实现权限控制。回到最初的问题有扣子为啥还要装 Dify扣子等在线平台是出色的快速原型工具适合个人玩家和小团队尝鲜。而 Dify 本地部署则为你提供了完全的控制权、深度的定制能力、企业级的数据安全和对成本的长远掌控。它更像是一个可以植入到你技术栈深处的“AI 引擎”。通过本文的四步部署法你应该已经成功在本地跑起了 Dify。接下来最好的学习方式就是动手尝试复刻一个你熟悉的 AI 应用场景比如自动周报生成器、智能客服原型、或是行业知识问答库。在构建的过程中你会更深刻地体会到可视化工作流编排的效率和 RAG 知识库的强大。当你的应用需要处理敏感数据或需要与内部系统深度集成时本地 Dify 的价值就会真正凸显出来。建议将本文收藏在遇到部署或配置问题时随时回来查阅排查清单。