在Linux环境下搭建Dify

在Linux环境下搭建Dify

Dify的概述

Dify是一款开源的大语言模型(LLM)应用开发平台。它融合了后端即服务(Backend as Service)和LLMOps的理念,使开发者可以快速搭建生成级的生成式AI应用。即使你是非技术人员,也能参与到AI应用的定义和数据运营过程中。

由于Dify内置了构建LLM应用所需的关键技术栈,包括对数百个模型的支持、直观的Prompt编排界面、高质量的RAG引擎、稳健的Agent框架、灵活的流程编排,并同时提供了一套易用的界面和API。这为开发者节省了很多重复造轮子的时间,使其可以专注在创新和业务需求上。

为什么使用Dify?

你或许可以把LangChain这类的开发库(Library)想象为有着锤子、钉子的工具箱。与之相比,Dify提供了更接近生产需要的完整方案,Dify好比是一套脚手架,并且经过了精良的工程设计和软件测试。

重要的是,Dify是开源的,它由一个专业的全职团队和社区共同打造。你可以基于任何模型自部署类似Assistants API和GPTs的能力,在灵活和安全的基础上,同时保持对数据的完全控制。

Dify能做什么?

Dify一词源自Define+Modify,意指定义并且持续的改进你的AI应用,它是为你而做的(Do it for you)。

  • 创业
快速的将你的AI应用创意变成现实,无论成功和失败都需要加速。在真实世界,已经有几十个团队通过Dify构建MVP(最小可用产品)获得投资,或通过POC(概念验证)赢得客户的订单。
  • 将LLM集成至已有业务
通过引入LLM增强现有应用的能力,接入Dify的RESTful API从而实现Prompt与业务代码的解耦,在Dify的管理界面是跟踪数据、成本和用量,持续改进应用效果。
  • 作为企业级LLM基础设施
一些银行和大型互联网公司正在将Dify部署为企业内的LLM网关,加速GenAI技术在企业内的推广,并实现中心化的监管。
  • 探索LLM的能力边界
即使你是一个技术爱好者,通过Dify也可以轻松的实践Prompt工程和Agent技术,在GPTs推出以前就已经有超过60000开发者在Dify上创建了自己的第一个应用。

Dify的核心功能

1.工作流

在画布上构建和测试功能强大的AI工作流程。

2.全面的模型支持

与数百种专有/开源LLMs以及数十种推理提供商和自托管解决方案无缝集成,涵盖GPT、Mistral、LIama3以及任何与OpenAI API兼容的模型。

3.Prompt IDE

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

4.RAG Pipeline

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

5.Agent智能体

你可以基于LLM函数调用或ReAct定义Agent,并为Agent添加预构建或自定义工具。Dify为AI Agent提供了50多种内置工具,如谷歌搜索,DALL-E,Stable Diffusion和WolframAlpha等。

6.LLMOps

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

7.后端即服务

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

Dify社区版搭建(Docker Compose方式部署)

Dify社区版即开源版本,可以通过docker compose和本地源码两种方式部署,本次使用的docker compose方式部署。

在Linux环境上部署Docker服务

1.卸载旧版本

yum remove docker-ce \
                  docker-ce-cli \
                  docker-ce-rootless-extras \
                  docker-buildx-plugin \
                  containerd.io \
                  docker-compose-plugin

注: 当卸载docker时,存储在/var/lib/docker/中的映像、容器、卷和网络不会自动删除,存储/etc/docker中的镜像源配置(daemon.json)也不会删除,如果有需要则进行删除。

2.配置docker的镜像仓库

docker官网的依赖包网址:https://download.docker.com/linux/centos/

下载yum配置文件docker-ce.repo,将下载好的配置文件放到linux环境的/etc/yum.repos.d/路径下,这样使用yum命令下载docker依赖时会从docker-ce.repo配置文件中的下载网址中进行下载。

3.下载并安装指定版本的docker引擎

列出镜像仓库中可用版本
yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64            3:26.1.4-1.el7                      docker-ce-stable
docker-ce.x86_64            3:26.1.3-1.el7                      docker-ce-stable
docker-ce.x86_64            3:26.1.2-1.el7                      docker-ce-stable
<...>
注:返回的列表取决于启用了哪些镜像仓库,并且特定于你的centos版本

通过指定安装包名来安装特定的版本,由包名(docker-ce)加上版本字符串,用分隔字符(-)相连,例如:24.0.9-1.el7

例如:我这里安装的是24年stable版本的docker engine
yum install docker-ce-24.0.9-1.el7 docker-ce-cli-24.0.9-1.el7

如上图所示,执行yum install下载命令后,这里会显示下载docker引擎所需要下载依赖包。下载完毕后rpm包会存储在/var/cache/yum路径下。

在安装过程中有可能出现下图的问题

这个是GPG密钥的问题,在yum尝试安装docker-ce的rpm包时,发现没有相应的GPG公钥,因此无法验证该软件包的完整性和真实性。因此需要导入官方的GPG密钥,命令如下:
rpm --import https://download.docker.com/linux/centos/gpg

安装完成后如下图所示

4.启动docker服务

启动docker服务的命令:
systemctl start docker

启动之后检测一下docker的状态,如果状态正常,且输入docker命令能正常返回则安装成功。
检查docker服务的状态:
systemctl status docker
查看docker版本的命令:
docker -v

下载Dify源代码

由于docker compose配置文件与环境变量在源代码中的docker目录下,因此需要下载源代码。

Dify的github网址:https://github.com/langgenius/dify

选择你想要下载的Dify版本,我这里选择的是0.15.5,因为1.0.0之前插件是内置的,不需要再对某些需要的插件进行下载。

通过docker compose安装Dify

1.将下载到的源代码zip包放到Linux环境下解压

在/opt路径下新建一个dify目录用于存放dify源码
cd /opt
mkdir dify-0.15.5

进入创建的dify目录下,解压dify源码zip包
cd /opt/dify-0.15.5
unzip dify.zip

解压到当前目录后,进入docker目录,将样例环境配置文件拷贝到当前路径下
cd dify
cp .env.example .env

编辑.env文件,修改NGINX_PORT(dify页面的端口号,默认为80)为18190,修改EXPOSE_NGINX_PORT为18190(暴露到宿主机的端口号,默认为80)
vi .env
修改完毕后wq保存退出

2.配置docker拉取的镜像源

在执行docker compose命令拉取镜像时可能会出现如下图的异常

这个异常表明docker守护进程在尝试连接到Docker Hub(registry-1.docker.io)超时了。这是因为docker hub是国外的因为网络原因无法访问到,这种情况可以添加一些国内镜像加速地址。

进入/etc/docker目录修改daemon.json(如果没有就新建一个)
/etc/docker
vi daemon.json

修改为:
{
    "registry-mirrors": [
        "https://docker-0.unsee.tech",
        "https://docker.1ms.run",
        "https://docker.xuanyuan.me"
    ]
}
修改完后wq保存退出并重启docker服务
systemctl restart docker

3.使用docker compose拉取镜像启动容器

docker重启完毕后,在进入dify的docker路径下执行docker compose命令来拉取镜像
docker compose up -d

此时使用docker命令可以查看到拉取的镜像与启动的容器
查看当前运行的容器
docker ps
查看镜像
docker images

4.登陆Dify页面配置管理员账号

访问Dify的页面(ip为对应服务器的ip,默认使用的是宿主机的80端口号),由于我在之前修改了端口号为18190因此我访问Dify页面时需要输入对应的端口号18190
http://ip:端口号/install

配置完管理员账号后,使用管理员账号登陆后即可进入Dify的工作室。

离线搭建Dify社区版

在在线搭建的基础上就可以进行离线搭建了

离线部署Docker服务

之前有说过,使用yum安装后,对应的rpm依赖包会存在/var/cache/yum/路径下。将这些依赖包从服务器下到本地后,再放到内网服务器中,通过rpm命令即可进行安装。
rpm -ivh xx.rpm --force --nodeps

离线部署Dify

在部署完docker后,可以通过docker compose来部署Dify。但由于内网服务器无法从外网进行镜像的下载,因此需要把之前在外网服务器下载到的镜像导出并导入到内网服务器的docker中。

导出镜像命令
docker save -o [保存的文件路径] [镜像名:tag]
eg:
通过镜像名:tag方式将dify-api镜像导出为dify-api-0.15.5.tar包到/opt/dify/dify-0.15.5-image路径下
docker save -o /opt/dify/dify-0.15.5-image/dify-web-0.15.5.tar langgenius/dify-web:0.15.5

注:导出的tar包比镜像包略小一点

导入镜像命令
docker load -i [导入的文件路径]

eg:
导入之前导出的dify-web-0.15.5.tar镜像包
docker load -i dify-web-0.15.5.tar

参考资料

https://dify.ai/zh

https://docs.dify.ai/zh-hans

https://github.com/langgenius/dify

https://gitee.com/dify_ai/dify

posted @ 2025-03-31 15:50  柯南。道尔  阅读(3095)  评论(0)    收藏  举报