From 99e744743050d99b73bb71bd7fa1f365c4ea4258 Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Wed, 29 Oct 2025 17:33:02 +0800 Subject: [PATCH] =?UTF-8?q?fix(chat):=20=E6=B8=85=E7=90=86=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E6=84=8F=E5=A4=96=E7=94=9F=E6=88=90=E7=9A=84=E5=9B=9E?= =?UTF-8?q?=E5=A4=8D=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 部分语言模型在生成回复时,会自行在内容开头添加如 `[回复<用户>的消息:]` 格式的回复头,这会导致最终消息中出现重复或格式错误的头部。 此提交通过正则表达式循环移除这些多余的回复头,确保输出内容整洁。 --- src/chat/replyer/default_generator.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/chat/replyer/default_generator.py b/src/chat/replyer/default_generator.py index 334422076..909e79ea0 100644 --- a/src/chat/replyer/default_generator.py +++ b/src/chat/replyer/default_generator.py @@ -1884,6 +1884,19 @@ class DefaultReplyer: prompt ) + if content: + # 循环移除,防止模型生成多个回复头 + cleaned_content = content + while True: + new_content = re.sub(r"^\s*\[回复<[^>]+>\s*的消息:[^\]]+\]\s*", "", cleaned_content).lstrip() + if new_content == cleaned_content: + break + cleaned_content = new_content + + if cleaned_content != content: + logger.debug(f"移除了模型自行生成的回复头,原始内容: '{content}', 清理后: '{cleaned_content}'") + content = cleaned_content + logger.debug(f"replyer生成内容: {content}") return content, reasoning_content, model_name, tool_calls