跳到主要内容
AI教程

使用 Dify 构建并自行托管 LLM 应用

了解 Dify 的功能,使用 Docker Compose 部署社区版并初始化控制面板,探索工作流、模型集成、RAG、智能体、API、可观测性和高级部署方案。

使用 Dify 构建并自行托管 LLM 应用

什么是 Dify?

Dify 是一个用于开发大语言模型驱动应用的开源平台。它将可视化 AI 工作流、检索增强生成、智能体功能、模型管理、可观测性和应用 API 集成在同一界面中,帮助团队将原型推进至生产环境。

你可以直接使用托管的 Dify Cloud 服务,无需安装任何内容;也可以在自己的环境中部署社区版。对于有额外需求的组织,Dify 还提供面向企业的方案。

主要功能

  • 可视化工作流:在可视化画布上构建和测试 AI 工作流。

  • 广泛的模型支持:通过推理服务提供商或自行托管的解决方案,连接数百种专有及开源模型。支持的选项包括 GPT、Mistral、Llama 3,以及兼容 OpenAI API 的模型。

  • Prompt IDE:编写提示词、比较模型性能,并为聊天应用添加文本转语音等功能。

  • RAG 流水线:从文档中摄取和检索信息,内置对 PDF、演示文稿及其他常见格式的文本提取支持。

  • 智能体和工具:使用 LLM Function Calling 或 ReAct 定义智能体。Dify 内置 50 多种工具,包括 Google Search、DALL·E、Stable Diffusion 和 WolframAlpha,同时也支持自定义工具。

  • LLMOps:监控应用日志和性能,然后利用生产数据及标注改进提示词、数据集和模型。

  • 后端即服务:通过相应的 API,将 Dify 应用集成到现有业务逻辑中。

  • 可观测性集成:Dify 支持多种可观测性方案,包括 OpikLangfuseArize Phoenix

选择 Dify 的运行方式

Dify Cloud

Dify Cloud 无需本地配置,是体验该平台最快捷的方式。根据项目 README,其沙盒计划包含 200 次免费的 GPT-4 调用,并提供自行部署版本所具备的功能。

自行托管的社区版

自行托管可以让你掌控 Dify 的运行环境。官方文档中最简单的安装方式是使用 Docker Compose。

企业和组织使用

Dify 还提供面向企业的功能。组织可以联系 Dify 团队,讨论自身需求和许可方案。

使用 Docker Compose 安装 Dify

检查系统要求

开始之前,请确保主机满足以下最低要求:

  • CPU:至少 2 核

  • 内存:至少 4 GiB RAM

  • Docker:已安装并正在运行

  • Docker Compose:2.24.0 或更高版本

如果尚未安装 Docker,请参阅官方 Docker 安装指南

启动服务

在已检出的 Dify 仓库副本中,依次进入项目目录和 Docker 目录,复制示例环境文件,然后启动服务:

cd dify
cd docker
cp .env.example .env
docker compose up -d

-d 选项会以分离模式启动容器,使其能够继续在后台运行。

初始化控制面板

服务启动后,在浏览器中打开以下地址:

http://localhost/install

按照控制面板中显示的流程完成初始化。如果设置失败,请查阅官方自行托管常见问题

希望参与贡献或修改 Dify 的开发者应使用官方源代码部署指南,而不是仅依赖 Docker Compose 快速入门方案。

基本用法

1. 选择模型

Dify 可以集成来自众多托管推理服务提供商和自行托管解决方案的模型。请选择适合应用的提供商和模型。兼容选项包括 GPT、Mistral、Llama 3,以及通过 OpenAI API 兼容接口提供的模型。有关当前支持的集成,请查阅模型提供商列表

2. 构建并测试工作流

使用可视化画布组装并测试 AI 应用的逻辑。当应用需要执行的不只是单一提示词时,工作流会非常有用,例如需要处理输入、将其发送给模型、使用检索到的信息进行增强,或将其传递给工具。

  1. 定义应用应从用户处接收哪些内容。

  2. 使用 Dify 的可视化工作流界面呈现 AI 处理流程。

  3. 将工作流连接到合适的模型。

  4. 测试其行为并检查生成的结果。

  5. 根据需要优化工作流、提示词、数据集或模型选择。

3. 在 Prompt IDE 中开发提示词

使用 Prompt IDE 通过交互式界面编写和测试提示词。你可以先比较模型性能,再决定哪种模型最适合应用。对于聊天类应用,该 IDE 还可以集成文本转语音等功能。

4. 使用 RAG 添加知识

Dify 的 RAG 流水线涵盖文档摄取和检索。典型的知识型应用可以摄取包括 PDF 和演示文稿在内的受支持文件,提取其中的文本,并在回复用户时检索相关材料。

例如,你可以创建一个根据内部文档回答问题的助手。应用不必只依赖模型已有的知识,而是可以从已摄取的文档中检索相关内容,并在生成回复时使用这些内容。

5. 创建可使用工具的智能体

对于需要执行操作或调用外部服务的任务,可以使用 Function Calling 或 ReAct 定义智能体。添加 Google Search、DALL·E、Stable Diffusion 或 WolframAlpha 等内置工具,也可以连接应用设计所支持的自定义工具。

例如,研究型智能体可以先使用搜索功能收集信息,再生成回复。创意型智能体则可以在用户请求视觉内容时调用图像生成工具。

6. 通过 API 集成应用

Dify 的各项功能均提供相应的 API,使完成的应用可以充当其他产品的后端。当你的 Web 应用、内部工具或其他业务系统需要调用在 Dify 中构建的逻辑时,可以采用这种后端即服务方式。有关当前的集成说明,请参阅官方文档

监控和持续改进

Dify 的 LLMOps 功能可以帮助你持续监控应用日志和性能。生产数据和标注能够为提示词、数据集和模型选择的改进提供指导,由此形成一个迭代工作流:部署应用、检查其行为,再根据观察到的结果加以优化。

如需进一步增强可观测性,可以了解 Dify 与 Opik、Langfuse 和 Arize Phoenix 的集成。请根据环境对链路追踪、评估和监控的需求选择合适的集成方案。

高级设置技巧

自定义环境变量

基本的启动默认值存储在 docker/.env.example 中。快速启动命令会将这些默认值复制到 docker/.env,自定义部署时应编辑该文件。可选的高级变量按主题组织在 docker/envs/ 下。

更改配置后,请在 docker 目录中再次运行以下命令:

docker compose up -d

请查阅环境变量文档,了解所有可用设置。

使用 Grafana 监控指标

社区创建的 Grafana 控制面板可以将 Dify 的 PostgreSQL 数据库用作数据源。它能够从应用、租户、消息及其他指标层面提供监控。

部署到 Kubernetes

对于高可用环境,README 列出了社区贡献的 Helm chart 和 Kubernetes YAML 文件。可用选项包括:

这些部署资源均由社区贡献,因此在生产环境中使用前,请检查其文档和兼容性。

使用云基础设施工具

项目 README 还列出了适用于主流云平台的社区部署方案:

  • Terraform:社区提供了适用于 Azure Global 和 Google Cloud 的项目。

  • AWS CDK:AWS 示例提供基于 EKS 和 ECS 的自行托管方案。

  • Alibaba Cloud:列出了计算巢和数据管理部署方案。

  • Azure Kubernetes Service:社区提供的 Azure DevOps Pipeline 和 Helm chart 可将 Dify 部署到 AKS。

私下处理安全报告

请勿将安全漏洞发布为 GitHub Issue。项目要求用户通过 security@dify.ai 私下报告漏洞。

获取帮助和参与贡献

如有问题或反馈,请使用 GitHub Discussions;如需报告错误或提出功能建议,请使用 GitHub Issues。你也可以加入 Discord 社区,分享应用并与其他用户交流。

如果你希望贡献代码,请阅读项目的贡献指南。翻译贡献者可以查阅国际化 README

总结

Dify 将工作流、提示词、RAG、智能体、模型管理、可观测性和 API 整合到统一的 LLM 应用平台中。你可以通过 Dify Cloud 立即体验,也可以使用 Docker Compose 自行托管社区版。先从默认配置开始,构建并测试一个目标明确的 AI 应用,再随着需求增长采用监控或云部署方案。