已按要求修改

This commit is contained in:
chordfish 2023-03-09 19:53:31 +08:00
parent 3b55f706de
commit 85d46089e3
3 changed files with 31 additions and 41 deletions

View File

@ -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数组的方式进行情景预设 - 到[项目Wiki](https://github.com/RockChinQ/QChatGPT/wiki)可了解项目详细信息
参考[api](https://platform.openai.com/docs/guides/chat/introduction)通过该方法能注入gpt本不存在的记忆。neko.json来源于[此](https://gist.github.com/ChenYFan/ffb8390aac6c4aa44869ec10fe4eb9e2) - 由bilibili TheLazy制作的[视频教程](https://www.bilibili.com/video/BV15v4y1X7aP)
- 2023/3/8 fork from: [RockChinQ/QChatGPT](https://github.com/RockChinQ/QChatGPT) - 交流、答疑群: ~~204785790~~已满、691226829、656285629
- **进群提问前请您`确保`已经找遍文档和issue均无法解决**
- QQ频道机器人见[QQChannelChatGPT](https://github.com/Soulter/QQChannelChatGPT)
## 改动一览 通过调用OpenAI的ChatGPT等语言模型来实现一个更加智能的QQ机器人
### 切换完整情景模式
- 在`config.py`中,将`preset_mode`更改为`full_scenario`
- 将情景json放入`scenario`文件夹中,使用`!reload`和`!reset <无后缀文件名>`指令切换
### 过滤脱离人设的回复
- 在`config.py`中将`filter_ai_warning`改为`True`
- 在对应情景的json中添加**注意,使用此过滤会使得机器人无法回复有关过滤词的内容**
```json
"filter": {
"reg": "我的本质|抱歉|AI助手|人工智能|语言模型|无法提供|无法回应|机器人",
"replace": "<替换的回复>"
},
```
## 🍺模型适配一览 ## 🍺模型适配一览
@ -238,9 +227,10 @@ python3 main.py
- [@hissincn](https://github.com/hissincn) 本项目贡献者 - [@hissincn](https://github.com/hissincn) 本项目贡献者
- [@LINSTCL](https://github.com/LINSTCL) GPT-3.5官方模型适配贡献者 - [@LINSTCL](https://github.com/LINSTCL) GPT-3.5官方模型适配贡献者
- [@Haibersut](https://github.com/Haibersut) 本项目贡献者 - [@Haibersut](https://github.com/Haibersut) 本项目贡献者
- [@万神的星空](https://github.com/qq255204159) 整合包发行
以及其他所有为本项目提供支持的朋友们。 以及其他所有为本项目提供支持的朋友们。
## 👍赞赏 ## 👍赞赏
<img alt="赞赏码" src="res/mm_reward_qrcode_1672840549070.png" width="400" height="400"/> <img alt="赞赏码" src="res/mm_reward_qrcode_1672840549070.png" width="400" height="400"/>

View File

@ -79,16 +79,17 @@ default_prompt = {
"default": "如果我之后想获取帮助,请你说“输入!help获取帮助”", "default": "如果我之后想获取帮助,请你说“输入!help获取帮助”",
} }
# 实验性设置项JSON完整情景导入 # 实验性设置项
# JSON完整情景导入存放JSON的文件夹
full_prompt_dir = "scenario/" full_prompt_dir = "scenario/"
# 预设prompt模式 # 预设prompt模式
# 参考值:default / full_scenario # 参考值:旧版本方式default | 完整情景:full_scenario
preset_mode = "default" preset_mode = "default"
# 过滤AI脱离人设的消息 # 过滤AI脱离人设的消息
# 这类消息在对应情景json中设置将其替换为自定义消息以保持人格 # 这类消息在对应情景json中设置将其替换为自定义消息以保持人格
filter_ai_warning = False # filter_ai_warning = False
# 群内响应规则 # 群内响应规则
# 符合此消息的群内消息即使不包含at机器人也会响应 # 符合此消息的群内消息即使不包含at机器人也会响应

View File

@ -149,12 +149,11 @@ class Session:
if config.preset_mode == "full_scenario": if config.preset_mode == "full_scenario":
import os import os
logging.info("A")
## ##
dir = os.path.join(os.getcwd(), config.full_prompt_dir) dir = os.path.join(os.getcwd(), config.full_prompt_dir)
json_file = os.path.join(dir, use_default) + '.json' 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: try:
with open(json_file, 'r', encoding ='utf-8') as f: with open(json_file, 'r', encoding ='utf-8') as f:
@ -257,18 +256,18 @@ class Session:
del (res_ans_spt[0]) del (res_ans_spt[0])
res_ans = '\n\n'.join(res_ans_spt) res_ans = '\n\n'.join(res_ans_spt)
#检测是否包含ai人格否定 # 检测是否包含ai人格否定
logging.debug('bot_filter: {}'.format(self.bot_filter)) # logging.debug('bot_filter: {}'.format(self.bot_filter))
if config.filter_ai_warning and self.bot_filter: # if config.filter_ai_warning and self.bot_filter:
import re # import re
match = re.search(self.bot_filter['reg'], res_ans) # match = re.search(self.bot_filter['reg'], res_ans)
logging.debug(self.bot_filter) # logging.debug(self.bot_filter)
logging.debug(res_ans) # logging.debug(res_ans)
if match: # if match:
logging.debug('回复:{} 检测到人格否定,替换中。。'.format(res_ans)) # logging.debug('回复:{} 检测到人格否定,替换中。。'.format(res_ans))
res_ans = self.bot_filter['replace'] # res_ans = self.bot_filter['replace']
logging.debug('替换为: {}'.format(res_ans)) # logging.debug('替换为: {}'.format(res_ans))
# 将此次对话的双方内容加入到prompt中 # 将此次对话的双方内容加入到prompt中
self.prompt.append({'role': 'user', 'content': text}) self.prompt.append({'role': 'user', 'content': text})
self.prompt.append({'role': 'assistant', 'content': res_ans}) self.prompt.append({'role': 'assistant', 'content': res_ans})