私有化部署 Dify 并快速搭建 AI 应用
Dify介绍
Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,让您可以快速从原型到生产。以下是其核心功能列表:
1. 工作流: 在画布上构建和测试功能强大的 AI 工作流程,利用以下所有功能以及更多功能。
2. 全面的模型支持: 与数百种专有/开源 LLMs 以及数十种推理提供商和自托管解决方案无缝集成,涵盖 GPT、Mistral、Llama3 以及任何与 OpenAI API 兼容的模型。完整的支持模型提供商列表可在此处找到。
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 架构图如下:
功能比较
系统要求
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:flyeric0212/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
部署验证
使用浏览器打开如下地址:
注意官方的是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 开箱即用,对于大部分人来说更加的友好,最重要的可以进行私有化部署。