介绍
Dify 是一款开源的大语言模型(LLM)应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,
使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、
稳健的 Agent 框架、灵活的工作流,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,
使其可以专注在创新和业务需求上。
为什么使用Dify?
你或许可以把 LangChain 这类的开发库(Library)想象为有着锤子、钉子的工具箱。与之相比,Dify 提供了更接近生产需要的完整方案,
Dify 好比是一套脚手架,并且经过了精良的工程设计和软件测试。
主要优势
- 开箱即用的 Web UI:提供了优雅的界面,用于 Prompt 工程、数据集管理、日志观测等操作
- 支持多种模型:集成了数百个专有/开源 LLMs(如 GPT、Claude、Gemini、Llama 等)
- Prompt IDE:可视化编排 Prompt、对比模型性能、添加语音等额外功能
- RAG 引擎:覆盖从文档摄取到检索的全流程 RAG 能力
- Agent 能力:基于 Function Calling 或 ReAct 的 Agent 推理框架,支持预置/自定义工具
- 灵活的工作流:支持在画布上构建复杂的 LLM 工作流
- 企业级特性:支持日志观测、数据标注、生产数据分析等运营能力
核心功能
1. 应用类型
Dify 支持四种应用类型:
聊天助手(Chatbot)
- 基于对话式交互的智能助手
- 支持多轮对话、上下文记忆
- 适用场景:客服机器人、个人助理、技术支持
文本生成(Text Generator)
- 根据 Prompt 生成高质量文本
- 支持变量输入、批量生成
- 适用场景:文章写作、营销文案、代码生成
Agent 应用
- 具备推理和工具调用能力的智能代理
- 可自主规划任务、调用多个工具
- 适用场景:数据分析、自动化任务、复杂问题解决
Workflow 工作流
- 可视化编排复杂业务逻辑
- 支持条件分支、循环、并行执行
- 适用场景:业务流程自动化、数据处理管道
2. RAG(检索增强生成)
Dify 提供了完整的 RAG 解决方案:
知识库管理
- 支持多种文档格式:TXT、Markdown、PDF、HTML、DOCX、CSV 等
- 自动文档解析和分段
- 可视化的分段编辑和预览
向量化与检索
- 支持多种 Embedding 模型
- 多种检索模式:
- 向量检索:基于语义相似度
- 全文检索:基于关键词匹配
- 混合检索:结合向量和全文的优势
- 支持重排序(Rerank)提升检索准确率
引用与溯源
- 自动标注引用来源
- 一键查看原文档上下文
- 提升答案可信度
3. Prompt 工程
可视化编排界面
- 拖拽式组件添加
- 实时预览 Prompt 效果
- 支持 Jinja2 模板语法
变量管理
- 定义用户输入变量
- 支持多种类型:文本、数字、下拉选择、文件上传
- 变量校验和默认值设置
模型对比
- 同时测试多个模型的输出效果
- 对比响应时间、成本、质量
- 快速选择最优模型
4. 工作流(Workflow)
节点类型
输入节点
- 开始节点:定义工作流输入变量
- 文件上传节点:接收用户上传的文件
处理节点
- LLM 节点:调用大语言模型
- 知识库检索节点:从知识库查询相关内容
- HTTP 请求节点:调用外部 API
- 代码执行节点:执行 Python/JavaScript 代码
- 模板转换节点:使用 Jinja2 处理文本
- 变量聚合节点:合并多个变量
- 参数提取节点:从文本中提取结构化数据
逻辑节点
- 条件分支节点:根据条件选择执行路径
- 循环节点:重复执行子流程
- 并行节点:同时执行多个分支
输出节点
- 结束节点:返回工作流结果
- 答案节点:在对话应用中返回答案
调试与测试
- 单步执行查看每个节点输出
- 变量追踪与日志记录
- 错误提示和重试机制
5. Agent 功能
工具集成
内置工具:
- DuckDuckGo 搜索
- Google 搜索
- Wikipedia 查询
- Bing 搜索
- 天气查询
- 当前时间
自定义工具:
- 通过 OpenAPI Spec 导入 API
- 编写 Python 代码实现工具
- 工具参数和描述配置
推理模式
- Function Calling:适合支持原生函数调用的模型(GPT-4、Claude 等)
- ReAct:适合开源模型,通过提示词引导推理
快速开始
Docker 部署
1. 环境要求
- Docker 20.10+
- Docker Compose 2.0+
- 至少 2GB 内存
2. 克隆仓库
1 | git clone https://github.com/langgenius/dify.git |
3. 配置环境变量
1 | # 复制环境变量模板 |
4. 启动服务
1 | docker-compose up -d |
5. 访问应用
- 应用界面:http://localhost
- API 文档:http://localhost/api/docs
- 管理后台:http://localhost/admin
默认端口 80,如需修改可在 docker-compose.yaml 中调整。
源码部署
1. 前置要求
- Python 3.10+
- Node.js 18+
- PostgreSQL 15+
- Redis 7+
2. 后端部署
1 | # 克隆仓库 |
3. 前端部署
1 | cd ../web |
使用示例
示例 1:构建 RAG 知识库问答系统
第一步:创建知识库
- 进入「知识库」页面,点击「创建知识库」
- 上传文档(支持 PDF、Word、Markdown 等)
- 选择分段规则:
- 自动分段(推荐)
- 自定义分段符
- 选择 Embedding 模型(如
text-embedding-3-small) - 点击「保存并处理」
第二步:创建聊天应用
- 进入「工作室」,点击「创建应用」
- 选择「聊天助手」类型
- 在「上下文」中添加刚创建的知识库
- 配置 Prompt:
1 | 你是一个专业的知识库助手,请基于以下知识库内容回答用户问题。 |
第三步:测试与优化
- 在右侧对话框测试问答效果
- 查看「引用与归属」,验证检索准确性
- 调整检索参数:
- Top K:返回结果数量(建议 3-5)
- Score 阈值:相似度阈值(建议 0.5-0.7)
- 开启 Rerank 提升准确率
第四步:发布应用
- 点击「发布」生成 API 密钥
- 通过 API 或嵌入式组件集成到业务系统
示例 2:创建智能客服 Agent
第一步:创建 Agent 应用
- 创建应用选择「Agent」类型
- 选择支持 Function Calling 的模型(如 GPT-4)
第二步:配置工具
添加以下工具:
- 知识库检索:查询产品文档
- 订单查询(自定义 API 工具):
- 名称:query_order
- 描述:根据订单号查询订单状态
- OpenAPI Spec:
1
2
3
4
5
6
7
8
9
10
11openapi: 3.0.0
paths:
/api/order/{order_id}:
get:
summary: 查询订单
parameters:
- name: order_id
in: path
required: true
schema:
type: string
第三步:编写 Agent 指令
1 | 你是一个智能客服 Agent,负责处理用户的咨询和订单查询请求。 |
示例 3:构建内容审核 Workflow
工作流设计
1 | [开始] → [接收文本] → [敏感词检测] → [LLM 内容审核] |
节点配置
1. 开始节点
- 输入变量:
content(待审核文本)
2. 代码节点 - 敏感词检测
1 | def main(content: str) -> dict: |
3. LLM 节点 - 内容审核
- Prompt:
1 | 请审核以下内容是否违规,从以下维度评估: |
4. 条件分支节点
- 条件 1:
has_sensitive == true→ 拒绝 - 条件 2:
LLM.is_compliant == false→ 拒绝 - 其他 → 通过
5. 结束节点
- 输出审核结果和详细信息
API 使用
获取 API 密钥
- 发布应用后,在「访问 API」页面获取密钥
- 选择 API 类型:
- API-Key(服务端)
- Access Token(客户端,有安全风险)
调用示例
Python SDK
1 | import requests |
流式响应
1 | def chat_streaming(query, user_id): |
Node.js 示例
1 | const axios = require('axios'); |
文件上传
1 | def upload_file(file_path): |
高级特性
1. 对话变量
在 Prompt 中使用对话历史和用户信息:
1 | 用户信息: |
2. 外部数据源
通过 HTTP 节点集成外部 API:
1 | # 配置示例 |
3. 多模态支持
图像理解
- 使用支持视觉的模型(如 GPT-4V、Claude 3)
- 用户上传图片,模型分析图片内容
- 适用场景:图片识别、OCR、图片问答
语音交互
- 集成 TTS(文本转语音)
- 集成 STT(语音转文本)
- 实现语音对话机器人
4. 数据分析与监控
日志查看
- 查看所有对话历史
- 按时间、用户、会话筛选
- 导出日志数据
数据标注
- 对模型输出进行人工标注
- 标注好坏、收集反馈
- 用于模型优化和评估
分析报表
- 用户活跃度统计
- 平均响应时间
- Token 消耗统计
- 用户满意度分析
5. 团队协作
- 角色管理:管理员、开发者、只读成员
- 应用共享:团队内共享应用和知识库
- 版本管理:Prompt 版本控制和回滚
- 审批流程:应用发布审批(企业版)
最佳实践
Prompt 优化建议
1. 明确角色定位
1 | 好的示例: |
2. 提供清晰的指令
1 | 好的示例: |
3. 使用示例(Few-shot)
1 | 示例输入:计算 1+1 |
RAG 优化策略
1. 文档预处理
- 清洗无关内容(页眉、页脚)
- 保留文档结构(标题层级)
- 统一格式和编码
2. 分段策略
- 技术文档:按章节分段(500-1000 字)
- FAQ:按 Q&A 对分段
- 长文本:使用滑动窗口,保留上下文重叠
3. 检索优化
- 开启混合检索(向量 + 全文)
- 使用 Rerank 提升 Top 3 准确率
- 动态调整 Top K(简单问题少检索,复杂问题多检索)
4. Prompt 优化
- 提供检索到的原文内容
- 要求模型引用来源
- 处理无相关内容的情况
Agent 设计原则
1. 工具描述要清晰
1 | 好的工具描述: |
2. 限制 Agent 的行动范围
1 | 你只能执行以下操作: |
3. 设置安全检查
- 敏感操作需要用户确认
- 记录所有工具调用日志
- 设置调用频率限制
性能优化
1. 缓存策略
- 对相似问题使用缓存
- 缓存知识库检索结果
- 设置合理的缓存过期时间
2. 并发处理
- 使用流式响应提升用户体验
- 异步处理非关键任务
- 合理设置并发限制
3. 成本控制
- 选择性价比高的模型
- 使用较小的 Embedding 模型
- 设置单次对话 Token 上限
- 监控 API 调用量
常见问题
Q1: 如何选择合适的模型?
A: 根据场景选择:
- 简单对话:GPT-3.5、Llama 3 8B(成本低)
- 复杂推理:GPT-4、Claude 3 Opus(质量高)
- 代码生成:GPT-4、Claude 3.5 Sonnet、DeepSeek Coder
- 多语言:GPT-4、Gemini Pro(中文效果好)
Q2: 知识库检索不准确怎么办?
A: 优化步骤:
- 检查文档质量(是否有乱码、格式问题)
- 调整分段大小(尝试 300-800 字)
- 更换 Embedding 模型
- 开启混合检索和 Rerank
- 优化 Prompt,要求模型严格基于检索内容回答
Q3: 如何处理超长文本?
A: 解决方案:
- 使用长上下文模型(如 GPT-4 Turbo 128K)
- 分段处理:将长文本分段,分别调用 LLM,最后汇总
- 使用 Map-Reduce 工作流:
1
[长文本] → [分段] → [并行处理] → [结果汇总] → [最终答案]
Q4: Agent 调用工具失败怎么办?
A: 排查步骤:
- 检查工具 API 是否可访问
- 验证工具描述是否清晰
- 查看 Agent 推理日志,分析决策过程
- 切换到 GPT-4 等更强的模型
- 在 Prompt 中提供工具使用示例
Q5: 如何集成到现有系统?
A: 集成方式:
- API 集成:调用 Dify API,灵活度最高
- 嵌入式组件:使用 iframe 或 Web Component
- Webhook:Dify 主动推送消息到业务系统
- 自定义前端:使用 Dify API 开发完全自定义的界面
Q6: 数据安全如何保障?
A: 安全措施:
- 私有化部署:数据不出本地
- API 密钥管理:定期轮换密钥
- 权限控制:团队成员分级授权
- 审计日志:记录所有操作
- 数据加密:传输和存储加密
社区与资源
官方资源
- 官网:https://dify.ai
- GitHub:https://github.com/langgenius/dify
- 文档:https://docs.dify.ai
- Discord:https://discord.gg/dify
学习资源
- 官方教程:https://docs.dify.ai/tutorials
- 视频教程:B站搜索 “Dify 教程”
- 示例应用:GitHub 上的 dify-examples 仓库
生态工具
- Dify SDK:Python、JavaScript、Go 等语言的 SDK
- 插件市场:第三方工具和集成
- 模板市场:开箱即用的应用模板
总结
Dify 作为一个开源的 LLM 应用开发平台,为开发者提供了从 Prompt 工程、RAG、Agent 到工作流的全栈能力。
无论你是想快速搭建一个 AI 应用原型,还是要构建生产级的企业应用,Dify 都能提供强大的支持。
适用场景
- ✅ 企业知识库:构建内部 Q&A 系统
- ✅ 智能客服:自动化客户服务
- ✅ 内容生成:营销文案、文章写作
- ✅ 数据分析:自然语言查询数据
- ✅ 自动化流程:业务流程自动化
下一步
- 访问 https://dify.ai 注册账号(提供云服务版本)
- 或本地 Docker 部署体验完整功能
- 从简单的聊天助手开始,逐步探索高级功能
- 加入社区,与其他开发者交流经验
希望这篇教程能帮助你快速上手 Dify,构建出色的 AI 应用!🚀