搭建QQ小猫机器人集成GPT与Stable Diffusion Webui
一:准备工作
1.简单的说下执行过程,方便你理解,还是画图比较容易说明和理解
go-cqhttp(此篇文章后续就缩写为CQ了)、MeowBot(简称机器人)、stable diffusion webui(简称SD)
看了上面的图你就知道要做那些准备工作了,
(1):如果部署在本地电脑上,那么需要使自己的网络可以ping通openai的地址。也就是可以访问gpt.
(2):如果部署在云服务器上,也是要准备可以访问openai的服务器。
2.先说我的解决方案吧:
(1):CQ+MeowBot在云服务器上(服务器可访问gpt)
(2):SD在自己台式机或者其他电脑上,然后经过frp内网穿透,供MeowBot可访问。
二:开始部署go-cqhttp
1.项目地址:Releases · Mrs4s/go-cqhttp (github.com)
选择你的系统合适的版本:推荐这两个,不要问为什么,因为我用的这两个
建议先在windows上下载一个,部署好,因为云服务上QQ验证不了,异地加上各种不安全。总之,验证不了。
需要到时候把Windows下面生从accesstoken文件拷贝到服务器上,才可以正常运行。
2.部署go-cqhttp
(1)下载好之后,放在一个合适的空文件夹,这个地址很重要,因为项目地址使写死的,去获取CQ的data/image下面的图片,不然绘图之后发不了
(2)按住Shift+右键,在此处打开power shell
(3) ./go 然后tab会自动帮你补全的,也可以自己手打,Windows下会自动变成.\,
(4)按下回车就会执行了,然后第一次会自动生成对应的配置文件,然后如图输入02即可,按下回车
(5)成功的生成了config文件
(6)关闭此窗口然后,按住Shift+右键,在此处打开power shell, ./go 然后tab会自动帮你补全的,再次启动CQ
(7)会再次生成对应的配置文件和对应的日志以及消息的文件夹和文件
(8)修改自己的QQ机器人和QQ协议
1.打开config.yml文件修改自己的QQ,只需要填数字就行,建议填写小号。
2.如图,提示也写了不支持二维码登陆,需要修改对应的协议。打开device.json,搜索protocol 这个协议默认6,改成2即可
(9)启动CQ,需要power shell启动,不要双击,如图扫码即可
到此为止,CQ已经部署完毕
需要注意的和下面用得到的东西就是
1.CQ存放图片的路径:G:\Go-Cqhttp\data\images
2.CQ的websocket端口: ws://localhost:8080
三:开始部署小猫机器人项目
机器人项目地址:https://github.com/CollapseNav/MeowBot
1.代码的简单说明:
(1)DrawAnimeCommand,找到这个类,如果使本地不能调用gpt或者不需要使用gpt的可以如图注释对应的代码即可,
(2)如果需要使用gpt,则需要把源代码的SD地址改为你自己SD地址
//这里的路径现在是本地的,后面需要改为内网穿透之后的ip+端口
string url = "http://127.0.0.1:7860/sdapi/v1/txt2img";
2.还是这个类,修改源代码的图片地址
改为上述的G:\Go-Cqhttp\data\images这个地址,不要把“/”换成了”\“
var filePath = $"G:/Go-Cqhttp/data/images/{guid}.png";
3.修改完之后重新编译即可,第一次执行会生成AppConfig.json
我已经帮你们修改了,直接修改即可,这种配置默认使CQ与机器人项目在同一个设备上(无论个人电脑还是云服务器),apiKey则是chatgpt的apikey
如果没有,可以在此地方购买首页 | TerraMours的小店,购买开发者key即可
这是查询key余额的地址:智能助手 (terramours.site)
{
"apiKey": "sk-xxx",
"botWebSocketUri": "ws://localhost:8080",
"chatCompletionApiUrl": null,
"textCompletionApiUrl": null,
"gptModel": "gpt-3.5-turbo",
"usageLimitTime": 300,
"usageLimitCount": 5,
"allowList": [],
"blockList": [],
"adminList": [],
"groupConfigs": []
}
然后再次启动即可
如果在服务器上启动,记得加上如下的nohup 以及& 这样即可关闭当前窗口,服务还是会在后台运行,如果是需要服务自动重启,需要自己用systemd
服务来自动重启和管理服务
nohup ./xxxx &
E:\go-cqhttp
-----------------------------------------------------非开发看这里
4.考虑到不一定所有的看官是开发,所以编译了一个windows的发布包,路径修改为默认D盘下的,想必一般的电脑都还是有D盘的
var filePath = $"D:/go-cqhttp/data/images/{guid}.png";
也就是你的CQ需要安装到D盘的go-cqhttp这个文件夹下即可
包地址:https://file.firstsaofan.top/blogfile/MeowBot-win-x64.zip
解压之后双击MeowBot.exe即可;然后修改AppConfig.json内容即可
------------------------------------------------------结束
四:开始部署SD绘图服务
(一):准备工作
1.SD的GitHub地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
2.或者整合包,B站秋葉aaaki的整合包,一键启动
官方安装教程:https://github.com/AUTOMATIC1111/stable-diffusion-webui#automatic-installation-on-windows
在视窗上自动安装(机翻)
- 安装 Python 3.10.6(较新版本的 Python 不支持 torch),选中“将 Python 添加到 PATH”。
- 安装 git。
- 下载稳定扩散 webui 存储库,例如通过运行 .
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
- 以正常、非管理员、用户身份从 Windows 资源管理器运行。
webui-user.bat
安装总结:
1.由于后续重构的系统会集成SD,是担心整合包被修改了或者不更新,所以我采取的官方的项目,我帮朋友部署过一个发现整合包并没有修改api相关的东西,所以单纯的使用这个机器人项目,整合包并没有任何问题,并且让你更简单。(推荐)
2.git 拉去官方项目的问题,主要是访问GitHub的原因,加上模型默认有好几个G,以及它的第一次运行会下载各种依赖包,没有网络条件的会有问题。也可以下载fast GitHub这个项目来解决,但是貌似速度也不是特别快,但是能解决你的访问GitHub的问题。
官方地址:Releases · dotnetcore/FastGithub
访问不了GitHub的可以用我下载好的:https://file.firstsaofan.top/blogfile/fastgithub_win-x64.zip
https://file.firstsaofan.top/blogfile/fastgithub_win-x64.zip //因为md格式url自带下划线,我怕有的人没看到fastgithub_win-x64.zip的下划线
3.官方的项目启动默认是不启动api,需要修改webui-user.bat文件,把参数带上–api
set COMMANDLINE_ARGS=--api
然后正常双击webui-user.bat即可。
五:如何使用机器人与测试
1.常用的就是gpt与绘图
gpt指令为直接@你的群机器人,也就是CQ配置的那个QQ。
绘图需要@机器人之后带上#drawanime即可
下面演示测试图(我把机器人的名片设置带上了绘图的口令免得使用的人忘记了)
GPT
绘图(出图取决于你的模型)SD的模型以及基本的使用我就不写了
详细指令#help即可
六:代理openai的,可以用社区的不过需要自己寻找,也可以用TerraMours的开源项目自己部署
yarp代理openai项目地址:
raokun/YarpProject: 基于Yarp.ReverseProxy的反向代理项目,实现ChatGPT代理 (github.com)
然后把机器人项目里面的AppConfig.cs的写死的DefaultChatCompletionApiUrl改成你对应的就好
https://api.openai.com改成你代理的地址即可
public static string DefaultChatCompletionApiUrl { get; } = "https://api.openai.com/v1/chat/completions";
如果用了别人的代理,那么意味数据会走别人的服务器一遍,自己需要在知道风险的情况自己选择。
最后说明
以上就全部结束了,出图取决你的模型,速度的快慢取决你的机器配置,我是1060 6G显存的卡,配置比较低,我用朋友的4070TI测试大概3-5秒
如果需要frp内网穿透SD的,可以在博客搜索frp,有对应的教程。
如果需要了解所有的命令与信息,可看起源机器人项目:
https://github.com/SlimeNull/MeowBot#介绍
最后感谢以下项目
此机器人项目:https://github.com/CollapseNav/MeowBot
此项目的起源:https://github.com/SlimeNull/MeowBot
SD:AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI (github.com)
自己的连接
QQ群号码可体验机器人:814880639
GPT体验站:https://ai.terramours.site/
Net7通用开源框架:firstsaofan/TerraMours (github.com)