ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Dify开源LLM应用开发平台:部署、工作流与Agent实战指南

Dify开源LLM应用开发平台:部署、工作流与Agent实战指南 最近被问到最多的开源项目Dify 应该排得上前几。尤其过完年之后身边搞产品、搞运营、搞后端的朋友都在打听Dify 到底是什么好不好装装完能拿来干嘛。这问题我也被问过不下二十次每次都答一遍干脆把答案写成一篇笔记谁再问我直接甩链接。一句话说Dify 是一个开源的 LLM 应用开发平台你可以把它理解成一套帮你在真实业务里落地大模型能力的操作系统。它做的是把模型接入、知识库检索、工作流编排、Agent 工具调用、应用发布这些本来要写大量代码的事变成控制台里可视化的几步操作。装上之后你可以用它搭一个基于你们公司文档的问答机器人也可以把一堆业务步骤串成自动化流水线还可以把应用做成 API 接口交给现有系统调用。这篇文章不是官方文档的复制粘贴而是我在测试环境和生产环境里实际装过、用过的记录。准备从三个角度讲透Dify 是什么Dify 怎么装装完能做什么。同时把我在安装和日常使用中踩过的坑、搜过的问题包括那些高频报错一并整理进来。适合刚接触 Dify、准备本地部署、或者已经装上但不知道下一步该干嘛的朋友。1. Dify 是什么把散装的 AI 能力装进一个控制台1.1 先搞清楚它解决了什么问题这两年大家提起 RAG、Agent、工作流这些词其实心里想的是同一件事怎么把大模型从“聊天玩具”变成能处理真实任务的东西。但真动手做你会发现每件事都是一摊子开发模型接口要写文档拆分要写向量检索要写对话记忆要维护外部工具要接这些活还没有哪一本教科书能完整教你怎么串起来。Dify 的基本思路就是把这一大堆已经被验证过的技术全部封装成一个个可以拖拽、可以配置的模块。打个比方如果没有 Dify你搭一个企业知识库问答至少需要准备后端服务、前端页面、PostgreSQL、Redis、向量数据库、文档解析服务再自己把问答链路调通。少说一个月。有了 Dify它把 PostgreSQL、Redis、Weaviate、Sandbox 这些依赖全部预置在 Docker 编排里装完默认就是一套完整可运行的环境。你只需要往里面喂知识、配模型、拖流程。1.2 核心能力到底有哪些能力模块具体内容模型管理统一接入 OpenAI、Anthropic、DeepSeek、Ollama 等国内外模型切换模型不用改代码知识库完整 RAG 流程多格式文档解析、分段、向量化、检索评测工作流可视化编排LLM、知识检索、代码、HTTP 请求、条件分支、迭代等节点Agent编排助手接入工具让模型自己决定调用顺序和时机API 化应用一键发布为 API 服务也可嵌入网页对外提供接口日志与可观测完整 Trace、Token 消耗统计、对话标注与回放这六个能力里工作流和 Agent 是我最看重的两个后面会展开讲。模型管理和知识库算是底座API 化是把它从“自嗨型玩具”升级为“可集成服务”的关键一步。1.3 和其他方案的差异有人会问有 LangChain 我为什么还要 DifyLangChain 是一个开发框架Dify 是一个带界面和运行服务的平台。用 LangChain 你需要自己写代码、自己部署服务用 Dify 你大部分时间在点鼠标复杂需求再通过节点扩展。如果你熟悉 LangGraph也可以自己搭类似框架但优势往往是自由度代价是时间。Flowise 也提供可视化编排但它更偏向流程原型验证在企业应用生命周期管理、API 发布、日志体系上和 Dify 的成熟度不太一样。Coze 类 SaaS 上手更快但数据主权不在你手里。所以选型建议其实很简单想要开箱即用地跑一个带界面的完整应用Dify 是当前社区里性价比最高的选择。还有个很多人没意识到的好处Dify 把整个应用的每个环节都暴露成可观察的模块。从用户提问、知识召回、模型响应到最终结果每一步都有日志。排查问题时你可以看见是检索漏了还是模型答偏了而不是面对一个黑盒子。1.4 社区版、企业版和云版本怎么选Dify 的社区版在 GitHub 上完全开源功能已经覆盖个人和中小团队的绝大多数需求。企业版增加了一些运维向能力比如更细的权限管控、审计、SSO、专属技术支持。云版本则由官方托管。如果你刚接触直接装社区版就好不用犹豫。等团队规模大了、安全要求高了再根据预算考虑上企业版或者自建运维体系。我目前团队内部跑的就是社区版日常功能使用完全没问题。2. 安装前先想清楚这三件事2.1 部署方式怎么选Dify 支持多种安装方式最主流的是 Docker Compose 一键部署这也是官方最推荐的社区版安装路径。还有本地源码运行、Kubernetes Helm 部署。如果只是个人学习、公司内部试用单机 Docker Compose 完全够。生产环境如果预估流量不大单机编排加认真的备份策略也能跑等规模上去了再迁到 K8s 也不晚。我见过不少人一开始就想上 Helm结果被维护成本拖垮其实没必要。Windows 用户会纠结 Windows 怎么装。简单说先在 Windows 上装 Docker Desktop打开 WSL2 后端然后走同样的 docker compose 流程。但 Windows 做开发调试可以真正长期跑服务我不建议Docker Desktop 的资源占用和文件性能都不如 Linux 顺手。我自己家里有一台老 Linux 小主机装完扔角落里跑得很踏实。2.2 机器配置和系统兼容性官方建议内存 4GB 以上这个数字我实测下来是底线。仅仅把容器全部拉起来内存占用就到 2GB 出头一旦处理大 PDF 或在控制台里打开页面4GB 会明显吃力。想用得舒服内存 8GB磁盘预留至少 20GB容器镜像和数据都会涨。CPU 双核起步。用 NAS 部署的朋友比如飞牛、群晖同理内存小的话装完第一件事就是关掉那些不用的套件。系统层面Ubuntu 20.04/22.04、Debian 11/12 最省心。CentOS 7 用户要多注意内核 3.10 对 Docker 新特性的支持不完整Docker 官方也在老版本上不怎么投放精力如果你必须用 CentOS 7先把 Docker 装到 20.10 以上再检查 overlay2 存储驱动。我帮人排查过 CentOS 7 上容器反复重启最后发现是磁盘分区不是 ext4 导致存储驱动异常格式化重挂才解决。能用新系统就用新系统这是我最直接的忠告。2.3 域名、端口和数据目录规划安装前想好将来怎么访问。默认安装 Dify 会用 80 端口如果你服务器上已经有 Nginx 或其他业务占用 80启动会直接失败。提前规划或者改 .env 里的 EXPOSE_NGINX_PORT。不要小看这一步论坛里几乎每天都有端口冲突的帖子。域名的话先 http IP 跑通再上 HTTPS 也行但如果有域名建议提前把 DNS 解析做好后面配证书省事。再想清楚数据放哪。Dify 的数据都在 Docker 卷里日志在容器内.env 在 dify/docker 目录下。这决定了你后面备份和迁移的路径。如果你有专门的 SSD把 docker 数据目录指过去知识库检索的体验会明显更好。3. Docker Compose 装 Dify完整实操记录3.1 先装好 Docker 环境我按 Ubuntu 22.04 演示Debian 流程一模一样。先确认 docker 和 compose 可用docker --version docker compose version如果没装用官方脚本最快curl -fsSL https://get.docker.com | sh装完把当前用户加进 docker 组避免每条命令都要 sudosudo usermod -aG docker $USER newgrp docker新版 Docker 自带 Compose v2老环境如果只有 docker-compose带横线之后命令里把docker compose替换成docker-compose。验证一下再往下走。3.2 拉取 Dify 工程并配置 .envDify 的发布包在 GitHub最简单是直接 clonegit clone https://github.com/langgenius/dify.git cd dify/docker cp .env.example .env打开 .env 重点看几个配置POSTGRES_PASSWORD、SECRET_KEY生产环境一定要改掉默认值。SECRET_KEY 可以用系统工具生成再填进去。还有 EXPOSE_NGINX_PORT默认 80以及版本相关变量如 DIFY_IMAGE_TAG 等。我提醒一个细节clone 默认分支可能跑得很新如果你想锁定一个版本git checkout到指定 tag或者直接去 GitHub Releases 下载对应版本源码。我 1.10 版本在测试环境跑了几周后来升到新版本整体顺畅。社区版更新节奏快新功能一般都在当前版本上验证别追最新先在测试环境跑一两天再说。3.3 启动、初始化和访问在 dify/docker 目录下执行docker compose up -d第一次会拉很多镜像时间取决于网速。拉完以后执行docker compose ps看到 api、worker、web、db、redis、weaviate、sandbox、nginx 等容器都处于 running 就说明基本就绪。然后浏览器访问http://服务器IP/install进入初始化页面设置管理员邮箱和密码这一步不难。如果访问不了先排查防火墙端口是否放行ufw allow 80再docker compose logs nginx看日志。我遇到过很多次“容器全起来了但页面白屏”最后发现是内存不足导致 web 或 api 容器被 OOM kill。用docker compose ps看看状态再用docker stats看占用。3.4 升级和迁移的常规思路升级社区版很多人的第一反应是删了重装千万别。常规流程cd dify/docker docker compose down docker compose pull docker compose up -d升级前备份 .env 和数据库卷。如果跨大版本先看官方 Release Notes 有没有额外迁移步骤。我在版本升级时发现文档提醒要检查某个 schema 变更照做就行。迁移到新服务器麻烦的反而不是程序本体而是数据。最靠谱的方式是停服后把 Docker 卷目录整个打包Linux 默认在 /var/lib/docker/volumes/dify_*连同 .env、docker-compose.yaml 一起拷贝到新机器再执行 docker compose up -d。如果你之前单独改过镜像新机器上拉不到对应 tag要先统一版本。数据库层面 Dify 用了 PostgreSQL卷备份比逻辑导出省事得多。4. 装完之后能做什么四个真实场景4.1 把公司文档变成问答机器人这是 Dify 最典型的用法也是知识库能力最能打的地方。先把文档传到知识库里Dify 会做分段、清洗和向量化。你可以在应用里绑定这个知识库用户提问后系统先把问题向量化在知识库里检索相关片段再把上下文塞给大模型生成答案。要做这一步你需要到设置里配置一个 Embedding 模型和一个 Rerank 模型。Embedding 负责把文本转成向量Rerank 负责把召回结果重新排序。只做 Embedding 不加 Rerank精度差一大截别省这一步。文档解析这块Dify 默认支持 txt、markdown 等纯文本格式PDF、docx、xlsx 这些复杂格式依赖一个叫 Unstructured 的解析服务。新版本如果你没配置 Unstructured 的 API 地址传 PDF 常常会报错报错原文就是dify unstructured api url is not configured for doc file processing.。解决办法是在 .env 里配好 UNSTRUCTURED_API_URL 等变量并重启容器后面 5.2 小节我再细说。4.2 可视化工作流从吃灰到跑业务我见过不少朋友装完 Dify 只用来聊两句就吃灰了。其实工作流功能才是把 Dify 推向“生产力工具”的开关。举个我实际跑通的例子做一个客服助手。用户提问进来先用参数提取器或 LLM 节点判断意图如果是知识库范围内的问题就触发知识检索节点检索结果进入 LLM 节点生成答案。如果是闲聊走另外一条分支回复固定文案。整个流程在画布上拖几个节点半小时能搭好。节点选择直说能用得上的LLM 节点负责调模型知识检索节点绑定知识库代码节点可以写 Python/JS 做数据处理HTTP 请求节点能对接你公司内部的接口条件分支节点连判断逻辑迭代节点处理列表数据比如一批工单逐条生成答复。工作流和对话流的差别记住一条工作流是一次性编排适合后台自动化或 API 调用对话流是多轮对话适合聊天机器人。4.3 Agent 智能体不只是聊天Agent 能力在 Dify 里的体现是你可以让模型自己决定调用哪些工具。比如给它配上搜索工具、计算工具、代码执行器用户说出需求后模型规划步骤、选工具、执行、看结果再继续下一步。这比单轮问答灵活得多。配置 Agent 时模型选择很关键。优先选原生支持 Function Calling 的模型工具调用稳定性高。能力一般的模型也可以切到 ReAct 模式硬跑但成功率会明显掉下来。还有一点Agent 的 prompt 不要写太长工具描述写清楚“何时用、输入输出什么”模型才会在正确时机调用正确工具。工具描述稀烂Agent 就乱套这不是模型的问题是说明书没写好。4.4 把应用 API 化交给外部系统调用Dify 深挖下去最值钱的一点是它可以作为后端服务被其他系统集成。应用发布为 API 服务后你会拿到一个 API Key调用方式类似curl --request POST \ --url http://你的服务器/v1/chat-messages \ --header Authorization: Bearer app-xxx \ --header Content-Type: application/json \ --data { inputs: {query: 你好}, query: 介绍一下你自己, response_mode: blocking, user: test-user }这套 API 在很多场景下会直接被接到自己的网页、群机器人、飞书应用里相当于一行不写后端逻辑就获得一个智能问答接口。Dify 也支持应用嵌入 iframe复制一段代码就能在现有页面上开一个对话窗。另外Dify 本身就是开源项目前端 Next.js、后端 Python/Flask。你要做二次开发可以改源码后构建自己的镜像替换 langgenius/dify-api 和 langgenius/dify-web想过调试就直接把源码挂载进容器。很多企业内部会改控制台的文案和主题就是这个路子。但这个属于进阶玩法先把标准功能吃透再碰。5. 高频报错和排查实录5.1 凭据校验失败an error occurred during credentials validation这是配置模型供应商时最常见的报错。遇到它先按顺序检查模型供应商选没选对API Key 复制有没有多余空格Key 是否有对应模型的调用权限自定义模型的话Endpoint 地址有没有填对。我用 Ollama 做本地模型时填 URL 容易踩坑Linux 上容器内不能直接用 localhost要填宿主机内网 IP或者用 host.docker.internal需要给容器加 extra_hosts。最后到 api 容器里看日志docker compose logs api --tail 50日志里会告诉你到底是网络层不通还是鉴权失败。顺着日志查比一个个猜快得多。5.2 文档解析报 unstructured 未配置前面提过PDF、docx 等复杂文档解析依赖 Unstructured。新版本安装后如果你直接传 PDF很可能收到unstructured api url is not configured的提示。这是因为 Dify 默认把非结构化解析做成独立服务但没有自动把地址写进 .env。解决方式编辑 .env配置 Unstructured 相关变量UNSTRUCTURED_API_URLhttp://unstructured:8000 UNSTRUCTURED_API_KEYchange_me然后重启容器。注意如果你从外部单独部署 UnstructuredURL 要写宿主机可访问的地址。配置完重新上传文档基本就能解析了。如果还不行检查 unstructured 容器有没有正常起来它本身也是一个 docker compose 里管理的服务。5.3 页面打不开 / SSL 证书问题Dify 默认监听 80 端口如果你的服务器安全组没放行外部访问就会超时。先curl -I http://localhost自测本地能通、外网不通查防火墙。想上 HTTPS建议在 Dify 入口处加一层 Nginx 或 Caddy 做 TLS 终结证书挂在这一层Dify 内部继续走 http。如果你想直接让自带的 nginx 容器处理要改 .env 里的 HTTPS 开关和证书路径变量把证书文件挂载进容器。常见的 SSL 报错多半是证书路径挂载不对导致容器反复重启或者证书链不完整导致浏览器不认前者看 nginx 日志后者检查证书链是否包含中间证书。5.4 登录提示尝试次数过多报错原文类似too many incorrect password attempts. please try again later.。这是 Dify 对登录失败做的限流保护连续输错密码后会锁一段时间。短期方案是等锁定期结束别硬试。如果你确实把管理员密码忘了可以到 api 容器里执行密码重置命令Dify 提供了一个 Flask 命令进容器跑一次按提示设置新密码即可。操作前确认容器名用docker ps看清楚再进。我提醒一句这套限流在生产环境是好事不要为了图方便把它关掉真有人猜密码你就知道它多重要了。5.5 多租户、权限和数据迁移社区版从 1.10 版本开始账号体系和多租户能力比早期版本明显增强后台可以管理多个空间和成员权限控制更细。从老版本升级上来的升级完第一次进后台可能需要重新绑定管理员信息先看官方升级说明。至于频繁出现的 Dify 迁移问题本质就是 .env、docker-compose.yaml 和 Docker 卷三个东西。三样都带过去迁移就成功八成。最怕的是只拷贝了代码目录忘了 .env 和卷结果新机器起来是全新应用旧数据全部不见。我建议把备份命令写成脚本每天定时把卷目录打个 tar 包放到另一块磁盘成本很低关键时刻真能救命。6. 写在最后一点个人体会说实话我一开始对这类可视化 AI 平台是有偏见的总觉得减少代码量的同时也在限制灵活性。真正用 Dify 搭了几条工作流之后我的看法变了。它没有把底层逻辑藏起来反而是把整个 RAG 链路、工具调用、日志链路摊开给你看。对想学 LLM 应用实现的人来说它是一块非常好的解剖标本——拆开看看它每一步在干什么比你自己从零搭一遍效率高得多。给刚开始接触的朋友一个建议别一上来就看一大堆教程先花半小时把它装好创建一个知识库把你手边的一份操作手册传进去做一个问答应用。再做一条最简工作流比如提问后调用一个外部接口再让模型总结结果。这两步走完Dify 能做什么你的理解会比看十篇文章都深刻。
返回列表