Merge pull request #506 from RockChinQ/perf-persist-dprompt-when-auto-reset

[Perf] 在session自动重置时保留非default的prompt
This commit is contained in:
Junyan Qin
2023-07-07 17:53:29 +08:00
committed by GitHub
2 changed files with 4 additions and 3 deletions

View File

@@ -327,7 +327,7 @@ class Session:
json.dumps(self.prompt), json.dumps(self.default_prompt), json.dumps(self.token_counts))
# 重置session
def reset(self, explicit: bool = False, expired: bool = False, schedule_new: bool = True, use_prompt: str = None):
def reset(self, explicit: bool = False, expired: bool = False, schedule_new: bool = True, use_prompt: str = None, persist: bool = False):
if self.prompt:
self.persistence()
if explicit:
@@ -345,7 +345,8 @@ class Session:
if expired:
pkg.utils.context.get_database_manager().set_session_expired(self.name, self.create_timestamp)
self.default_prompt = self.get_default_prompt(use_prompt)
if not persist: # 不要求保持default prompt
self.default_prompt = self.get_default_prompt(use_prompt)
self.prompt = []
self.token_counts = []
self.create_timestamp = int(time.time())

View File

@@ -115,7 +115,7 @@ def process_normal_message(text_message: str, mgr, config, launcher_type: str,
"[bot]err:RateLimitError,请重试或联系作者,或等待修复")
except openai.error.InvalidRequestError as e:
if config.auto_reset and "This model's maximum context length is" in str(e):
session.reset()
session.reset(persist=True)
reply = [tips_custom.session_auto_reset_message]
else:
reply = handle_exception("{}API调用参数错误:{}\n".format(