From 7a8d01f8e02968abb09a858d7026d16281519590 Mon Sep 17 00:00:00 2001 From: madoka315 <72589546+madoka315@users.noreply.github.com> Date: Thu, 23 Oct 2025 23:29:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BA=E5=86=85=E7=BD=AE=E9=A2=91?= =?UTF-8?q?=E7=8E=87=E8=B0=83=E6=95=B4=E6=B7=BB=E5=8A=A0=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=AF=8D=E5=92=8C=E7=BA=A6=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 此commit用于:解决实践中部分模型经常会输出一大段内容,其中包含“过于频繁”关键字,从而导致内置频率调整器误调整的问题。 --- .../frequency_control/frequency_control.py | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/chat/frequency_control/frequency_control.py b/src/chat/frequency_control/frequency_control.py index 0997ec0c..dfa5a616 100644 --- a/src/chat/frequency_control/frequency_control.py +++ b/src/chat/frequency_control/frequency_control.py @@ -21,6 +21,10 @@ def init_prompt(): 如果用户觉得你的发言过于频繁,请输出"过于频繁",否则输出"正常" 如果用户觉得你的发言过少,请输出"过少",否则输出"正常" +**你只能输出以下三个词之一,不要输出任何其他文字、解释或标点:** +- 正常 +- 过于频繁 +- 过少 """, "frequency_adjust_prompt", ) @@ -103,13 +107,18 @@ class FrequencyControl: logger.info(f"频率调整 reasoning_content: {reasoning_content}") final_value_by_api = frequency_api.get_current_talk_value(self.chat_id) - if "过于频繁" in response: - logger.info(f"频率调整: 过于频繁,调整值到{final_value_by_api}") - self.talk_frequency_adjust = max(0.1, min(3.0, self.talk_frequency_adjust * 0.8)) - elif "过少" in response: - logger.info(f"频率调整: 过少,调整值到{final_value_by_api}") - self.talk_frequency_adjust = max(0.1, min(3.0, self.talk_frequency_adjust * 1.2)) - self.last_frequency_adjust_time = time.time() + + # LLM依然输出过多内容时取消本次调整。合法最多4个字,但有的模型可能会输出一些markdown换行符等,需要长度宽限 + if len(response) < 20: + if "过于频繁" in response: + logger.info(f"频率调整: 过于频繁,调整值到{final_value_by_api}") + self.talk_frequency_adjust = max(0.1, min(3.0, self.talk_frequency_adjust * 0.8)) + elif "过少" in response: + logger.info(f"频率调整: 过少,调整值到{final_value_by_api}") + self.talk_frequency_adjust = max(0.1, min(3.0, self.talk_frequency_adjust * 1.2)) + self.last_frequency_adjust_time = time.time() + else: + logger.info(f"频率调整:response不符合要求,取消本次调整") class FrequencyControlManager: """频率控制管理器,管理多个聊天流的频率控制实例"""