Dify — LLM 应用开发平台
是什么
Dify 是上海 LangGenius 团队 2023 年开源的”无代码 / 低代码 LLM 应用平台”——你不用写一行 Python,只要在浏览器里拖拽节点,就能搭出一个 RAG 问答机器人、一个智能体、或者一条多步 LLM 工作流。
日常类比:
- langchain / llamaindex 像乐高散件——给程序员一堆 Python 函数,自己拼成想要的形状
- Dify 像Keynote / Figma——给产品经理一个画布,拖几个框、连几条线,应用就出来了
举个具体例子:你想给公司做一个”问内部文档的客服机器人”。
- 用 LangChain:装 Python 环境、读文档、写 chain 代码、自己部署 web 服务、自己做账号管理——一个工程师两周
- 用 Dify:浏览器里上传 PDF、新建一个 Chatbot 应用、把 PDF 关联进去、点”发布”——一个 PM 半小时
这不是说 Dify 比 LangChain 好——是它们解决的人不一样。Dify 把”做 LLM 应用”这件事的门槛降到了”会用 Notion 的人就能做”。
为什么重要
四个原因:
- 国内 LLM 应用平台的开源代表——和ByteDance扣子、阿里魔搭智能体、百度文心智能体形成同一条赛道。这条赛道的特征是”PaaS 给非程序员”,背后假设是”未来用 LLM 的人 ≫ 写 LLM 代码的人”
- Apache 2.0 + 自托管——不像扣子 / Bedrock 那样只能用云,Dify 可以 docker compose up 起在自己机器上,数据完全不出门。这对企业内部知识库特别重要——很多公司不允许把 PDF 传到第三方
- 多 LLM Provider + 知识库 + 工具市场三合一——不绑定 OpenAI,可以接 Claude / Gemini / 本地 ollama / 阿里通义 / 智谱清言。一个产品里,可以同时给国内用户用国产模型、给海外用户用 Claude
- GitHub 70k+ stars——开源 LLMOps 平台头部。社区活跃意味着遇到问题大概率有人踩过,文档相对完善
核心要点
Dify 的产品抽象有三层:应用 → 知识库 → 工作流。
App 类型(应用)
四种应用模板,对应不同的产品形态:
- Chatbot:纯对话机器人,最简单——给个 prompt + 知识库就能跑
- Text Generator:单次输入、单次输出——比如”给我写一首诗”、“翻译这段话”
- Agent:智能体——能自己决定调用哪些工具(搜索、计算器、HTTP)来完成任务
- Workflow:拖拽 DAG——多个节点串起来,能写复杂逻辑(条件分支、循环、并行)
Knowledge(知识库)
把 PDF / Word / 网页变成 LLM 可检索的”长期记忆”:
- 上传文件
- Dify 自动切片(chunking)——把长文档切成几百字的段落
- 自动 embedding——每段算出一个向量
- 入库存到向量数据库(默认 Weaviate,可换 Qdrant / PGVector)
之后在 Chatbot 里关联这个知识库,用户提问时 Dify 会自动检索相关段落塞进 prompt——这就是 RAG(Retrieval-Augmented Generation)。
Workflow(工作流)
最强大也最复杂的形态。在画布上拖节点,每个节点干一件事:
- LLM 节点:调一次大模型
- 知识检索节点:从知识库查段落
- 条件节点(IF/ELSE):根据上一步结果走不同分支
- HTTP 节点:调外部 API
- 代码节点:跑一段 Python / JS(沙箱内)
节点之间用线连起来,数据沿着线流动。整个图就是一条可执行的 LLM pipeline。
实践案例
案例 1:30 分钟自托管起 Dify
git clone --depth 1 https://github.com/langgenius/dify.gitcd dify/dockercp .env.example .env# 编辑 .env:设置 SECRET_KEY(随机串)+ 服务地址
docker compose up -d# 拉镜像 + 启动 Postgres / Redis / API / Worker / Web / Plugin Daemon# 首次约 5-10 分钟
# 浏览器访问 http://localhost/install 创建管理员# 然后 http://localhost 进控制台完事后控制台里:设置 → 模型供应商 → 添加你的 OpenAI key(或本地 ollama)。
案例 2:3 分钟做一个 RAG 问答机器人
- 知识库 → 创建 → 上传 PDF(比如公司年报)
- 选 embedding 模型 → 等切片完成(小文件几秒,大文件几分钟)
- 工作室 → 创建应用 → 选”聊天助手”
- 在编辑器里关联刚才的知识库 → 写 prompt(“你是公司助手,根据知识库回答…”)
- 点”发布”——拿到一个 URL 和一个 API key
把 URL 发给同事,浏览器打开就能用;把 API key 给开发者,可以集成到任何系统里。
案例 3:一条 Workflow 多分支
需求:用户问问题,先识别类型,技术问题查技术文档,业务问题查业务文档,最后 LLM 总结答案。
画布上拖:
Start → LLM(分类节点) ↓ IF/ELSE ├→ 知识检索(技术库) → LLM(总结) ↘ └→ 知识检索(业务库) → LLM(总结) → End每个节点的输入输出在画布上肉眼可见,调试时点”运行”能看到每一步的中间结果——这是相比纯代码 LangChain 最大的体验提升。
踩过的坑
- 自托管 docker-compose 至少 8GB 内存——4GB 机器上 Postgres + Redis + Worker + Web + Plugin Daemon 起不全。生产环境建议 16GB 起,知识库大的话 32GB
- Workflow 节点里嵌套引号容易语法错误——中文 prompt 里写
"用户的问题是「{{query}}」",引号嵌套层数多了 Dify 模板引擎会解析错。技巧:外层用单引号,或者用反斜杠转义,或者把长 prompt 拆成多个节点 - token 计费要在 Provider 设置里手动配——Dify 不会自动从 OpenAI 账单同步费用。要看每个 tenant 用了多少钱,得在”模型供应商”页手动填每千 token 单价。算法是”调用次数 × 单价”,和 OpenAI 实际账单可能有偏差
- Knowledge 大文件 embedding 很慢——100MB+ 的 PDF 切片 + embedding 可能要跑 30 分钟以上,因为是单线程顺序处理。技巧:大文件先在外部用 PyPDF2 拆成多个小 PDF 再上传,能并行 embedding
- Workflow 单次执行有时长上限——默认
WORKFLOW_MAX_EXECUTION_TIME=1200s(20 分钟),超过被强制中断。长跑任务(视频处理、跨多步深度推理)要拆成多个 workflow 串联,或者在外部用 Celery 调度
历史小故事
- 2023-04:LangGenius 在上海注册成立,团队来自ByteDance和摩拜的背景,第一天就决定全公开开发
- 2023-05:第一版 Dify 开源到 GitHub——当时还叫 “LangGenius”,后来才改成 “Dify”。最初只有 Chatbot 一种应用类型
- 2024-初:v0.5 加入 Agent 模式(react 循环 + function calling)
- 2024-中:v0.6 加入 Workflow——可视化 DAG 编辑器登场,这是 Dify 真正出圈的版本
- 2024-Q4:Dify Cloud 商业化上线——SaaS 版,按 message / 知识库容量计费;同时推出企业版,支持私有化部署 + 商业 license
- 2025:v1.0 GA,重构成 Plugin Daemon 架构——把所有 LLM provider 抽到独立 daemon 进程,主进程零 LLM SDK 依赖
两年从开源到 70k stars,是国内开源 SaaS 项目跑得最快的之一。
学到什么
- 可视化编辑器不是技术难点,编辑器与运行时共享一份 schema 才是——Dify 真正的工程价值在于”前端拖出来的 JSON 等于后端可执行的 DAG”,而不是 React Flow 本身
- Plugin daemon 模式比 import SDK 更优——主进程对所有 LLM provider 零依赖,加新 provider 不需要改主仓代码、不需要重启服务。这个模式可以拷贝到任何”多上游”的中间件设计
- Apache 2.0 + brand 限制是中国开源项目商业化的常见路径——既不像 BSL 那样劝退社区,也不像纯 Apache 那样被白嫖,留出 SaaS 商业化空间
- “无代码 / 低代码”不是没有代码,是把代码藏在节点里——Workflow 的代码节点 + HTTP 节点最终还是要写代码,只是把”编排”这件事可视化了。理解这个边界才能选对工具
关联
- langchain —— Python 库派的代表,给开发者写代码,与 Dify 是不同时代的心智模型
- llamaindex —— RAG 专项库,与 Dify 的 Knowledge 子系统是”专精 vs 平台”的对比
- ollama —— 本地跑 LLM 的最简方案,Dify 自托管时常配它做”零成本 + 数据不出门”组合
- rag —— Dify Knowledge 的核心范式,Retrieval-Augmented Generation
- vector-database —— Dify 默认 Weaviate,可换 Qdrant / PGVector,是 RAG 的存储层
延伸阅读
- 官方文档:docs.dify.ai(中英双语,比 README 详细很多)
- 视频教程:B 站搜”Dify 实战”——国内创作者很多,30 分钟入门视频质量普遍可以
- 自托管指南:仓库
docker/README.md—— 各种部署组合(CPU / GPU / 国内镜像) - Plugin 开发:langgenius/dify-plugin-sdks —— 想给 Dify 写一个 plugin(接你公司的内部 LLM API)半天上手