QChatGPT/README.md
2023-09-13 11:55:11 +08:00

17 KiB
Raw Blame History

QChatGPT

QChatGPT

“当然下面是一个使用Java编写的快速排序算法的示例代码”

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

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

NOTE
2023/9/13 现已支持通过One API接入 Azure、Anthropic Claude、Google PaLM 2、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问以及 360 智脑等模型,欢迎测试并反馈。
2023/8/29 逆向库插件已支持 gpt4free
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, 由插件接入

模型聚合平台

  • One API, Azure、Anthropic Claude、Google PaLM 2、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问以及 360 智脑等模型的官方接口转换成 OpenAI API 接入QChatGPT 原生支持,您需要先配置 One API之后在config.py中设置反向代理和One API的密钥后使用。
  • gpt4free, 破解以免费使用多个平台的各种文字模型, 由插件接入, 无需鉴权, 稳定性较差。
  • Poe, 破解免费使用Poe上多个平台的模型, 由oliverkirk-sudo/ChatPoeBot接入(由于 Poe 上可用的大部分模型现已通过revLibs插件或其他方式接入,此插件现已停止维护)。

故事续写

  • 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功能使用页

🚀部署和使用

NOTE

  • 部署过程中遇到任何问题,请先在QChatGPTqcg-installer的issue里进行搜索
  • QChatGPT需要Python版本>=3.9
  • 官方群和社区群群号请见文档顶部

- 注册OpenAI账号

点此查看步骤

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

参考以下文章自行注册

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

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

- Docker或自动化部署

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

Docker方式

docker方式较为复杂若您不熟悉docker的操作及相关知识强烈建议您使用其他方式部署我们不会且难以解决您主机上多个容器的连接问题。

请查看此文档

安装器方式

使用此安装器(若无法访问请到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以提交新的插件

部分插件

😘致谢和赞赏

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

赞赏码