From 37a30da06898732a84e6319b9269d35573dfff35 Mon Sep 17 00:00:00 2001 From: Rock Chin Date: Mon, 12 Dec 2022 17:21:37 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=94=AF=E6=8C=81=E9=A2=84?= =?UTF-8?q?=E8=AE=BE=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config-template.py | 4 +++- pkg/openai/session.py | 14 ++++++++++---- sensitive.json | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/config-template.py b/config-template.py index b0e3d688..20062827 100644 --- a/config-template.py +++ b/config-template.py @@ -27,8 +27,10 @@ admin_qq = 0 # 请在sensitive.json中添加敏感词 sensitive_word_filter = True -# 每个会话的预设信息 +# 每个会话的预设信息,影响所有会话,无视指令重置 # 可以通过这个字段指定某些情况的回复,可直接用自然语言描述指令 +# 例如: 如果我之后想获取帮助,请你说“输入!help获取帮助” +# 可参考 https://github.com/PlexPt/awesome-chatgpt-prompts-zh default_prompt = "" # OpenAI的completion API的参数 diff --git a/pkg/openai/session.py b/pkg/openai/session.py index b1b50f15..96d8bd6d 100644 --- a/pkg/openai/session.py +++ b/pkg/openai/session.py @@ -51,13 +51,19 @@ def dump_session(session_name: str): del sessions[session_name] +# 从配置文件获取会话预设信息 +def get_default_prompt(): + return "You:{}\nBot:好的\n".format(config.default_prompt) if hasattr(config, 'default_prompt') and \ + config.default_prompt != "" else '' + + # 通用的OpenAI API交互session # session内部保留了对话的上下文, # 收到用户消息后,将上下文提交给OpenAI API生成回复 class Session: name = '' - prompt = '' + prompt = get_default_prompt() user_name = 'You' bot_name = 'Bot' @@ -155,7 +161,7 @@ class Session: # 持久化session def persistence(self): - if self.prompt == '': + if self.prompt == get_default_prompt(): return db_inst = pkg.database.manager.get_inst() @@ -170,14 +176,14 @@ class Session: # 重置session def reset(self, explicit: bool = False, expired: bool = False, schedule_new: bool = True): - if self.prompt != '': + if self.prompt != get_default_prompt(): self.persistence() if explicit: pkg.database.manager.get_inst().explicit_close_session(self.name, self.create_timestamp) if expired: pkg.database.manager.get_inst().set_session_expired(self.name, self.create_timestamp) - self.prompt = '' + self.prompt = get_default_prompt() self.create_timestamp = int(time.time()) self.last_interact_timestamp = int(time.time()) self.just_switched_to_exist_session = False diff --git a/sensitive.json b/sensitive.json index dd7dfa2f..40ebc4df 100644 --- a/sensitive.json +++ b/sensitive.json @@ -33,7 +33,7 @@ "中华民国", "pornhub", "Pornhub", - "youporn", + "[Yy]ou[Pp]orn", "porn", "Porn", "[Xx][Vv]ideos",