概述
Dify 是一个开源的大语言模型(LLM)应用开发平台,结合了后端即服务(Backend-as-a-Service)和 LLMOps 的理念,旨在帮助开发者快速构建生产级的生成式 AI 应用。它通过直观的界面、强大的功能和灵活的部署方式,降低了 AI 应用开发的门槛,即使是非技术人员也能参与应用的定义和数据运营。本文档将指导您了解 Dify 的核心功能、安装部署、应用创建及常见使用场景。
Dify 简介
Dify(Define + Modify)是一个易用的 LLMOps 平台,旨在让开发者能够快速从原型设计到生产部署,构建可持续运营的 AI 应用。它提供以下核心功能:
- 工作流编排:通过可视化画布构建和测试复杂的 AI 工作流。
- 全面模型支持:支持数百种专有和开源 LLM,如 GPT、Mistral、Llama3,以及任何与 OpenAI API 兼容的模型。
- 提示词 IDE:直观的界面用于设计提示词、比较模型性能,并支持文本转语音等功能。
- RAG 管道:内置检索增强生成(RAG)功能,支持从 PDF、PPT 等文档格式提取文本,构建私有知识库。
- AI 智能体:支持基于 LLM 函数调用或 ReAct 策略定义智能代理,集成 50 多种内置工具(如 Google 搜索、DALL·E、Stable Diffusion)。
- LLMOps:提供日志监控、性能分析和持续优化功能。
- 后端即服务:提供易于集成的 RESTful API,支持与现有业务逻辑无缝对接。
Dify 相较于 LangChain 等开发库,提供了更接近生产环境的完整解决方案,类似一个经过精心设计的脚手架系统。
安装与部署
Dify 支持云服务和自托管两种部署方式。本节以自托管方式为例,介绍如何在本地部署 Dify。
前提条件
- 系统要求:
- Docker 和 Docker Compose 已安装。
- 最低硬件配置:4 核 CPU、8GB 内存、50GB 存储空间。
- Git 已安装(用于克隆代码)。
- 网络要求:确保可以访问 Docker Hub 或镜像源。
部署步骤
- 克隆 Dify 代码:
git clone https://github.com/langgenius/dify.git cd dify/docker
- 配置环境变量:
编辑cp .env.example .env
.env
文件,配置必要的参数(如数据库连接、API 密钥等)。确保FILES_URL
设置为 Dify 的访问地址(例如http://192.168.10.14
),以避免文件上传问题。 - 启动 Dify:
docker compose up -d
- 访问控制台:
- 启动完成后,在浏览器访问
http://localhost/install
。 - 按照提示设置管理员账号并完成初始化。
- 启动完成后,在浏览器访问
- 配置模型提供商:
- 登录后,进入「设置 > 模型供应商」,添加 API 密钥(如 OpenAI、DeepSeek、Claude 等)。
- 配置默认推理模型和 Embedding 模型。
常见问题
- 镜像拉取失败:检查网络连接或更换镜像源。运行
docker pull
手动拉取镜像。 - 权限问题:以管理员身份运行 Docker(Windows 用户右键 Docker Desktop 选择“以管理员身份运行”)。
- 文件上传失败:确保
.env
文件中的FILES_URL
已正确配置为 Dify 的访问地址。
创建 AI 应用
Dify 支持创建四种类型的应用:聊天助手、文本生成应用、智能代理(Agent)和工作流。以下是创建应用的步骤:
步骤
- 登录 Dify 控制台:
- 使用管理员账号登录,进入「工作室」页面。
- 选择创建方式:
- 从模板创建:选择 Dify 提供的预置模板(如智能客服、文档分析助手)。
- 从空白创建:手动配置应用。
- 导入 DSL 文件:使用社区分享的 YAML 格式应用配置文件。
- 配置应用:
- 命名与描述:为应用设置名称、图标和描述。
- 选择模型:从已配置的模型供应商中选择合适的推理模型(如 GPT-4、DeepSeek)。
- 提示词设计:在提示词 IDE 中编写 Prompt,定义 AI 的行为。
- 知识库(可选):上传文档(PDF、Word 等)或连接 Notion、Web 站点,构建 RAG 知识库。
- 发布应用:
- 点击「发布」按钮,生成唯一的 URL 或 API 密钥。
- 可选择将应用嵌入网页(通过 iframe、script 或浏览器插件)。
应用类型
- 聊天助手:适合多轮对话场景,如智能客服、语义搜索。支持上下文记忆。
- 文本生成应用:用于生成文章、摘要、翻译等,适合新闻、营销等场景。
- 智能代理:支持自主决策和工具调用,适用于复杂任务如数据查询、事务处理。
- 工作流:通过节点分解复杂任务,适合自动化场景如批量翻译、数据分析。
构建智能客服机器人(示例)
以下以构建智能客服机器人为例,展示 Dify 的 RAG 和 Chatflow 功能。
准备工作
- 上传帮助文档:
- 进入「知识库」页面,点击「创建知识库」。
- 上传 Dify 的帮助文档(PDF 或 Markdown 格式)。
- 选择分段模式(推荐「高质量」模式,需消耗 token)并确认分段连贯性。
- 配置 Embedding 模型:
- 在「设置 > 模型供应商」中选择支持 TEXT EMBEDDING 的模型(如 OpenAI、Cohere)。
- 确保 API 密钥有效且余额充足。
构建步骤
- 创建聊天助手:
- 在「工作室」中选择「从空白创建」,选择「聊天助手」类型。
- 设置应用名称(如「Dify 智能客服」)。
- 配置知识库:
- 在应用设置中关联创建的知识库。
- 选择混合检索模式,设置语义检索权重(如 70% 语义,30% 关键词)。
- 设计提示词:
- 在提示词 IDE 中编写 Prompt,例如:
你是一个智能客服助手,基于 Dify 帮助文档回答用户问题。提供准确、简洁的回答,并保持友好语气。如果问题超出知识库范围,礼貌地表示无法回答。
- 在提示词 IDE 中编写 Prompt,例如:
- 添加问题分类节点:
- 使用「问题分类器」节点将用户问题分为技术支持、功能咨询、无关话题等类别。
- 为无关话题设置默认回复,如「抱歉,我无法回答这个问题,请联系人工客服」。
- 发布与测试:
- 发布应用,获取 URL 或 API 密钥。
- 在「召回测试」中输入关键词(如「如何部署 Dify」),验证检索准确性。
- 测试多轮对话,确保上下文记忆正常。
注意事项
- 文件限制:单个知识库支持最多 50 个页面,超限需创建新知识库。
- 分段调整:检查分段预览,确保内容连贯性。
- API 安全:妥善保管知识库 API 密钥,避免泄露。
高级功能:工作流与智能代理
工作流
Dify 工作流通过节点分解复杂任务,提高系统的可解释性和稳定性。常见节点包括:
- 起始节点:接收用户输入(如文本、文件)。
- LLM 节点:调用大语言模型生成或处理内容。
- 条件分支节点:根据条件(如内容是否为空)决定工作流方向。
- 代码执行节点:执行数据库查询或文本处理。
- 参数提取器:将自然语言转换为结构化参数,供工具调用。
示例:构建 Arxiv 论文检索应用
- 需求:用户输入论文编号(如「2405.10739」),检索论文内容。
- 流程:
- 「起始节点」接收用户输入。
- 「参数提取器」提取论文编号。
- 「工具调用节点」调用 Arxiv API 检索论文。
- 「LLM 节点」生成摘要。
- 「直接回复节点」输出结果。
智能代理
智能代理支持自主推理和工具调用,适合复杂任务。Dify 提供两种策略:
- Function Calling:直接调用预定义函数,适合明确任务。
- ReAct:交替进行推理和行动,适合需要外部信息的场景。
示例:股票查询助手
- 配置 ReAct 策略,集成 Yahoo Finance API。
- 用户提问「苹果股票最新价格」,代理先推理问题意图,调用 API 获取数据,再生成回答。
最佳实践与技巧
- 优化提示词:
- 使用清晰、具体的 Prompt,避免歧义。
- 测试不同模型(如 GPT-4 vs. DeepSeek),比较性能。
- 知识库管理:
- 定期检查分段连贯性,禁用无关内容。
- 使用混合检索提升准确性。
- 错误排查:
- 变量引用问题:确保变量分组正确,避免 NoneType 错误。关闭并重新打开聚合分组开关,或升级到 Dify 1.1.3+。
- 文件上传失败:检查
.env
中的FILES_URL
配置。
- 性能优化:
- 调整模型参数(如温度、Top P)以平衡生成内容的随机性和确定性。
- 使用低成本模型(如 DeepSeek)进行原型测试。
- 社区资源:
- 参考 GitHub 上的 DSL 工作流脚本(如
dify-for-dsl
),快速导入社区模板。 - 加入 Dify 社区(如 VIP 群)获取技术支持。
- 参考 GitHub 上的 DSL 工作流脚本(如
常见问题解答
- 如何选择合适的模型?
- 根据任务需求选择模型。推理能力强的模型(如 GPT-4)适合复杂任务,成本较低的模型(如 DeepSeek)适合原型开发。
- 知识库上传 PDF 乱码怎么办?
- 将 PDF 转换为 Markdown 格式后再上传,或使用工具预处理文档。
- 如何处理大文件上传失败?
- 修改
.env
文件中的CODE_MAX_STRING_LENGTH
和TEMPLATE_TRANSFORM_MAX_LENGTH
为更大值(如 1000000),然后重启容器。
- 修改
- 如何集成第三方工具?
- 在「工具」页面添加自定义工具,配置 API 端点和参数。参考 Dify 插件市场中的开源插件(如 Google 翻译)。
总结
Dify 是一个功能强大、易于使用的 LLM 应用开发平台,适合从初学者到企业开发者的各种需求。通过可视化工作流、RAG 技术、智能代理和全面的模型支持,Dify 极大降低了 AI 应用开发的门槛。无论是构建智能客服、文档处理助手还是复杂的工作流,Dify 都能提供高效、安全的解决方案。