在群晖上通过Docker部署DB-GPT

作者 : admin 本文共6536个字,预计阅读时间需要17分钟 发布时间: 2024-06-10 共4人阅读

在群晖上通过Docker部署DB-GPT插图

最近一直有网友在后台私信,发的内容高度统一,只有后面 8 位数字不一样,都是 #22232 xxxxxxxx,有谁知道是什么意思吗?在我印象中,这是第二次这么大规模的发类似的字符串了


什么是 DB-GPT ?

DB-GPT是一个开源的 AI 原生数据应用开发框架( AI Native Data App Development framework with AWEL(Agentic Workflow Expression Language) and Agents)。目的是构建大模型领域的基础设施,通过开发多模型管理( SMMF)、Text2SQL 效果优化、RAG 框架以及优化、Multi-Agents 框架协作、AWEL (智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单,更方便。

在群晖上通过Docker部署DB-GPT插图(1)

DB-GPT 支持原生对话

在群晖上通过Docker部署DB-GPT插图(2)

也支持与数据对话

在群晖上通过Docker部署DB-GPT插图(3)

还能与数据库、Excel 等对话,做数据分析,实现智能体、工作流等等

在群晖上通过Docker部署DB-GPT插图(4)

前言

在开始之前,老苏觉得应该先讲讲可能会遇到的问题。如果你觉得这些问题中存在你无法解决的,建议你看看就行了。如果对你来说这都不算事,那就开始我们今天的折腾之旅吧

  • 第一个问题:是网络问题。

如果你没有一个稳定的,科学的上网环境,不建议你继续折腾,因为镜像下载之后有 13G,老苏差不多下载了一整天。有一次都快下载完成了,突然又显示 EOF 错误

在群晖上通过Docker部署DB-GPT插图(5)

如果你平时下载个几百兆的镜像都不顺畅的情况下,就不要浪费时间去尝试了,这种感觉真的很让人抓狂

  • 第二个问题:git-lfs 的支持问题。

首先要了解下,什么是 git-lfs

Git LFS (Large File Storage)Git 的扩展,是一个开源的 Git 大文件版本控制的解决方案和工具集。用于管理大文件和二进制文件,将它们存储在单独的 LFS 存储库中, 从而让 Git 存储库保持在一个可管理的规模。

现在很多包含大模型的仓库都必须使用 git-lfs 才能把整个 git 仓库拉下来,老苏的机器是 DSM6.17 的,现在想安装 Git 套件都找不到了,之前下载的版本比较老了,肯定是不支持 git-lfs

在群晖上通过Docker部署DB-GPT插图(6)

6.2 以上应该是没问题的

在群晖上通过Docker部署DB-GPT插图(7)

在不支持 git-lfs 的情况下,下载的大文件只有很小的尺寸,打开文件内容是下面这样的

version http://git-lfs.github.com/spec/v1
oid sha256:eaf5cb71c0eeab7db3c5171da504e5867b3f67a78e07bdba9b52d334ae35adb3
size 1302138752

关于 Git 套件的安装,可以参考老苏之前写的文章

文章传送门:MediaCMS在群晖中的安装

  • 第三个问题:磁盘空间问题。

前面讲了 Docker 镜像就 13G,加上 Embedding 模型差不多 3G,这还是因为老苏的群晖上没有 GPU 资源,使用了代理模型的情况下

在群晖上通过Docker部署DB-GPT插图(8)

老苏的磁盘一下就吃紧了

在群晖上通过Docker部署DB-GPT插图(9)

  • 第四个问题:API 服务问题。

因为机器没有 GPU,所以不能在本机上跑满足要求的大模型,最终用的是线上的模型,理论上 proxyllm 除了 openai 外,还支持 Moonshot,但不知道是老苏设置不正确还是 bug ,反正就是不行,所以最终聚焦在了几个常用的 API 服务上

FreeGPT35 一直报错

{
  "status": false,
  "error": {
    "message": "Error getting a new session, please try again later, if the issue persists, please open an issue on the GitHub repository.",
    "type": "invalid_request_error"
  }
}

FreeDuckDuckGo 也一样

{
  "error": true,
  "message": "empty response from server"
}

aurora 也不行

{
  "code": 403,
  "message": "failed to get chat requirements",
  "param": {},
  "type": "InitTurnStile_request_error"
}

后来发现只有 GPT4Freeok 的,当然也不完美,每次回答完成后,会用下面的输出,将之前的回答覆盖掉

LLMServer Generate Error, Please CheckErrorInfo.: RetryProviderError: RetryProvider failed: Cnote: ClientResponseError: 404, message='Not Found', url=URL('http://p1api.xjai.pro/freeapi/chat-process') Feedough: ClientResponseError: 403, message='Forbidden', url=URL('http://www.feedough.com/wp-admin/admin-ajax.php') OpenaiChat: CloudflareError: Response 403: Cloudflare detected ChatgptNext: ClientResponseError: 429, message='Too Many Requests', url=URL('http://chat.fstha.com/api/openai/v1/chat/completions') (error_code: 1)

文章传送门:在群晖上安装GPT4Free

最终测试发现,还是基于 One API + kimi-free-api 最理想,但需要在原来的渠道中,增加模型的名称为 gpt-3.5-turbo,原因后面再说

在群晖上通过Docker部署DB-GPT插图(10)

文章传送门:大模型接口管理和分发系统One API

聊天内容不会再出被错误覆盖了

在群晖上通过Docker部署DB-GPT插图(11)

准备工作

在开始安装之前,我们需要做一些准备工作,比如先下载好镜像,毕竟这是一个 13G 的大家伙,另外 Embedding 模型也需要提前下载

以下全部采用命令行方式,需要用 SSH 客户端登录到群晖后执行

# 新建文件夹 dbgpt 和 子目录
mkdir -p /volume1/docker/dbgpt/data/models

# 进入 dbgpt 目录
cd /volume1/docker/dbgpt

# 进入 models 目录
cd data/models/

# 下载 Embedding 模型 (需要git lfs)
git clone http://huggingface.co/GanymedeNil/text2vec-large-chinese

# 下载镜像
docker pull eosphorosai/dbgpt:latest

在群晖上通过Docker部署DB-GPT插图(12)

如果不支持 git-lfs 的情况下,大文件只有 135 bytes

在群晖上通过Docker部署DB-GPT插图(13)

实在没招的情况下,一个文件一个文件下载也不是不行 😂

在群晖上通过Docker部署DB-GPT插图(14)

当然手动下载的话,记得要在 models 目录下,再建一个 text2vec-large-chinese 目录,用于上传我们下载的模型文件

安装

在群晖上以 Docker 方式安装。

本文写作时, latest 版本对应为 v0.5.7

在群晖上通过Docker部署DB-GPT插图(15)

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 进入 dbgpt 目录
cd /volume1/docker/dbgpt

# 运行容器(采用 One API + kimi-free-api 方案)
docker run -d \
   --restart unless-stopped \
   --name dbgpt \
   -p 5670:5670 \
   -v $(pwd)/data/models/text2vec-large-chinese:/app/models/text2vec-large-chinese \
   -e LOCAL_DB_TYPE=sqlite \
   -e LOCAL_DB_PATH=data/default_sqlite.db \
   -e LLM_MODEL=proxyllm \
   -e PROXY_API_KEY=sk-bn6M52bOfdxYB3n2Ee717eA2C66b45318f1c95E4D9553d94 \
   -e PROXY_SERVER_URL=http://192.168.0.197:3033/v1/chat/completions  \
   -e EMBEDDING_MODEL=text2vec \
   -e LANGUAGE=zh \
   eosphorosai/dbgpt:latest

# 运行容器(采用 GPT4Free 方案)
docker run -d \
   --restart unless-stopped \
   --name dbgpt \
   -p 5670:5670 \
   -v $(pwd)/data/models/text2vec-large-chinese:/app/models/text2vec-large-chinese \
   -e LOCAL_DB_TYPE=sqlite \
   -e LOCAL_DB_PATH=data/default_sqlite.db \
   -e LLM_MODEL=proxyllm \
   -e PROXY_API_KEY=sk-bn6M52bOfdxYB3n2Ee717eA2C66b45318f1c95E4D9553d94 \
   -e PROXY_SERVER_URL=http://192.168.0.197:1337/v1/chat/completions  \
   -e EMBEDDING_MODEL=text2vec \
   -e LANGUAGE=zh \
   eosphorosai/dbgpt:latest

下面是一个简单的参数说明

参数说明
-p 5670:5670端口映射
-v /data/models/text2vec-large-chinese:/app/models/text2vec-large-chinese挂载 embedding 模型为 text2vec
-e LOCAL_DB_TYPE=sqlite设置数据库类型为 sqlite,另外还支持 mysql
-e LOCAL_DB_PATH=data/default_sqlite.db 设置 sqlite 数据库路径
-e LLM_MODEL=proxyllm通过设置模型为第三方模型服务 API, 可以是 openai, 也可以是 fastchat interface
-e PROXY_API_KEY=如果是 GPT4Freekey 应该是随便填的,但还是建议用 sk- 这种格式。如果是 One API,直接用访问令牌
-e PROXY_SERVER_URL=第三方模型服务 APIOne API 端口是 3033GPT4Free 端口是 1337
-e EMBEDDING_MODEL=text2vec设置 embedding 模型为 text2vec
-e LANGUAGE=zh设置语言为 zh

如果你的网络 OK 的话,可以直接用 openai 的地址和 key

更多的环境变量参数,请参考官方的 .env.template 文件:http://github.com/eosphoros-ai/DB-GPT/blob/main/.env.template

LLM_MODEL 模型名称请参考:http://github.com/eosphoros-ai/DB-GPT/blob/main/dbgpt/configs/model_config.py

在群晖上通过Docker部署DB-GPT插图(16)

从上图我们可以看出来,proxyllm 等同于 chatgpt_proxyllm,所以是按 gpt-3.5-turbo 来请求的。这就是为什么前面要求给 kimi-free-api 增加模型名称的原因

顺便说一下,老苏尝试过 moonshot_proxyllm,但设置后总报 LLM_MODEL_PATH 错误,没有继续尝试。理论上,线上模型 LLM_MODEL_PATH 应该是和 MOONSHOT_MODEL_VERSION一样的

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'

services:
  dbgpt:
    image: eosphorosai/dbgpt:latest
    container_name: dbgpt
    restart: unless-stopped
    ports:
      - 5670:5670
    volumes:
      - ./data/models/text2vec-large-chinese:/app/models/text2vec-large-chinese
    environment:
      - LOCAL_DB_TYPE=sqlite
      - LOCAL_DB_PATH=data/default_sqlite.db
      - LLM_MODEL=proxyllm
      - PROXY_API_KEY=sk-bn6M52bOfdxYB3n2Ee717eA2C66b45318f1c95E4D9553d94
      #- PROXY_SERVER_URL=http://192.168.0.197:1337/v1/chat/completions
      - PROXY_SERVER_URL=http://192.168.0.197:3033/v1/chat/completions
      - EMBEDDING_MODEL=text2vec
      - LANGUAGE=zh

然后执行下面的命令

# 进入 dbgpt 目录
cd /volume1/docker/dbgpt

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:5670 就能看到主界面

在群晖上通过Docker部署DB-GPT插图(17)

如果界面是英文的,可以点左下角的地球图标进行切换

在群晖上通过Docker部署DB-GPT插图(18)

随便聊一下

在群晖上通过Docker部署DB-GPT插图(19)

如果有返回,说明 proxyllm 设置是正确的

在群晖上通过Docker部署DB-GPT插图(20)

现在只有一个模型

在群晖上通过Docker部署DB-GPT插图(21)

数据库

进入数据库( Database),显示了支持的类型

在群晖上通过Docker部署DB-GPT插图(22)

MySQL 创建一个数据库

在群晖上通过Docker部署DB-GPT插图(23)

选了 nextcloud 做测试

在群晖上通过Docker部署DB-GPT插图(24)

保存成功后

在群晖上通过Docker部署DB-GPT插图(25)

回到聊天界面

在群晖上通过Docker部署DB-GPT插图(26)

选择 Chat DB

在群晖上通过Docker部署DB-GPT插图(27)

不太会用,随便问了个问题: oc_accounts 表中有几个用户?

在群晖上通过Docker部署DB-GPT插图(28)

继续,对不对反正我是不懂的

在群晖上通过Docker部署DB-GPT插图(29)

选择 Chat Data,还是不会用

在群晖上通过Docker部署DB-GPT插图(30)

知识库

进入知识库( Knowledge),点 Create 创建

在群晖上通过Docker部署DB-GPT插图(31)

选择 Document 类型

在群晖上通过Docker部署DB-GPT插图(32)

拖拽知识库文档

在群晖上通过Docker部署DB-GPT插图(33)

选择 自动

在群晖上通过Docker部署DB-GPT插图(34)

会在后台自动处理

在群晖上通过Docker部署DB-GPT插图(35)

处理完成后,状态会从 Running 变成 Finished

在群晖上通过Docker部署DB-GPT插图(36)

提个老问题

在群晖上通过Docker部署DB-GPT插图(37)

如果是 GPT4Free,正确答案会被 'Too Many Requests' 的日志覆盖。而用 One API + kimi-free-api 可以规避这个问题

在群晖上通过Docker部署DB-GPT插图(38)

像智能体、工作流,之前其他应用中介绍过,基本上是大同小异的,可以去看看官方的中文文档:http://www.yuque.com/eosphoros

参考文档

GitHub – eosphoros-ai/DB-GPT: AI Native Data App Development framework with AWEL(Agentic Workflow Expression Language) and Agents
地址:http://github.com/eosphoros-ai/DB-GPT

概览
地址:http://www.yuque.com/eosphoros/dbgpt-docs/bex30nsv60ru0fmx

shibing624/text2vec: text2vec, text to vector. 文本向量表征工具,把文本转化为向量矩阵,实现了Word2Vec、RankBM25、Sentence-BERT、CoSENT等文本表征、文本相似度计算模型,开箱即用。
地址:http://github.com/shibing624/text2vec

docker ValueError: Path /app/models/text2vec-large-chinese not found · Issue #981 · eosphoros-ai/DB-GPT
地址:http://github.com/eosphoros-ai/DB-GPT/issues/981

[Bug] [text2vec-large-chinese LLM启动报错] safetensors_rust.SafetensorError: Error while deserializing header: HeaderTooLarge · Issue #932 · eosphoros-ai/DB-GPT
地址:http://github.com/eosphoros-ai/DB-GPT/issues/932

本站无任何商业行为
个人在线分享 » 在群晖上通过Docker部署DB-GPT
E-->