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, 由插件接入, 仅支持英文
故事续写
- NovelAI API, 由插件接入
图片绘制
语音生成
安装此插件,即可在使用中切换文字模型。
✅功能
✅ 支持敏感词过滤,避免账号风险
- 难以监测机器人与用户对话时的内容,故引入此功能以减少机器人风险
- 加入了百度云内容审核,在
config.py
中修改baidu_check
的值,并填写baidu_api_key
和baidu_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.py
中blob_message_strategy
等字段
✅ 回复速度限制
- 支持限制单会话内每分钟可进行的对话次数
- 具有“等待”和“丢弃”两种策略
- “等待”策略:在获取到回复后,等待直到此次响应时间达到对话响应时间均值
- “丢弃”策略:此分钟内对话次数达到限制时,丢弃之后的对话
- 详细请查看config.py中的相关配置
✅ 支持使用网络代理
- 目前已支持正向代理访问接口
- 详细请查看config.py中的
openai_config
的说明
✅ 支持自定义提示内容
- 允许用户自定义报错、帮助等提示信息
- 请查看
tips.py
🏞️截图
详情请查看Wiki功能使用页
🔩部署
部署过程中遇到任何问题,请先在QChatGPT或qcg-installer的issue里进行搜索
QChatGPT需要Python版本>=3.9
- 官方交流、答疑群: 656285629
- 进群提问前请您
确保
已经找遍文档和issue均无法解决
- 进群提问前请您
- 社区群(内有一键部署包、图形化界面等资源): 891448839
- 注册OpenAI账号
点此查看步骤
若您要直接使用非OpenAI的模型(如New Bing),可跳过此步骤,直接进行之后的部署,完成后按照相关插件的文档进行配置即可
参考以下文章自行注册
注册成功后请前往个人中心查看api_key
完成注册后,使用以下自动化或手动部署步骤
- 自动化部署
展开查看,以下方式二选一,Linux首选Docker,Windows首选安装器
Docker方式
docker方式目前仅支持使用mirai登录,若您不熟悉docker的操作及相关知识,强烈建议您使用其他方式部署,我们不会且难以解决您主机上多个容器的连接问题。
安装器方式
- 安装器目前仅支持部分平台,请到仓库文档查看,其他平台请手动部署
- 手动部署
手动部署适用于所有平台
- 请使用Python 3.9.x以上版本
① 配置QQ登录框架
目前支持mirai和go-cqhttp,配置任意一个即可
mirai
- 按照此教程配置Mirai及mirai-api-http
- 启动mirai-console后,使用
login
命令登录QQ账号,保持mirai-console运行状态 - 在下一步配置主程序时请在config.py中将
msg_source_adapter
设为yirimirai
go-cqhttp
- 按照此文档配置go-cqhttp
- 启动go-cqhttp,确保登录成功,保持运行
- 在下一步配置主程序时请在config.py中将
msg_source_adapter
设为nakuru
② 配置主程序
- 克隆此项目
git clone https://github.com/RockChinQ/QChatGPT
cd QChatGPT
- 安装依赖
pip3 install requests yiri-mirai openai colorlog func_timeout dulwich Pillow nakuru-project-idk CallingGPT tiktoken
- 运行一次主程序,生成配置文件
python3 main.py
- 编辑配置文件
config.py
按照文件内注释填写配置信息
- 运行主程序
python3 main.py
无报错信息即为运行成功
常见问题
🧩 插件生态
所有插件列表,欢迎提出issue以提交新的插件
部分插件
- WebwlkrPlugin - 让机器人能联网!!
- revLibs - 将ChatGPT网页版接入此项目,关于官方接口和网页版有什么区别
- Switcher - 支持通过指令切换使用的模型
- hello_plugin -
hello_plugin
的储存库形式,插件开发模板 - dominoar/QChatPlugins - dominoar编写的诸多新功能插件(语音输出、Ranimg、屏蔽词规则等)
- dominoar/QCP-NovelAi - NovelAI 故事叙述与绘画
- oliverkirk-sudo/chat_voice - 文字转语音输出,使用HuggingFace上的VITS-Umamusume-voice-synthesizer模型
- RockChinQ/WaitYiYan - 实时获取百度
文心一言
等待列表人数 - chordfish-k/QChartGPT_Emoticon_Plugin - 使机器人根据回复内容发送表情包
- oliverkirk-sudo/ChatPoeBot - 接入Poe上的机器人
- lieyanqzu/WeatherPlugin - 天气查询插件
- SysStatPlugin - 查看系统状态