From 94d3d0ad0556614cc9c4ea3a69fc1f1ba1522402 Mon Sep 17 00:00:00 2001 From: 114514 <2514624910@qq.com> Date: Wed, 14 May 2025 21:01:30 +0800 Subject: [PATCH] =?UTF-8?q?sub=20mind=E5=8A=A0=E5=85=A5=E7=BB=B0=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Legacy_HFC/heart_flow/sub_mind.py | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/experimental/Legacy_HFC/heart_flow/sub_mind.py b/src/experimental/Legacy_HFC/heart_flow/sub_mind.py index 34f94578..3c8fc80a 100644 --- a/src/experimental/Legacy_HFC/heart_flow/sub_mind.py +++ b/src/experimental/Legacy_HFC/heart_flow/sub_mind.py @@ -3,6 +3,7 @@ from src.chat.knowledge.knowledge_lib import qa_manager from src.chat.models.utils_model import LLMRequest from src.config.config import global_config from src.chat.utils.chat_message_builder import get_raw_msg_before_timestamp_with_chat, build_readable_messages +from src.plugins.group_nickname.nickname_manager import nickname_manager import time import re import traceback @@ -32,6 +33,10 @@ def init_prompt(): {prompt_personality} + +{nickname_info} + + {extra_info} {relation_prompt} @@ -561,9 +566,25 @@ class SubMind: # ---------- 5. 构建最终提示词 ---------- # --- Choose template based on chat type --- - logger.debug(f"is_group_chat: {is_group_chat}") + nickname_injection_str = "" # 初始化为空字符串 + if is_group_chat: template_name = "sub_heartflow_prompt_before" + + chat_stream = await chat_manager.get_stream(self.subheartflow_id) + if not chat_stream: + logger.error(f"{self.log_prefix} 无法获取 chat_stream,无法生成绰号信息。") + nickname_injection_str = "[获取群成员绰号信息失败]" + else: + message_list_for_nicknames = get_raw_msg_before_timestamp_with_chat( + chat_id=self.subheartflow_id, + timestamp=time.time(), + limit=global_config.observation_context_size, + ) + nickname_injection_str = await nickname_manager.get_nickname_prompt_injection( + chat_stream, message_list_for_nicknames + ) + prompt = (await global_prompt_manager.get_prompt_async(template_name)).format( extra_info=self.structured_info_str, prompt_personality=prompt_personality, @@ -575,6 +596,7 @@ class SubMind: hf_do_next=hf_do_next, last_loop_prompt=last_loop_prompt, cycle_info_block=cycle_info_block, + nickname_info=nickname_injection_str, # chat_target_name is not used in group prompt ) else: # Private chat