This commit is contained in:
SengokuCola
2025-04-24 23:45:49 +08:00
parent af08ef9b04
commit 3ab3979047
6 changed files with 117 additions and 130 deletions

View File

@@ -595,12 +595,12 @@ class HeartFChatting:
self, observed_messages_str: str, current_mind: Optional[str], structured_info: Dict[str, Any]
) -> str:
"""构建 Planner LLM 的提示词"""
# 准备结构化信息块
structured_info_block = ""
if structured_info:
structured_info_block = f"以下是一些额外的信息:\n{structured_info}\n"
# 准备聊天内容块
chat_content_block = ""
if observed_messages_str:
@@ -609,14 +609,14 @@ class HeartFChatting:
chat_content_block += "\n---"
else:
chat_content_block = "当前没有观察到新的聊天内容。\n"
# 准备当前思维块
current_mind_block = ""
if current_mind:
current_mind_block = f"\n---\n{current_mind}\n---\n\n"
else:
current_mind_block = " [没有特别的想法] \n\n"
# 获取提示词模板并填充数据
prompt = (await global_prompt_manager.get_prompt_async("planner_prompt")).format(
bot_name=global_config.BOT_NICKNAME,
@@ -624,7 +624,7 @@ class HeartFChatting:
chat_content_block=chat_content_block,
current_mind_block=current_mind_block,
)
return prompt
# --- 回复器 (Replier) 的定义 --- #

View File

@@ -78,7 +78,7 @@ class HeartFCGenerator:
) -> str:
info_catcher = info_catcher_manager.get_info_catcher(thinking_id)
with Timer() as t_build_prompt:
with Timer() as _t_build_prompt:
prompt = await prompt_builder.build_prompt(
build_mode="focus",
reason=reason,

View File

@@ -38,7 +38,7 @@ def init_prompt():
{moderation_prompt}。注意:回复不要输出多余内容(包括前后缀冒号和引号括号表情包at或 @等 )。""",
"heart_flow_prompt",
)
# Planner提示词
Prompt(
"""你的名字是 {bot_name}。是一个女大二学生正在QQ聊天正在决定是否以及如何回应当前的聊天。
@@ -62,7 +62,7 @@ def init_prompt():
必须调用 'decide_reply_action' 工具并提供 'action''reasoning'。如果选择了 'emoji_reply' 或者选择了 'text_reply' 并想追加表情,则必须提供 'emoji_query'""",
"planner_prompt",
)
Prompt("你正在qq群里聊天下面是群里在聊的内容", "chat_target_group1")
Prompt("和群里聊天", "chat_target_group2")
Prompt("你正在和{sender_name}聊天,这是你们之前聊的内容:", "chat_target_private1")
@@ -122,13 +122,14 @@ class PromptBuilder:
elif build_mode == "focus":
return await self._build_prompt_focus(
reason, current_mind_info, structured_info, chat_stream,
reason,
current_mind_info,
structured_info,
chat_stream,
)
return None
async def _build_prompt_focus(
self, reason, current_mind_info, structured_info, chat_stream
) -> tuple[str, str]:
async def _build_prompt_focus(self, reason, current_mind_info, structured_info, chat_stream) -> tuple[str, str]:
individuality = Individuality.get_instance()
prompt_personality = individuality.get_prompt(type="personality", x_person=2, level=1)
prompt_identity = individuality.get_prompt(type="identity", x_person=2, level=1)

View File

@@ -402,7 +402,7 @@ class NormalChat:
# 确保任务状态更新,即使等待出错 (回调函数也会尝试更新)
if self._chat_task is task:
self._chat_task = None
# 清理所有未处理的思考消息
try:
container = await message_manager.get_container(self.stream_id)