在群晖上通过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 (智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单,更方便。

DB-GPT 整体架构设计图

DB-GPT 支持原生对话

也支持与数据对话

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

前言

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

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

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

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

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

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

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

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

6.2 以上应该是没问题的

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

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

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

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

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

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

老苏的磁盘一下就吃紧了

  • 第四个问题: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('https://p1api.xjai.pro/freeapi/chat-process') Feedough: ClientResponseError: 403, message='Forbidden', url=URL('https://www.feedough.com/wp-admin/admin-ajax.php') OpenaiChat: CloudflareError: Response 403: Cloudflare detected ChatgptNext: ClientResponseError: 429, message='Too Many Requests', url=URL('https://chat.fstha.com/api/openai/v1/chat/completions') (error_code: 1)

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

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

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

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

准备工作

在开始安装之前,我们需要做一些准备工作,比如先下载好镜像,毕竟这是一个 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 https://huggingface.co/GanymedeNil/text2vec-large-chinese# 下载镜像
docker pull eosphorosai/dbgpt:latest

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

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

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

安装

在群晖上以 Docker 方式安装。

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

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=<你的key>如果是 GPT4Freekey 应该是随便填的,但还是建议用 sk- 这种格式。如果是 One API,直接用访问令牌
-e PROXY_SERVER_URL=<API 服务地址>第三方模型服务 APIOne API 端口是 3033GPT4Free 端口是 1337
-e EMBEDDING_MODEL=text2vec设置 embedding 模型为 text2vec
-e LANGUAGE=zh设置语言为 zh

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

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

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

从上图我们可以看出来,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:latestcontainer_name: dbgptrestart: unless-stoppedports:- 5670:5670volumes:- ./data/models/text2vec-large-chinese:/app/models/text2vec-large-chineseenvironment:- 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 就能看到主界面

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

随便聊一下

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

现在只有一个模型

数据库

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

MySQL 创建一个数据库

选了 nextcloud 做测试

保存成功后

回到聊天界面

选择 Chat DB

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

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

选择 Chat Data,还是不会用

知识库

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

选择 Document 类型

拖拽知识库文档

选择 自动

会在后台自动处理

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

提个老问题

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

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

参考文档

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

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

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

docker ValueError: Path /app/models/text2vec-large-chinese not found · Issue #981 · eosphoros-ai/DB-GPT
地址:https://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
地址:https://github.com/eosphoros-ai/DB-GPT/issues/932

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/24665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux lvm卷扩容之SSM

介绍 SSM&#xff08;System Storage Manager&#xff09;是系统存储管理器&#xff0c;它是一种统一的命令行界面&#xff0c;用于管理各种存储设备。通过SSM&#xff0c;用户可以方便地管理、配置和监控存储系统。检查关于可用硬驱和LVM卷的信息。显示关于现有磁盘存储设备、…

O2OA(翱途)开发应用平台(v9)开发实战(3)-如何做信息发布

内容管理就是用来发布信息的&#xff0c;比如说发布单位的内部信息&#xff1a;像公司新闻、通知公告、规章制度等等。 接下来我们来介绍一下如何创建&#xff0c;比如我要创建一个栏目&#xff0c;专门用来发布公司的规章制度 需求 规章制度 首先从菜单打开“内容管理设置…

平衡二叉树AVL

平衡二叉树是一种特殊的二叉查找树&#xff0c;其中每个节点的左右子树的高度差不超过1。这种树的平衡性质使其在多种操作下保持较高的效率。 平衡二叉树的定义与性质 严格定义&#xff1a;在平衡二叉树中&#xff0c;任一节点的两个子树的高度最大差别为一&#xff0c;这使得…

Linux卸载RocketMQ教程【带图文命令巨详细】

巨详细Linux卸载RocketMQ教程 #查询rocketmq进程 ps -ef | grep rocketmq #杀掉相关进程 kill -9 进程id #查找安装目录 find / -name runbroker.sh #删除rocketMQ目录 rm -rf 安装目录框起来的就是进程id&#xff0c;全部杀掉 这里就是我的安装目录&#xff0c;我的删除命令…

SwiftUI五视图动画和转场

代码下载 使用SwiftUI可以把视图状态的改变转成动画过程&#xff0c;SwiftUI会处理所有复杂的动画细节。在这篇中&#xff0c;会给跟踪用户徒步的图表视图添加动画&#xff0c;使用animation(_:)修改器给一个视图添加动画效果非常容易。 下载起步项目并跟着本篇教程一步步实践…

AI 写高考作文丨10 款大模型 “交卷”,实力水平如何?

前言 在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;已不再是遥不可及的未来科技&#xff0c;而是逐渐融入我们日常生活的实用工具。从智能语音助手到自动驾驶汽车&#xff0c;从智能家居系统到精准医疗诊断&#xff0c;AI技术正以其强大的计算能力和数…

Rust基础学习-Rust宏

Rust中的宏是生成另一段代码的一段代码。可以根据输入生成代码&#xff0c;简化重复模式&#xff0c;使得代码更加简洁。比如我们一直在用的println!,vec!,panic!都是宏。 创建宏 可以使用macro_rules!创建一个宏&#xff1a; macro_rules! macro_name {(...) > {...} }这…

c#与汇川plc通信 使用官网API库

前言 上位机开发中有时会要求与PLC进行通信&#xff0c;汇川官网也有好用的API库方便大家使用。记录一下开发过程。 1.下载资料 汇川官网地址&#xff1a;汇川技术 - 推进工业文明 共创美好生活 打开后选择&#xff1a;服务与支持-》资料下载-》 资料下载 这里可以直接搜索&am…

C++学习插曲:“name“的初始化操作由“case“标签跳过

问题 "name"的初始化操作由"case"标签跳过 问题代码 case 3: // 3、删除联系人string name;cout << "请输入删除联系人姓名&#xff1a;" << endl;cin >> name;if (isExistPerson(&abs, name) -1){cout << "…

【刷题篇】分治-归并排序

文章目录 1、排序数组2、交易逆序对的总数3、计算右侧小于当前元素的个数4、翻转对 1、排序数组 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 class Solution { public:vector<int> tmp;void mergeSort(vector<int>& nums,int left,int right){…

cocos creator3.7版本拖拽事件处理

前言&#xff1a;网上能找到的资料都太落后了&#xff0c;导致哥们用AI去写&#xff0c;全是瞎B写&#xff0c;版本都不对。贴点实际有用的。别老捣鼓你那破convertToNodeSpaceAR或者convertToNodeSpace了。 核心代码 touch.getDeltaX() touch.getDeltaY() 在cocoscreator3…

python-自幂数判断

[题目描述]&#xff1a; 自幂数是指&#xff0c;一个N 位数&#xff0c;满足各位数字N 次方之和是本身。例如&#xff0c;153153 是 33 位数&#xff0c;其每位数的 33 次方之和&#xff0c;135333153135333153&#xff0c;因此 153153 是自幂数&#xff1b;16341634 是 44 位数…

简单快速设置Windows和Ubuntu双系统双引导

一、参考资料 Windows和Ubuntu双系统安装教程 二、设置引导 1. 安装EasyBCD 下载并安装 EasyBCD 2. 设置Windows引导 3. 设置Ubuntu引导 4. 启动系统 遇到这种情况&#xff0c;直接Enter回车。 三、修复引导 如果引导区损坏&#xff0c;导致无法进入系统&#xff0c;可以…

FuTalk设计周刊-Vol.041

&#x1f525;AI漫谈 热点捕手 1、国产GPTs来了&#xff0c;基于智谱第4代大模型 全自研第四代基座大模型GLM-4&#xff0c;且所有更新迭代的能力全量上线。GLM-4性能相比GLM-3提升60%&#xff0c;逼近GPT-4&#xff08;11月6日最新版本效果&#xff09;。而同时推出的GLM-4-…

【漏洞复现】多客圈子论坛系统 httpGet 任意文件读取漏洞

0x01 产品简介 多客圈子论坛系统是一种面向特定人群或特定话题的社交网络&#xff0c;它提供了用户之间交流、分享、讨论的平台。在这个系统中&#xff0c;用户可以创建、加入不同的圈子&#xff0c;圈子可以是基于兴趣、地域、职业等不同主题的。用户可以在圈子中发帖、评论、…

算法分析与设计期末考试复习(更新ing)

重点内容&#xff1a; 绪论&#xff1a; 简单的递推方程求解 1.19(1)(2) 、 教材例题 多个函数按照阶的大小排序 1.18 分治法&#xff1a; 分治法解决芯片测试问题 计算a^n的复杂度为logn的算法&#xff08;快速幂&#xff09; 分治法解决平面最近点对问…

让 AI 写高考作文丨10 款大模型 “交卷”,实力水平如何?

文章部分素材来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 前言 在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;已不再是遥不可及的未来科技&#xff0c;而是逐渐融入我们日常生活的实用工具。从智能语音助手到自动驾驶汽车&#xff0c…

炫技来了!使用SDR设备成功抓到蓝牙air packet, 并且wireshark实时解析, 没错就是蓝牙空口抓包器

本文章主要介绍是用ZYNQ7020AD9361Gnu radio是搭建一个蓝牙抓包器的文章。 由于之前一直做蓝牙Host&#xff0c;对controller觉得是一个比较虚无缥缈的东西&#xff0c;得不到的总是在骚动&#xff0c;所以最近用我用吃灰了2年的SDR(Software Defined Radio&#xff09;设备研…

C语言scanf( ) 函数、fprintf( ) 函数与 scanf( ) 函数和printf( ) 函数有什么不同?

一、问题 fscanf( ) 函数、fprintf( ) 函数与 printf( ) 函数、scanf( ) 函数的作⽤相似&#xff0c;都是格式化读写函 数&#xff0c;那么这两个读写函数有什么不同呢&#xff1f; 二、解答 两者的区别就在于前⾯的字符“f”&#xff0c;即 fscanfQ函数和 fprintfD函数的读写…

【Java基础】OkHttp 超时设置详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…