chatgpt-mirai-qq-bot -支持主流语言模型的聊天机器人


一、关于 chatgpt-mirai-qq-bot

ChatGPT for Bot

一款支持各种主流语言模型的聊天的机器人!


猫娘问答生活助手文字 RPG
imageimageimage

⚡ 支持

  • 图片发送
  • 关键词触发回复
  • 多账号支持
  • 百度云内容审核
  • 额度限制
  • 人格设定
  • 支持 Mirai、 go-cqhttp、 Telegram、Discord、微信
  • 可作为 HTTP 服务端提供 Web API
  • 支持 ChatGPT 网页版
  • 支持 ChatGPT Plus
  • 支持 ChatGPT API
  • 支持 Bing 聊天
  • 支持 Google bard
  • 支持 poe.com 网页版
  • 支持 文心一言 网页版
  • 支持 ChatGLM-6B 本地版

🤖 多平台兼容

我们支持多种聊天平台。

平台群聊回复私聊回复条件触发管理员指令绘图语音回复
Mirai支持支持支持支持支持支持
OneBot支持支持支持支持支持支持
Telegram支持支持部分支持部分支持支持支持
Discord支持支持部分支持不支持支持支持
企业微信支持支持支持不支持支持支持
个人微信支持支持支持不支持支持支持

二、搭建🔧

如果你是手机党,可以看这个纯用手机的部署教程(使用 Linux 服务器):https://www.bilibili.com/video/av949514538


Linux: 通过快速部署脚本部署 (新人推荐)

执行下面这行命令启动自动部署脚本。 它会为你安装 Docker、 Docker Compose 和编写配置文件。

bash -c "$(wget -O- https://gist.githubusercontent.com/lss233/2fdd75be3f0724739368d0dcd9d1367d/raw/62a790da4a391af096074b3355c2c2b7ecab3c28/chatgpt-mirai-installer-gocqhttp.sh)"

Linux: 通过 Docker Compose 部署 (自带 Mirai)

我们使用 docker-compose.yaml 整合了 lss233/mirai-http 和本项目来实现快速部署。 但是在部署过程中仍然需要一些步骤来进行配置。

你可以在 Wiki 查看搭建教程。


Linux: 通过 Docker 部署 (适合已经有 Mirai 的用户)

  1. 找个合适的位置,写你的 config.cfg
  2. 执行以下命令,启动 bot:
# 修改 /path/to/config.cfg 为你 config.cfg 的位置
# XPRA_PASSWORD=123456 中的 123456 是你的 Xpra 密码,建议修改
docker run --name mirai-chatgpt-bot \
    -v /path/to/config.cfg:/app/config.cfg \
    --network host \
    lss233/chatgpt-mirai-qq-bot:browser-version

Windows: 快速部署包 (自带 Mirai/go-cqhttp,新人推荐)

我们为 Windows 用户制作了一个快速启动包,可以在 Release 中找到。

文件名为:quickstart-windows-go-cqhttp-amd64.zip(推荐) 或者 quickstart-windows-mirai-amd64.zip


Mac: 快速部署包 (自带 Mirai,新人推荐)

Windows快速部署包Mac用户也可以使用,@magisk317 已测试通过,功能基本都正常 不过,需要注意的是,如果需要使用图片模式,由于wkhtmltoimage.exe在Mac上无法运行,可以使用wkhtmltopdf代替,安装命令:

brew install --cask wkhtmltopdf

brew的安装及使用方法详见:链接


手动部署

提示:你需要 Python >= 3.11 才能运行本项目

1)部署 Mirai ,安装 mirai-http-api 插件。

2)下载本项目:

git clone https://github.com/lss233/chatgpt-mirai-qq-bot
cd chatgpt-mirai-qq-bot
pip3 install -r requirements.txt

3)参照项目文档调整配置文件。

4)启动 bot.

python3 bot.py

三、HTTP API🕸

config.cfg 中加入以下配置后,将额外提供 HTTP API 支持。

[http]
# 填写提供服务的端口
host = "0.0.0.0"
port = 8080
debug = false

启动后将提供以下接口:


POST /v1/chat

请求参数

参数名必选类型说明
session_idString会话ID,默认:friend-default_session
usernameString用户名,默认:某人
messageString消息,不能为空

请求示例

{
    "session_id": "friend-123456",
    "username": "testuser",
    "message": "ping"
}

响应格式

参数名类型说明
resultStringSUCESS,DONE,FAILED
messageString[]文本返回,支持多段返回
voiceString[]音频返回,支持多个音频的base64编码;参考:data:audio/mpeg;base64,iVBORw0KGgoAAAANS…
imageString[]图片返回,支持多个图片的base64编码;参考:data:image/png;base64,UhEUgAAAgAAAAIACAIA…

响应示例

{
    "result": "DONE",
    "message": ["pong!"],
    "voice": [],
    "image": []
}

POST /v2/chat

请求参数

参数名必选类型说明
session_idString会话ID,默认:friend-default_session
usernameString用户名,默认:某人
messageString消息,不能为空

请求示例


{
    "session_id": "friend-123456",
    "username": "testuser",
    "message": "ping"
}

  • 请注意,session_id请采用规范格式。其格式为friend-(好友)或group-(群组)加字符串

示例

friend-R6sxRvblulTZqNC
group-M3jpvxv26mKVM

如果不能正确继续是好友还是群组,将一律按照群组处理

响应格式 字符串:request_id


响应示例

1681525479905

  • 请注意,返回的内容可能会带有引号。请去除引号。(包括 "'
 '1681525479905'

GET /v2/chat/response

请求参数

参数名必选类型说明
request_idString请求id,/v2/chat返回的值

请求示例

/v2/chat/response?request_id=1681525479905

  • 请注意,request_id不能带有引号(包括 "' )。 下列为错误示范
/v2/chat/response?request_id='1681525479905'

/v2/chat/response?request_id="1681525479905"

/v2/chat/response?request_id='1681525479905"

/v2/chat/response?request_id="1681525479905'

响应格式

参数名类型说明
resultStringSUCESS,DONE,FAILED
messageString[]文本返回,支持多段返回
voiceString[]音频返回,支持多个音频的base64编码;参考:data:audio/mpeg;base64,iVBORw0KGgoAAAANS…
imageString[]图片返回,支持多个图片的base64编码;参考:data:image/png;base64,UhEUgAAAgAAAAIACAIA…
  • 每次请求返回增量并清空。DONE、FAILED之后没有更多返回。

响应示例


{
    "result": "DONE",
    "message": ["pong!"],
    "voice": ["data:audio/mpeg;base64,iVBORw0KGgoAAAANS..."],
    "image": ["data:image/png;base64,UhEUgAAAgAAAAIACAIA...", "data:image/png;base64,UhEUgAAAgAAAAIACAIA..."]
}

  • 请注意,当返回 SUCCESS的时候表示等待
{"result": "SUCCESS", "message": [], "voice": [], "image": []}

  • 请注意,可能有多条DONE,请一直请求,直到出现FAILEDFAILED表示回复完毕。
{"result": "FAILED", "message": ["\u6ca1\u6709\u66f4\u591a\u4e86\uff01"], "voice": [], "image": []}

  • 请注意DONEFAILED之间可能会穿插SUCCESS。整个回复周期可能会大于一分钟。

四、加载预设🦊

如果你想让机器人自动带上某种聊天风格,可以使用预设功能。

我们自带了 猫娘正常 两种预设,你可以在 presets 文件夹下了解预设的写法。

使用 加载预设 猫娘 来加载猫娘预设。

下面是一些预设的小视频,你可以看看效果:

  • MOSS: https://www.bilibili.com/video/av309604568
  • 丁真:https://www.bilibili.com/video/av267013053
  • 小黑子:https://www.bilibili.com/video/av309604568
  • 高启强:https://www.bilibili.com/video/av779555493

关于预设系统的详细教程:Wiki

你可以在 Awesome ChatGPT QQ Presets 获取由大家分享的预设。

你也可以参考 Awesome-ChatGPT-prompts-ZH_CN 来调教你的 ChatGPT,还可以参考 Awesome ChatGPT Prompts 来解锁更多技能。


五、文字转图片📷

在发送代码或者向 QQ 群发送消息失败时,自动将消息转为图片发送。

字体文件存放于 fonts/ 目录中。

默认使用的字体是 更纱黑体


六、文字转语音🎙

自 v2.2.5 开始,我们支持接入微软的 Azure 引擎 和 VITS 引擎,让你的机器人发送语音。

提示:在 Windows 平台上使用语音功能需要安装最新的 VC 运行库,你可以在这里下载。`


七、相似项目🎈

如果你自己也有做机器人的想法,可以看看下面这些项目:

本项目基于以上项目开发,所以你可以给他们也点个 star !


除了我们以外,还有这些很出色的项目:


2024-09-16(一)

注意:此框架现已基本稳定,文档会尽快完善。 该分支使用二维码登陆的协议参考了原名:SmartQQ-for-Raspberry-Pi(PiWebQQV2)这一项目,自行整合开发了基于SmartQQ的自动机器人框架。 登陆时采用QQ安全中心的二维码做为登陆条件, 不需要在程序里输入QQ号码及QQ密码。 旧版机器人仍有保留在old_QQBot.py中。 基本功能 群聊功能: 注:以下命令皆是在qq中发送,群聊命令发送到所在群中 群聊吐槽功能(tucao),类似于小黄鸡,在群中通过发送!learn {ha}{哈哈}语句,则机器人检测到发言中包含“ha”时将自动回复“哈哈”。!delete {ha}{哈哈}可以删除该内容。吐槽内容本地保存在data/tucao_save/中。 群聊复读功能(repeat),检测到群聊中连续两个回复内容相同,将自动复读该内容1次。 群聊关注功能(follow),使用命令!follow qq号可以使机器人复读此人所有发言(除命令外)使用命令!unfollow qq号解除关注。qq号处可使用"me"来快速关注与解除关注自己,例:!follow me 群聊唤出功能(callout),群聊中检测关键词智障机器人,若发言中包含该词,将自动回复干嘛(‘·д·),此功能一般用于检测机器人状态与调戏 群聊命令功能(command_0arg/command_1arg):使用![命令名]格式或![命令名] {参数1}执行命令,命令“吐槽列表”,使用命令!吐槽列表在群聊中激活,列出当前群的吐槽列表。 !删除关键字 {blablabla}:删除关键字“blablabla”下的所有吐槽内容 !吐槽列表:列出当前群的吐槽列表 现有无参数命令: 现有单参数命令: 私聊功能: 私聊唤出功能(callout),私聊中检测关键词智障机器人,若发言中包含该词,将自动回复干嘛(‘·д·),此功能一般用于检测机器人状态与调戏 私聊复读功能(repeat),检测到私聊中连续两个回复内容相同,将自动复读该内容1次。 临时对话功能: 唤出功能(callout),具体同私聊与群聊。   标签:smartqq  smartqqbot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程乐园

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值