基于Mirai框架的Chatgpt_qq机器人搭建

admin 2023年2月25日02:08:11评论170 views字数 5180阅读17分16秒阅读模式

参考项目:https://github.com/lss233/chatgpt-mirai-qq-bot

by:雪月三十

采用docker方式搭建 方便快捷

不建议放在云服务器上

本地要有代理才行(也可以自行配置代理)

以下操作均是在有代理的情况下进行的


克隆项目 

git clone https://github.com/lss233/chatgpt-mirai-qq-bot.gitcd chatgpt-qqcd chatgpt-mirai-qq-bot

       

配置Mirai

先把项目拉起来 添加上自己的账号

docker-compose run --rm mirai

当你看见终端出现

2022-12-10 04:30:19 I/MCL Addon: iTXTech MCL Version: 2.1.2-61c8bd82022-12-10 04:30:19 W/MCL Addon: iTXTech Soyuz 未安装,Soyuz MCL Handler 特性已禁用2022-12-10 04:30:19 I/main: 3 plugin(s) enabled.2022-12-10 04:30:19 I/main: Auto-login _________2022-12-10 04:30:20 W/stderr: ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...>

的时候,意味着 Mirai 启动完毕。接下来执行命令登录机器人 QQ。

login <机器人QQ号> <机器人密码> ANDROID_PAD

然后根据提示进行即可。

当机器人账号登录成功以后,执行

autologin add <机器人QQ号> <机器人密码>autologin setConfig <机器人QQ号> protocol ANDROID_PAD

让 Mirai 可以自动登录。

设置好后退出容器即可


配置 mirai-http-api

基于Mirai框架的Chatgpt_qq机器人搭建

编辑mirai/config/net.mamoe.mirai-api-http/setting.yml,填入以下内容:

adapters:  - http  - wsdebug: trueenableVerify: trueverifyKey: 1234567890singleMode: falsecacheSize: 4096persistenceFactory: 'built-in'adapterSettings:  ## HTTP 服务的主机, 端口和跨域设置  http:    host: mirai    port: 8080    cors: ["*"]
## Websocket 服务的主机, 端口和事件同步ID设置 ws: host: mirai port: 8080 reservedSyncId: -1


配置本项目

复制一份 config.example.cfg, 命名为 config.cfg,然后打开编辑。

基于Mirai框架的Chatgpt_qq机器人搭建

编辑的教程和这里一样。只不过有些地方固定这么填:

api_key = "1234567890"http_url = "http://mirai:8080"ws_url = "http://mirai:8080"

模板:

# 这里是 ChatGPT for QQ 的所有配置文件# 请注意:以 "#" 开头的文本均为注释# 不会被程序读取# 如果你想要使用某个设置,请确保前面没有 "#" 号[mirai]# Mirai 相关设置
qq = 请填写机器人的 QQ 号
# 以下设置如果不懂 无需理会
api_key = "1234567890" # mirai-http-api 中的 verifyKeyhttp_url = "http://mirai:8080" # mirai-http-api 中的 http 回调地址ws_url = "http://mirai:8080" # mirai-http-api 中的 ws 回调地址
[openai]# OpenAI 相关设置
# 第 1 个 OpenAI 账号的登录信息[[openai.accounts]]# 模式选择,详情见下方 READMEmode = "browser"
# 你的 OpenAI 邮箱email = "xxxx" # 你的 OpenAI 密码password = "xxx"
# 对于通过 Google 登录或者微软登录的同学,可以使用 session_token 登录# 此时的 password 可以直接删除 (email 必填)# 提示:如果使用此模式,请删除下方 session_token 前面的 "#" 号,并给上方的 password 前面加上 "#"# session_token = "一串 ey 开头的东西"
# 你的 OpenAI access_token,登录后访问`https://chat.openai.com/api/auth/session`获取# 提示:如果使用此模式,请删除下方 access_token 前面的 "#" 号,并给上方的 email、password 前面加上 "#"# access_token = "一串 ey 开头的东西"
# 如果你在国内,需要配置代理# 提示:如果使用此功能,请删除下方 proxy 前面的 "#" 号# proxy="http://127.0.0.1:1080"
# 使用 ChatGPT Plus(plus 用户此项设置为 true)paid = false
# 是否开启标题自动重命名# 若为空或保持注释即不开启# 支持的变量:{session_id} - 此对话对应的上下文 ID,若产生在好友中,则为好友 QQ 号,若产生在群聊中,则为群号# 具体见 README 中的介绍# title_pattern="qq-{session_id}"
# 是否自动删除旧的对话,开启后用户发送重置对话时会自动删除以前的会话内容# auto_remove_old_conversations = true
# 以下是多账号的设置# 如果你想同时使用多个账号进行负载均衡,就删掉前面的注释
# # 第 2 个 OpenAI 账号的登录信息# [[openai.accounts]]# 模式选择,详情见下方 README# mode = "browser"
# # 你的 OpenAI 邮箱# email = "xxxx" # # 你的 OpenAI 密码# password = "xxx"
# # 对于通过 Google 登录或者微软登录的同学,可以使用 session_token 登录# # 此时 email 和 password 可以直接删除# # session_token = "一串 ey 开头的东西"
# # 如果你在国内,需要配置代理# # proxy="http://127.0.0.1:1080"
# # 使用 ChatGPT Plus(plus 用户此项设置为 true)# paid = false
# # 第 3 个 OpenAI 账号的登录信息# [[openai.accounts]]# 模式选择,详情见下方 README# mode = "browser"
# # 你的 OpenAI 邮箱# email = "xxxx" # # 你的 OpenAI 密码# password = "xxx"
# # 对于通过 Google 登录或者微软登录的同学,可以使用 session_token 登录# # 此时 email 和 password 可以直接删除# # session_token = "一串 ey 开头的东西"
# # 如果你在国内,需要配置代理# # proxy="http://127.0.0.1:1080"
# # 使用 ChatGPT Plus(plus 用户此项设置为 true)# paid = false
[text_to_image]# 文字转图片
# 持续开启,设置后所有的消息以图片发送,减小风控概率 always = true
# 字体大小font_size = 30
# 图片宽度width = 700
# 字体font_path = "fonts/sarasa-mono-sc-regular.ttf"
# 起始点 Xoffset_x = 50
# 起始点 Yoffset_y = 50
[trigger]# 配置机器人要如何响应,下面所有项均可选 (也就是可以直接删掉那一行)
# 符合前缀才会响应,可以自己增减prefix = [ "",]
# 配置群里如何让机器人响应,"at" 表示需要群里 @ 机器人,"mention" 表示 @ 或者以机器人名字开头都可以,"none" 表示不需要require_mention = "at"
# 重置会话的命令reset_command = [ "重置会话",]
# 回滚会话的命令rollback_command = [ "回滚会话",]
[response]# 匹配指令成功但没有对话内容时发送的消息placeholder = "您好!我是 Assistant,一个由 OpenAI 训练的大型语言模型。我不是真正的人,而是一个计算机程序,可以通过文本聊天来帮助您解决问题。如果您有任何问题,请随时告诉我,我将尽力回答。n如果您需要重置我们的会话,请回复`重置会话`。"
# 发生错误时要发送的消息error_format = "出现故障!如果这个问题持续出现,请和我说“重置会话” 来开启一段新的会话,或者发送 “回滚对话” 来回溯到上一条对话,你上一条说的我就当作没看见。n{exc}"
# 发生网络错误时发送的消息,请注意可以插入 {exc} 作为异常占位符error_network_failure = "网络故障!连接 OpenAI 服务器失败,我需要更好的网络才能服务!n{exc}"
# OpenAI 账号登录失效时的提示error_session_authenciate_failed = "身份验证失败!无法登录至 ChatGPT 服务器,请检查账号信息是否正确!n{exc}"
# OpenAI 提示 Too many requests(太多请求) 时的提示error_request_too_many = "糟糕!当前收到的请求太多了,我需要一段时间冷静冷静。你可以选择“重置会话”,或者过一会儿再来找我!n{exc}"
# 服务器提示 Server overloaded(过载) 时的提示error_server_overloaded = "抱歉,当前服务器压力有点大,请稍后再找我吧!"
# 是否要回复触发指令的消息quote = true
# 发送下面那个提醒之前的等待时间timeout = 30.0
# 超过响应时间时要发送的提醒timeout_format = "我还在思考中,请再等一下~"
# 重置会话时发送的消息reset = "会话已重置。"
# 回滚成功时发送的消息rollback_success = "已回滚至上一条对话,你刚刚发的我就忘记啦!"
# 回滚失败时发送的消息rollback_fail = "回滚失败,没有更早的记录了!"
# 等待处理的消息的最大数量,如果要关闭此功能,设置为 0max_queue_size = 10
# 队列满时的提示queue_full = "抱歉!我现在要回复的人有点多,暂时没有办法接收新的消息了,请过会儿再给我发吧!"
# 新消息加入队列会发送通知的长度最小值queued_notice_size = 3
# 新消息进入队列时,发送的通知。queue_size 是当前排队的消息数queued_notice = "消息已收到!当前我还有{queue_size}条消息要回复,请您稍等。"
[system]# 是否自动同意进群邀请accept_group_invite = false
# 是否自动同意好友请求accept_friend_request = false
[presets]# 切换预设的命令:加载预设 猫娘command = "加载预设 (\w+)"
loaded_successful = "预设加载成功!"
[presets.keywords]# 预设关键词 <-> 实际文件"正常" = "presets/default.txt""猫娘" = "presets/catgirl.txt"


启动

接下来就可以启动整个项目了。 你可以用

docker-compose up

来启动。 如果没问题的话,可以 Ctrl + C 退出来,然后换成

docker-compose up -d

在后台启动。


维护

如果你发现你的机器人不回你了,看看是 mirai 那边出问题了,还是 chatgpt 那边出问题了。

docker-compose logs mirai

可以看见 Mirai 的运行输出。

docker-compose logs chatgpt 

可以看见本项目 chatgpt 的运行输出。

如果 Mirai 出现问题(比如说需要验证,或者重新登录等),你可以这么做:

  1. 关闭当前正在运行的 Mirai

docker-compose stop mirai
  1. 手动启动 Mirai

docker-compose run --rm mirai

然后参考配置Mirai 搞定它。

搞定之后  Ctrl + C 退出来, 然后执行

docker-compose restart

重启就行了。


成品

基于Mirai框架的Chatgpt_qq机器人搭建


网络安全社团公众号

微信号 : qlnu_ctf

新浪微博:齐鲁师范学院网络安全社团

基于Mirai框架的Chatgpt_qq机器人搭建

原文始发于微信公众号(齐鲁师院网络安全社团):基于Mirai框架的Chatgpt_qq机器人搭建

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月25日02:08:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   基于Mirai框架的Chatgpt_qq机器人搭建https://cn-sec.com/archives/1572818.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息