/QChatGPT

😎高稳定性、🐒低耦合、🧩支持插件、适配多种模型的 ChatGPT QQ 机器人🤖 | 支持 ChatGPT 实时联网搜索 | 支持 Claude 和 Google Bard

Primary LanguagePythonGNU Affero General Public License v3.0AGPL-3.0

QChatGPT

QChatGPT

English | 简体中文

GitHub release (latest by date) Wakapi Count python
Static Badge Static Badge Static Badge Static Badge Static Badge

回复效果演示(带有联网插件) 联网演示GIF

2023/8/14 逆向库插件已支持Claude和Bard
2023/7/29 支持使用GPT的Function Calling功能实现类似ChatGPT Plugin的效果,请见Wiki内容函数

🍺模型适配一览

文字对话

  • OpenAI GPT-3.5模型(ChatGPT API), 本项目原生支持, 默认使用
  • OpenAI GPT-3模型, 本项目原生支持, 部署完成后前往config.py切换
  • OpenAI GPT-4模型, 本项目原生支持, 目前需要您的账户通过OpenAI的内测申请, 请前往config.py切换
  • ChatGPT网页版GPT-3.5模型, 由插件接入
  • ChatGPT网页版GPT-4模型, 目前需要ChatGPT Plus订阅, 由插件接入
  • New Bing逆向库, 由插件接入
  • HuggingChat, 由插件接入, 仅支持英文
  • Claude, 由插件接入
  • Google Bard, 由插件接入

故事续写

  • NovelAI API, 由插件接入

图片绘制

语音生成

  • TTS+VITS, 由插件接入
  • Plachta/VITS-Umamusume-voice-synthesizer, 由插件接入

安装此插件,即可在使用中切换文字模型。

✅功能

✅支持敏感词过滤,避免账号风险
  • 难以监测机器人与用户对话时的内容,故引入此功能以减少机器人风险
  • 加入了百度云内容审核,在config.py中修改baidu_check的值,并填写baidu_api_keybaidu_secret_key以开启此功能
  • 编辑sensitive.json,并在config.py中修改sensitive_word_filter的值以开启此功能
✅群内多种响应规则,不必at
  • 默认回复ai作为前缀或@机器人的消息
  • 详细见config.py中的response_rules字段
✅完善的多api-key管理,超额自动切换
  • 支持配置多个api-key,内部统计使用量并在超额时自动切换
  • 请在config.py中修改openai_config的值以设置api-key
  • 可以在config.py中修改api_key_fee_threshold来自定义切换阈值
  • 运行期间向机器人说!usage以查看当前使用情况
✅支持预设指令文字
  • 支持以自然语言预设文字,自定义机器人人格等信息
  • 详见config.py中的default_prompt部分
  • 支持设置多个预设情景,并通过!reset、!default等指令控制,详细请查看wiki指令
✅支持对话、绘图等模型,可玩性更高
  • 现已支持OpenAI的对话Completion API和绘图Image API
  • 向机器人发送指令!draw <prompt>即可使用绘图模型
✅支持指令控制热重载、热更新
  • 允许在运行期间修改config.py或其他代码后,以管理员账号向机器人发送指令!reload进行热重载,无需重启
  • 运行期间允许以管理员账号向机器人发送指令!update进行热更新,拉取远程最新代码并执行热重载
✅支持插件加载🧩
  • 自行实现插件加载器及相关支持
  • 支持GPT的Function Calling功能
  • 详细查看插件使用页
✅私聊、群聊黑名单机制
  • 支持将人或群聊加入黑名单以忽略其消息
  • 详见Wiki加入黑名单
✅长消息处理策略
  • 支持将长消息转换成图片或消息记录组件,避免消息刷屏
  • 请查看config.pyblob_message_strategy等字段
✅回复速度限制
  • 支持限制单会话内每分钟可进行的对话次数
  • 具有“等待”和“丢弃”两种策略
    • “等待”策略:在获取到回复后,等待直到此次响应时间达到对话响应时间均值
    • “丢弃”策略:此分钟内对话次数达到限制时,丢弃之后的对话
  • 详细请查看config.py中的相关配置
✅支持使用网络代理
  • 目前已支持正向代理访问接口
  • 详细请查看config.py中的openai_config的说明
✅支持自定义提示内容
  • 允许用户自定义报错、帮助等提示信息
  • 请查看tips.py

🏞️截图

私聊GPT-3.5
群聊GPT-3.5
New Bing

详情请查看Wiki功能使用页

🔩部署

部署过程中遇到任何问题,请先在QChatGPTqcg-installer的issue里进行搜索
QChatGPT需要Python版本>=3.9

  • 官方交流、答疑群: 656285629
    • 进群提问前请您确保已经找遍文档和issue均无法解决
  • 社区群(内有一键部署包、图形化界面等资源): 891448839

- 注册OpenAI账号

点此查看步骤

若您要直接使用非OpenAI的模型(如New Bing),可跳过此步骤,直接进行之后的部署,完成后按照相关插件的文档进行配置即可

参考以下文章自行注册

国内注册ChatGPT的方法(100%可用)
手把手教你如何注册ChatGPT,超级详细

注册成功后请前往个人中心查看api_key
完成注册后,使用以下自动化或手动部署步骤

- 自动化部署

展开查看,以下方式二选一,Linux首选Docker,Windows首选安装器

Docker方式

docker方式目前仅支持使用mirai登录,若您不熟悉docker的操作及相关知识,强烈建议您使用其他方式部署,我们不会且难以解决您主机上多个容器的连接问题。

请查看此文档
@mikumifa贡献

安装器方式

使用此安装器(若无法访问请到Gitee)进行部署

  • 安装器目前仅支持部分平台,请到仓库文档查看,其他平台请手动部署

- 手动部署

手动部署适用于所有平台
  • 请使用Python 3.9.x以上版本

① 配置QQ登录框架

目前支持mirai和go-cqhttp,配置任意一个即可

mirai
  1. 按照此教程配置Mirai及mirai-api-http
  2. 启动mirai-console后,使用login命令登录QQ账号,保持mirai-console运行状态
  3. 在下一步配置主程序时请在config.py中将msg_source_adapter设为yirimirai
go-cqhttp
  1. 按照此文档配置go-cqhttp
  2. 启动go-cqhttp,确保登录成功,保持运行
  3. 在下一步配置主程序时请在config.py中将msg_source_adapter设为nakuru

② 配置主程序

  1. 克隆此项目
git clone https://github.com/RockChinQ/QChatGPT
cd QChatGPT
  1. 安装依赖
pip3 install requests yiri-mirai openai colorlog func_timeout dulwich Pillow nakuru-project-idk CallingGPT tiktoken
  1. 运行一次主程序,生成配置文件
python3 main.py
  1. 编辑配置文件config.py

按照文件内注释填写配置信息

  1. 运行主程序
python3 main.py

无报错信息即为运行成功

常见问题

  • mirai登录提示QQ版本过低,见此issue
  • 如提示安装uvicornhypercorn不要安装,这两个不是必需的,目前存在未知原因bug
  • 如报错TypeError: As of 3.10, the *loop* parameter was removed from Lock() since it is no longer necessary, 请参考 此处

🚀使用

部署完成后必看: 指令说明

所有功能查看Wiki功能使用页

🧩插件生态

⭐我们已经支持了GPT的Function Calling能力,请查看Wiki内容函数

使用方法见:Wiki插件使用
开发教程见:Wiki插件开发

所有插件列表,欢迎提出issue以提交新的插件

部分插件

😘致谢

以及所有贡献者和其他为本项目提供支持的朋友们。

👍赞赏

赞赏码