私有化部署 Dify 并快速搭建 AI 应用

Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,让您可以快速从原型到生产。以下是其核心功能列表:

1. 工作流: 在画布上构建和测试功能强大的 AI 工作流程,利用以下所有功能以及更多功能。

2. 全面的模型支持: 与数百种专有/开源 LLMs 以及数十种推理提供商和自托管解决方案无缝集成,涵盖 GPT、Mistral、Llama3 以及任何与 OpenAI API 兼容的模型。完整的支持模型提供商列表可在此处[1]找到。

3. Prompt IDE: 用于制作提示、比较模型性能以及向基于聊天的应用程序添加其他功能(如文本转语音)的直观界面。

4. RAG Pipeline: 广泛的 RAG 功能,涵盖从文档摄入到检索的所有内容,支持从 PDF、PPT 和其他常见文档格式中提取文本的开箱即用的支持。

5. Agent 智能体: 您可以基于 LLM 函数调用或 ReAct 定义 Agent,并为 Agent 添加预构建或自定义工具。Dify 为 AI Agent 提供了50多种内置工具,如谷歌搜索、DELL·E、Stable Diffusion 和 WolframAlpha 等。

6. LLMOps: 随时间监视和分析应用程序日志和性能。您可以根据生产数据和标注持续改进提示、数据集和模型。

7. 后端即服务: 所有 Dify 的功能都带有相应的 API,因此您可以轻松地将 Dify 集成到自己的业务逻辑中。

Dify架构图如下:

功能比较

功能 Dify.AI LangChain Flowise OpenAI Assistant API
编程方法 API + 应用程序导向 Python 代码 应用程序导向 API 导向
支持的 LLMs 丰富多样 丰富多样 丰富多样 仅限 OpenAI
RAG引擎
Agent
工作流
可观测性
企业功能(SSO/访问控制)
本地部署

系统要求

CPU >= 2 Core
RAM >= 4GB

如果你是MacOS系统的话,可以参考之前的文章准备一下本地的云环境:打造高效MacOS系统环境

本地部署

为了方便本地快速验证,这里使用Docker Compose 运行。在企业或者生产环境建议采用 K8S环境部署,Dify 依赖较多的中间件,如:weaviate、redis、postgres 等,这些中间件可以采用外部已部署的应用或者容器部署,但是需要注意数据的存储。

Docker Compose 部署

克隆Dify项目并运行:

## 克隆dify项目
$ git clone git@github.com:langgenius/dify.git

## Docker Compose 运行
$ cd dify/docker/ 
$ docker-compose up -d
如果官方脚本运行不起来,可以参考我调整后的Github脚本:

$ git clone git@github.com:amuguelove/eric-dify-docker.git
$ cd eric-dify-docker
$ docker-compose up -d

K8S 部署

使用Helm Chart 部署,在K8S环境部署Dify:

## Helm Chart by @LeoQuote
https://github.com/douban/charts/tree/master/charts/dify

## Helm Chart by @BorisPolonsky
https://github.com/BorisPolonsky/dify-helm

部署验证

使用浏览器打开如下地址:

http://localhost:8090/install

注意官方的是80端口,因为80端口本地被占用,所以调整成8090端口。

查看本地存储:

[20:25:18] dify $ docker volume ls
DRIVER    VOLUME NAME
local     1b48b646f10961973a2abb9c885b965d7f54860dca7d7a4d42a531dc13d96b0d
local     446e6dfa7f4d14c2aed281af1b772495af71698bdae62fcc9140dbc57ac0bd5a
local     dify_app-data
local     dify_postgres-data
local     dify_redis-data
local     dify_weaviate-data

这样可以随时本地关闭和启动 Dify App,数据并不会丢失。

注册管理员账号:

登陆成功首页:

快速构建应用

先添加模型:chatgpt以及ollama模型

完成模型添加后:

使用模板快速使用创建一个 Code Interpreter ChatBot 应用,先使用gpt-3.5-turbo 模型进行提问:

再切换到本地模型 ollama3:8b 提问:

添加知识库

选择本地数据源,支持非常多的文件格式,如:TXT、Markdown、PDF等。

文档分段和清洗:

存储到向量数据库:

基于知识库新建应用:

这次使用共新建了两个应用:

写在最后

Dify 可以切换几乎所有主流的模型,通过模板可以快速创建应用,添加各种类型的文档作为知识库,添加后端API等,相较于 LangChain 需要通过 Python 代码进行开发,Dify 开箱即用,对于大部分人来说更加的友好,最重要的可以进行私有化部署。

作者:Jeebiz  创建时间:2024-06-19 09:51
最后编辑:Jeebiz  更新时间:2024-06-19 10:01