From 0e7086765fe5375cbda82822e8d600e5621d50f6 Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Fri, 10 Oct 2025 16:26:11 +0800 Subject: [PATCH] =?UTF-8?q?refactor(chat):=20=E4=BC=98=E5=8C=96=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E6=97=A5=E5=BF=97=E4=B8=8E=E5=88=86=E6=AE=B5=E5=9B=9E?= =?UTF-8?q?=E5=A4=8D=E6=8F=90=E7=A4=BA=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 本次提交主要包含两项优化: 1. **聊天日志增强**: 在接收消息的日志中增加了聊天来源(群聊名称或“私聊”),方便在后台快速定位消息上下文。 2. **分段回复优化**: 简化并明确了分段回复的 LLM 提示词,引导模型生成更自然、简短的回复分段,以改善对话的节奏感。 --- src/chat/message_receive/bot.py | 3 ++- src/chat/replyer/default_generator.py | 15 ++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/chat/message_receive/bot.py b/src/chat/message_receive/bot.py index 318c503c4..f1145b31f 100644 --- a/src/chat/message_receive/bot.py +++ b/src/chat/message_receive/bot.py @@ -420,8 +420,9 @@ class ChatBot: await message.process() # 在这里打印[所见]日志,确保在所有处理和过滤之前记录 + chat_name = chat.group_info.group_name if chat.group_info else "私聊" logger.info( - f"\u001b[38;5;118m{message.message_info.user_info.user_nickname}:{message.processed_plain_text}\u001b[0m" + f"[{chat_name}]{message.message_info.user_info.user_nickname}:{message.processed_plain_text}\u001b[0m" ) # 过滤检查 diff --git a/src/chat/replyer/default_generator.py b/src/chat/replyer/default_generator.py index 8b6c96cff..23c56456a 100644 --- a/src/chat/replyer/default_generator.py +++ b/src/chat/replyer/default_generator.py @@ -1439,18 +1439,15 @@ class DefaultReplyer: if global_config.response_splitter.enable and global_config.response_splitter.split_mode == "llm": split_instruction = """ ## 消息分段指导 -为了模仿人类自然的聊天节奏,你需要将回复模拟成多段发送,就像在打字时进行思考和停顿一样。 +你的任务是将回复分割成多段发送,以模仿人类自然、富有节奏感的聊天方式。 -**核心指导**: -- **分段倾向**: **默认情况下,你应该积极地寻找分段点**。只有在内容逻辑上完全不可分割,或者必须作为一整个长句来表达强烈情感时,才选择不分段。大多数情况下,都应保持简短、自然的对话节奏。 -- **逻辑断点**: 在一个想法说完,准备开始下一个想法时,是分段的好时机。 -- **情绪转折**: 当情绪发生变化,比如从开心到担忧时,可以通过分段来体现。 -- **强调信息**: 在需要强调某段关键信息前后,可以使用分段来突出它。 -- **标点符号处理**: `[SPLIT]` 标记自身就起到了断句的作用,因此在插入 `[SPLIT]` 的位置,如果前面是逗号、句号等标点,请**删除**那个标点符号,避免出现 “内容,[SPLIT]” 这样的情况。 -- **控制节奏**: 保持分段的平衡,避免过长或过碎。如果一句话很短或逻辑紧密,则不应分段。 +**核心要点**: +- **分段核心**: 在一个相对独立的想法说完后,就插入 `[SPLIT]` 进行分段。这就像真人在聊天时,说完一小句就按下发送键一样。 +- **倾向短句**: 请优先将回复组织成更短的句子分段发送,这样能让对话显得更轻松、自然。 +- **标点处理**: `[SPLIT]` 标记本身就代表了停顿,所以在插入它的位置,请确保删除了前面的逗号、句号等标点符号。 **任务**: -请基于以上指导,并结合你的智慧和人设,像一个真人在聊天一样,自然地决定在哪里插入 `[SPLIT]` 标记以进行分段。 +请基于以上要点,像一个真人在聊天一样,自然地决定在哪里插入 `[SPLIT]` 标记以进行分段。 """ # 将分段指令添加到提示词顶部 prompt_text = f"{split_instruction}\n{prompt_text}"