一、Dify 介绍
Dify 是一个开源的大语言模型 (LLM) 应用开发平台。它结合了后端即服务 (Backend-as-a-Service) 和 LLMOps (LLMOps) 的概念,使开发人员能够快速构建生产级生成式 AI (Generative AI) 应用。即使是非技术人员也可以参与 AI 应用的定义和数据操作。
通过集成构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的提示词编排界面、高质量的检索增强生成 (RAG) 引擎以及灵活的 Agent (Agent) 框架,同时提供了一组易于使用的界面和 API,Dify 为开发人员节省了大量时间避免重复造轮子,让他们可以专注于创新和业务需求。
Dify 由 Define 和 Modify 两个词组合而成,寓意着用户可以定义并不断改进自己的 AI 应用。
1.1、为什么使用 Dify?
你可以将 LangChain (LangChain) 之类的库想象成带有锤子、钉子等的工具库。相比之下,Dify 提供了一个更加接近生产环境、开箱即用的完整解决方案 —— 例如,可以将 Dify 想象成一个经过精心工程设计和软件测试的脚手架系统,可以帮助开发者快速搭建 AI 应用。
重要的是,Dify 是开源的,由专业的全职团队和社区共同创建。您可以基于任何模型自主部署类似于 Assistants API 和 GPT 的功能,通过灵活的安全措施保持对数据的完全控制,所有这些都在一个易于使用的界面上完成。
1.2、Dify 能做什么?
- 工作流:Dify 提供了一个可视化的画布来构建和测试强大的 AI 工作流。此功能使用户能够利用 Dify 的全部功能,包括模型集成和提示词设计。
- 全面的模型支持:该平台支持与数百个专有和开源 LLM 无缝集成,包括 GPT、Mistral、Llama3 以及任何与 OpenAI API 兼容的模型等热门选项。这种广泛支持的模型确保了开发人员的灵活性和选择性。
- 提示词 IDE:Dify 包括一个直观的提示词 IDE,允许用户制作提示词、比较模型性能,并使用文本转语音等附加功能增强应用。
- RAG 管道:Dify 的检索增强生成 (RAG) 功能涵盖了从文档提取到检索的所有内容。它包括对从各种文档格式(如 PDF 和 PPT)中提取文本的开箱即用支持。
- AI 智能体功能:用户可以使用 LLM 函数调用或 ReAct (ReAct) 定义 AI 智能体,并集成预构建或自定义工具。Dify 为 AI 智能体提供了 50 多种内置工具,包括 Google 搜索、DALL·E (DALL·E)、Stable Diffusion (Stable Diffusion) 和 WolframAlpha (WolframAlpha)。
- LLMOps:该平台包括可观察性功能,用于监控和分析应用程序日志和性能随时间的变化。这允许根据真实数据和注释不断改进提示词、数据集和模型。
- 后端即服务:Dify 为其所有功能提供相应的 API,可轻松集成到现有业务逻辑中。
- 云服务:Dify 提供零设置的云服务,包括自托管版本的所有功能。沙盒计划提供 200 次免费的 GPT-4 调用以供试验。
- 自托管:Dify 的社区版本可以在任何环境中快速设置,并提供详细的文档以进行更深入的定制。
- 企业解决方案:Dify 提供以企业为中心的功能,例如单点登录 (SSO) 和访问控制。它还在 AWS Marketplace (AWS 市场) 上提供 Dify Premium 选项,其中包括应用程序的自定义品牌和徽标。
二、Dify 使用方式
2.1、云服务:在线体验
Dify 为每个人提供云服务,因此您无需自行部署即可使用 Dify 的全部功能。
从免费计划开始,其中包括 200 次 OpenAI 调用的免费试用。要使用云版本的免费计划,您需要一个 GitHub 或 Google 帐户和一个 OpenAI API 密钥。以下是开始使用的方法:
- 注册 Dify Cloud 并创建一个新的 Workspace 或加入现有的 Workspace。
- 配置您的模型提供者或使用托管模型提供者。
- 您现在就可以创建一个应用程序了!
只有两种登录选项:GitHub 和 Google。您可以选择任意一种登录。
登录后,您将看到 Studio 界面。您可以跳过下一部分,直接进入“模型 (Models)” 章节。
2.2、部署社区版本:本地运行
如果想在本地运行 Dify,您可以选择部署 Dify 社区版本,它是开源版本。您可以通过 Docker Compose (Docker Compose) 或本地源代码进行部署。本文将演示使用 Docker Compose 在 Windows 上本地部署 Dify 的更便捷方法。
首先,安装并运行 Docker Desktop 并启用 WSL 2 (Windows Subsystem for Linux 2)。您可以从以下链接下载它;详细的安装过程不在本文中介绍:
https://www.docker.com/products/docker-desktop/
在要存储 Dify 的目录中打开命令提示符,然后输入:
git clone https://github.com/langgenius/dify.git
您将看到以下输出:
D:\Workspace\Dify>git clone https://github.com/langgenius/dify.git
Cloning into 'dify'...
remote: Enumerating objects: 66122, done.
remote: Counting objects: 100% (10553/10553), done.
remote: Compressing objects: 100% (1540/1540), done.
remote: Total 66122 (delta 9611), reused 9196 (delta 9008), pack-reused 55569
Receiving objects: 100% (66122/66122), 38.65 MiB | 11.63 MiB/s, done.
Resolving deltas: 100% (47189/47189), done.
Updating files: 100% (5109/5109), done.
如果尚未安装 Git,则可以从 Dify 的 GitHub 仓库下载整个项目并将其解压缩,然后再继续执行以下步骤。但是,此方法对于以后的更新不太方便。
导航到 Dify 源代码的 docker 目录并执行一键启动的命令:
# 导航到 docker 目录
cd dify/docker
# 复制并重命名配置文件
cp .env.example .env
# 如果您使用的是 Windows cmd,请使用 copy 命令而不是 cp
copy .env.example .env
# 启动 docker compose
docker compose up -d
部署输出:
D:\Workspace\Dify\dify\docker>docker compose up -d
[+] Running 75/9
✔ weaviate Pulled 27.0s
✔ web Pulled 61.1s
✔ ssrf_proxy Pulled 26.9s
✔ api Pulled 51.3s
✔ redis Pulled 27.3s
✔ sandbox Pulled 40.4s
✔ db Pulled 30.1s
✔ nginx Pulled 27.1s
✔ worker Pulled 51.3s
[+] Running 11/11
✔ Network docker_default Created 0.0s
✔ Network docker_ssrf_proxy_network Created 0.1s
✔ Container docker-sandbox-1 Started 2.1s
✔ Container docker-weaviate-1 Started 2.7s
✔ Container docker-db-1 Started 2.7s
✔ Container docker-ssrf_proxy-1 Started 2.7s
✔ Container docker-redis-1