From 85d46089e37794e24c584f92747b73ed35eeb37b Mon Sep 17 00:00:00 2001 From: chordfish <592229466@qq.com> Date: Thu, 9 Mar 2023 19:53:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=B2=E6=8C=89=E8=A6=81=E6=B1=82=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 36 +++++++++++++----------------------- config-template.py | 7 ++++--- pkg/openai/session.py | 29 ++++++++++++++--------------- 3 files changed, 31 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index ab6e9983..eea3218d 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,16 @@ -# QChatGPT🤖完整情景导入版 +# QChatGPT🤖 +> 2023/3/3 官方接口疑似被墙,可考虑使用网络代理 [#198](https://github.com/RockChinQ/QChatGPT/issues/198) +> 2023/3/3 现已在主线支持官方ChatGPT接口,使用方法查看[#195](https://github.com/RockChinQ/QChatGPT/issues/195) +> 2023/3/2 OpenAI已发布ChatGPT官方接口,我们正在全力接入,预计明日前完成,请查看[此PR](https://github.com/RockChinQ/QChatGPT/pull/194) +> 2023/2/16 现已支持接入ChatGPT网页版,详情请完成部署并查看底部**插件**小节或[此仓库](https://github.com/RockChinQ/revLibs) -- 2023/3/9 初步追加通过json导入messages数组的方式进行情景预设, - 参考[api](https://platform.openai.com/docs/guides/chat/introduction),通过该方法能注入gpt本不存在的记忆。neko.json来源于[此](https://gist.github.com/ChenYFan/ffb8390aac6c4aa44869ec10fe4eb9e2) -- 2023/3/8 fork from: [RockChinQ/QChatGPT](https://github.com/RockChinQ/QChatGPT) +- 到[项目Wiki](https://github.com/RockChinQ/QChatGPT/wiki)可了解项目详细信息 +- 由bilibili TheLazy制作的[视频教程](https://www.bilibili.com/video/BV15v4y1X7aP) +- 交流、答疑群: ~~204785790~~(已满)、691226829、656285629 + - **进群提问前请您`确保`已经找遍文档和issue均无法解决** +- QQ频道机器人见[QQChannelChatGPT](https://github.com/Soulter/QQChannelChatGPT) -## 改动一览 - -### 切换完整情景模式 - -- 在`config.py`中,将`preset_mode`更改为`full_scenario` -- 将情景json放入`scenario`文件夹中,使用`!reload`和`!reset <无后缀文件名>`指令切换 - -### 过滤脱离人设的回复 - -- 在`config.py`中将`filter_ai_warning`改为`True` -- 在对应情景的json中添加(**注意,使用此过滤会使得机器人无法回复有关过滤词的内容**): - - ```json - "filter": { - "reg": "我的本质|抱歉|AI助手|人工智能|语言模型|无法提供|无法回应|机器人", - "replace": "<替换的回复>" - }, - ``` +通过调用OpenAI的ChatGPT等语言模型来实现一个更加智能的QQ机器人 ## 🍺模型适配一览 @@ -238,9 +227,10 @@ python3 main.py - [@hissincn](https://github.com/hissincn) 本项目贡献者 - [@LINSTCL](https://github.com/LINSTCL) GPT-3.5官方模型适配贡献者 - [@Haibersut](https://github.com/Haibersut) 本项目贡献者 +- [@万神的星空](https://github.com/qq255204159) 整合包发行 以及其他所有为本项目提供支持的朋友们。 ## 👍赞赏 -赞赏码 +赞赏码 \ No newline at end of file diff --git a/config-template.py b/config-template.py index 71fc5ae7..e519c28e 100644 --- a/config-template.py +++ b/config-template.py @@ -79,16 +79,17 @@ default_prompt = { "default": "如果我之后想获取帮助,请你说“输入!help获取帮助”", } -# 实验性设置项:JSON完整情景导入 +# 实验性设置项 +# JSON完整情景导入,存放JSON的文件夹 full_prompt_dir = "scenario/" # 预设prompt模式 -# 参考值:default / full_scenario +# 参考值:旧版本方式:default | 完整情景:full_scenario preset_mode = "default" # 过滤AI脱离人设的消息 # 这类消息在对应情景json中设置,将其替换为自定义消息,以保持人格 -filter_ai_warning = False +# filter_ai_warning = False # 群内响应规则 # 符合此消息的群内消息即使不包含at机器人也会响应 diff --git a/pkg/openai/session.py b/pkg/openai/session.py index 0eab952b..2cd54baf 100644 --- a/pkg/openai/session.py +++ b/pkg/openai/session.py @@ -149,12 +149,11 @@ class Session: if config.preset_mode == "full_scenario": import os - logging.info("A") ## dir = os.path.join(os.getcwd(), config.full_prompt_dir) json_file = os.path.join(dir, use_default) + '.json' - logging.info("B") - logging.info("try to load json: {}".format(json_file)) + + logging.debug("try to load json: {}".format(json_file)) try: with open(json_file, 'r', encoding ='utf-8') as f: @@ -257,18 +256,18 @@ class Session: del (res_ans_spt[0]) res_ans = '\n\n'.join(res_ans_spt) - #检测是否包含ai人格否定 - logging.debug('bot_filter: {}'.format(self.bot_filter)) - if config.filter_ai_warning and self.bot_filter: - import re - match = re.search(self.bot_filter['reg'], res_ans) - logging.debug(self.bot_filter) - logging.debug(res_ans) - if match: - logging.debug('回复:{}, 检测到人格否定,替换中。。'.format(res_ans)) - res_ans = self.bot_filter['replace'] - logging.debug('替换为: {}'.format(res_ans)) - + # 检测是否包含ai人格否定 + # logging.debug('bot_filter: {}'.format(self.bot_filter)) + # if config.filter_ai_warning and self.bot_filter: + # import re + # match = re.search(self.bot_filter['reg'], res_ans) + # logging.debug(self.bot_filter) + # logging.debug(res_ans) + # if match: + # logging.debug('回复:{}, 检测到人格否定,替换中。。'.format(res_ans)) + # res_ans = self.bot_filter['replace'] + # logging.debug('替换为: {}'.format(res_ans)) + # 将此次对话的双方内容加入到prompt中 self.prompt.append({'role': 'user', 'content': text}) self.prompt.append({'role': 'assistant', 'content': res_ans})