文章

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

Dify介绍

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

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

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

dify-support-models

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_architecture

功能比较

功能

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,数据并不会丢失。

注册管理员账号:

image-20240521195845860

登陆成功首页:

image-20240521200025124

通过模板快速构建应用

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

image-20240521201040387

完成模型添加后:

image-20240521201156488

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

image-20240521201749387

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

image-20240521202135582

添加知识库

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

image-20240522135758932

文档分段和清洗:

image-20240522135838422

存储到向量数据库:

image-20240522135957729

基于知识库新建应用:

image-20240522140426778

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

image-20240522140458298

写在最后

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

推荐阅读

打造高效MacOS系统环境

快速搭建本地大语言模型和知识库

AI Agent 实践

License:  CC BY 4.0