diff --git a/src/heart_flow/sub_mind.py b/src/heart_flow/sub_mind.py index 56086233..f5e99460 100644 --- a/src/heart_flow/sub_mind.py +++ b/src/heart_flow/sub_mind.py @@ -63,7 +63,7 @@ def init_prompt(): 5. 如果你刚发言,并且没有人回复你,请谨慎考虑要不要继续发消息 6. 不要把注意力放在别人发的表情包上,它们只是一种辅助表达方式 7. 注意分辨群里谁在跟谁说话,你不一定是当前聊天的主角,消息中的“你”不一定指的是你({bot_name}),也可能是别人 -8. 思考要不要回复或发言,如果要,必须思考一下具体说什么,怎么说 +8. 思考要不要回复或发言,如果要,必须思考一下**具体说什么**,怎么说 9. 默认使用中文 @@ -476,13 +476,11 @@ class SubMind: # 思考指导选项和权重 hf_options = [ - ( - "可以参考之前的想法,在原来想法的基础上继续思考,但是也要注意话题的推进,不要在一个话题上停留太久,除非你觉得真的有必要", - 0.3, - ), - ("可以参考之前的想法,在原来的想法上尝试新的话题", 0.3), - ("不要太深入,注意话题的推进,不要在一个话题上停留太久,除非你觉得真的有必要", 0.2), - ("进行深入思考,但是注意话题的推进,不要在一个话题上停留太久,除非你觉得真的有必要", 0.2), + ("可以参考之前的想法,在原来想法的基础上继续思考,但是也要注意话题的推进,**不要在一个话题上停留太久或揪着一个话题不放,除非你觉得真的有必要**",0.3,), + ("可以参考之前的想法,在原来的想法上**尝试新的话题**", 0.3), + ("不要太深入,注意话题的推进,**不要在一个话题上停留太久或揪着一个话题不放,除非你觉得真的有必要**", 0.2), + ("进行深入思考,但是注意话题的推进,**不要在一个话题上停留太久或揪着一个话题不放,除非你觉得真的有必要**", 0.2), + ("可以参考之前的想法继续思考,并结合你自身的人设,知识,信息,回忆等等", 0.08), ] last_cycle = history_cycle[-1] if history_cycle else None diff --git a/src/plugins/heartFC_chat/heartflow_prompt_builder.py b/src/plugins/heartFC_chat/heartflow_prompt_builder.py index f6391386..e4d8037c 100644 --- a/src/plugins/heartFC_chat/heartflow_prompt_builder.py +++ b/src/plugins/heartFC_chat/heartflow_prompt_builder.py @@ -35,7 +35,7 @@ def init_prompt(): {current_mind_info} 因为上述想法,你决定发言。 -现在请你读读之前的聊天记录,把你的想法组织成合适语言,然后发一条消息,可以自然随意一些,简短一些,就像群聊里的真人一样,注意把握聊天内容,整体风格可以平和、简短,范围避免超出你的内心想法 +现在请你读读之前的聊天记录,把你的想法组织成合适的语言,然后发一条消息,可以自然随意一些,简短一些,就像群聊里的真人一样,注意把握聊天内容,整体风格可以平和、简短,避免超出你内心想法的范围 这条消息可以尽量简短一些。{reply_style2}。请一次只回复一个话题,不要同时回复多个人。{prompt_ger} {reply_style1},说中文,不要刻意突出自身学科背景,注意只输出消息内容,不要去主动讨论或评价别人发的表情包,它们只是一种辅助表达方式。 {moderation_prompt}。注意:回复不要输出多余内容(包括前后缀,冒号和引号,括号,表情包,at或 @等 )。""", @@ -46,60 +46,97 @@ def init_prompt(): """ 你有以下信息可供参考: {structured_info} -以上的消息是你获取到的消息,或许可以帮助你更好地回复。 +以上的信息是你获取到的消息,或许可以帮助你更好地回复。 """, "info_from_tools", ) # Planner提示词 - 修改为要求 JSON 输出 Prompt( - """现在{bot_name}开始在一个qq群聊中专注聊天。你需要操控{bot_name},并且根据以下消息决定是否,如何参与对话: -{nickname_info} -{chat_content_block} -{current_mind_block} -{cycle_info_block} + """ + +现在{bot_name}开始在一个qq群聊中专注聊天。你需要操控{bot_name},并且根据以下信息决定是否,如何参与对话。 + -请综合分析聊天内容和你看到的新消息,参考{bot_name}的内心想法,并根据以下原则和可用动作灵活谨慎的做出决策,需要符合正常的群聊社交节奏。 + + + {bot_name} + {nickname_info} + + + {chat_content_block} + + + {current_mind_block} + {cycle_info_block} + + -【决策指导】 -1. 以下情况可以不发送新消息(no_reply): -- {bot_name}的内心想法表达不想发言 -- 话题似乎对{bot_name}来说无关/无聊/不感兴趣 -- 现在说话不太合适了 -- 最后一条消息是{bot_name}自己发的且无人回应{bot_name} -- 讨论不了解的专业话题,或你不知道的梗,且对{bot_name}来说似乎没那么重要。 -- {bot_name}发送了太多消息,且无人回复 + + + 请综合分析聊天内容和你看到的新消息,参考{bot_name}的内心想法,并根据以下原则和可用动作灵活谨慎的做出决策,需要符合正常的群聊社交节奏。 + -2. 以下情况可以发送文字消息(text_reply): -- 确认内心想法显示{bot_name}想要发言,且有实质内容想表达 -- 同时确认现在适合发言 -- 可以追加emoji_query表达情绪(emoji_query填写表情包的适用场合,也就是当前场合) -- 不要追加太多表情 + + + 1. 以下情况可以不发送新消息(no_reply): + - {bot_name}的内心想法表达不想发言 + - 话题似乎对{bot_name}来说无关/无聊/不感兴趣 + - 现在说话不太合适了 + - 最后一条消息是{bot_name}自己发的且无人回应{bot_name} + - 讨论不了解的专业话题,或你不知道的梗,且对{bot_name}来说似乎没那么重要 + - {bot_name}发送了太多消息,且无人回复 + - (特殊情况){bot_name}的内心想法返回错误/无返回 + -3. 发送纯表情(emoji_reply)适用: -- {bot_name}似乎想加入话题或继续讨论,但是似乎又没什么实质表达内容 -- 适合用表情回应的场景 -- 需提供明确的emoji_query -- 群聊里的大家都在发表情包 + + 2. 以下情况可以发送文字消息(text_reply): + - 确认内心想法显示{bot_name}想要发言,且有实质内容想表达 + - 同时确认现在适合发言 + - 可以追加emoji_query表达情绪(emoji_query填写表情包的适用场合,也就是当前场合) + - 不要追加太多表情 + -4. 对话处理: -- 如果最后一条消息是{bot_name}发的,而你还想操控{bot_name}继续发消息,请确保这是合适的 -- 注意话题的推进,如果没有必要,不要揪着一个话题不放。 -- 不要让{bot_name}自己和自己聊天 + + 3. 发送纯表情(emoji_reply)适用: + - {bot_name}似乎想加入话题或继续讨论,但是似乎又没什么实质表达内容 + - 适合用表情回应的场景 + - 需提供明确的emoji_query + - 群聊里除了{bot_name}以外的大家都在发表情包 + -决策任务 -{action_options_text} + + 4. 对话处理: + - 如果最后一条消息是{bot_name}发的,而你还想操控{bot_name}继续发消息,请确保这是合适的 + - 注意话题的推进,如果没有必要,不要揪着一个话题不放。 + - 不要让{bot_name}自己和自己聊天 + + -你必须从上面列出的可用行动中选择一个,并说明原因。 -你的决策必须以严格的 JSON 格式输出,且仅包含 JSON 内容,不要有任何其他文字或解释。 -JSON 结构如下,包含三个字段 "action", "reasoning", "emoji_query": -{{ - "action": "string", // 必须是上面提供的可用行动之一 (例如: '{example_action}') - "reasoning": "string", // 做出此决定的详细理由和思考过程,说明你如何应用了回复原则 - "emoji_query": "string" // 可选。如果行动是 'emoji_reply',必须提供表情主题(填写表情包的适用场合);如果行动是 'text_reply' 且你想附带表情,也在此提供表情主题,否则留空字符串 ""。遵循回复原则,不要滥用。 -}} -请输出你的决策 JSON: + + 决策任务 + {action_options_text} + + + + + + 你必须从available_actions列出的可用行动中选择一个,并说明原因。 + 你的决策必须以严格的 JSON 格式输出,且仅包含 JSON 内容,不要有任何其他文字或解释。 + JSON 结构如下,包含三个字段 "action", "reasoning", "emoji_query": + + + {{ + "action": "string", // 必须是上面提供的可用行动之一 (例如: '{example_action}') + "reasoning": "string", // 做出此决定的详细理由和思考过程,说明你如何应用了decision_principles。 + "emoji_query": "string" // 可选。如果行动是 'emoji_reply',必须提供表情主题(填写表情包的适用场合);如果行动是 'text_reply' 且你想附带表情,也在此提供表情主题,否则留空字符串 ""。遵循回复原则,不要滥用。 + }} + + + 请输出你的决策 JSON: + + """, "planner_prompt", )