prompt格式化

pull/937/head
114514 2025-05-13 01:59:27 +08:00
parent 428a8c9f77
commit d528f7c7a8
2 changed files with 84 additions and 49 deletions

View File

@ -63,7 +63,7 @@ def init_prompt():
5. 如果你刚发言并且没有人回复你请谨慎考虑要不要继续发消息
6. 不要把注意力放在别人发的表情包上它们只是一种辅助表达方式
7. 注意分辨群里谁在跟谁说话你不一定是当前聊天的主角消息中的不一定指的是你{bot_name}也可能是别人
8. 思考要不要回复或发言如果要必须思考一下具体说什么怎么说
8. 思考要不要回复或发言如果要必须思考一下**具体说什么**怎么说
9. 默认使用中文
</output_requirements_for_inner_thought>
@ -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

View File

@ -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}
"""
<planner_task_definition>
现在{bot_name}开始在一个qq群聊中专注聊天你需要操控{bot_name}并且根据以下信息决定是否如何参与对话
</planner_task_definition>
请综合分析聊天内容和你看到的新消息参考{bot_name}的内心想法并根据以下原则和可用动作灵活谨慎的做出决策需要符合正常的群聊社交节奏
<contextual_information>
<identity>
<bot_name>{bot_name}</bot_name>
<group_nicknames>{nickname_info}</group_nicknames>
</identity>
<live_chat_context>
<chat_log>{chat_content_block}</chat_log>
</live_chat_context>
<internal_state>
<current_thoughts>{current_mind_block}</current_thoughts>
<recent_action_history>{cycle_info_block}</recent_action_history>
</internal_state>
</contextual_information>
决策指导
1. 以下情况可以不发送新消息(no_reply)
- {bot_name}的内心想法表达不想发言
- 话题似乎对{bot_name}来说无关/无聊/不感兴趣
- 现在说话不太合适了
- 最后一条消息是{bot_name}自己发的且无人回应{bot_name}
- 讨论不了解的专业话题或你不知道的梗且对{bot_name}来说似乎没那么重要
- {bot_name}发送了太多消息且无人回复
<decision_framework>
<guidance>
请综合分析聊天内容和你看到的新消息参考{bot_name}的内心想法并根据以下原则和可用动作灵活谨慎的做出决策需要符合正常的群聊社交节奏
</guidance>
2. 以下情况可以发送文字消息(text_reply)
- 确认内心想法显示{bot_name}想要发言且有实质内容想表达
- 同时确认现在适合发言
- 可以追加emoji_query表达情绪(emoji_query填写表情包的适用场合也就是当前场合)
- 不要追加太多表情
<decision_principles>
<principle_no_reply>
1. 以下情况可以不发送新消息(no_reply)
- {bot_name}的内心想法表达不想发言
- 话题似乎对{bot_name}来说无关/无聊/不感兴趣
- 现在说话不太合适了
- 最后一条消息是{bot_name}自己发的且无人回应{bot_name}
- 讨论不了解的专业话题或你不知道的梗且对{bot_name}来说似乎没那么重要
- {bot_name}发送了太多消息且无人回复
- 特殊情况{bot_name}的内心想法返回错误/无返回
</principle_no_reply>
3. 发送纯表情(emoji_reply)适用
- {bot_name}似乎想加入话题或继续讨论但是似乎又没什么实质表达内容
- 适合用表情回应的场景
- 需提供明确的emoji_query
- 群聊里的大家都在发表情包
<principle_text_reply>
2. 以下情况可以发送文字消息(text_reply)
- 确认内心想法显示{bot_name}想要发言且有实质内容想表达
- 同时确认现在适合发言
- 可以追加emoji_query表达情绪(emoji_query填写表情包的适用场合也就是当前场合)
- 不要追加太多表情
</principle_text_reply>
4. 对话处理
- 如果最后一条消息是{bot_name}发的而你还想操控{bot_name}继续发消息请确保这是合适的
- 注意话题的推进如果没有必要不要揪着一个话题不放
- 不要让{bot_name}自己和自己聊天
<principle_emoji_reply>
3. 发送纯表情(emoji_reply)适用
- {bot_name}似乎想加入话题或继续讨论但是似乎又没什么实质表达内容
- 适合用表情回应的场景
- 需提供明确的emoji_query
- 群聊里除了{bot_name}以外的大家都在发表情包
</principle_emoji_reply>
决策任务
{action_options_text}
<principle_dialogue_management>
4. 对话处理
- 如果最后一条消息是{bot_name}发的而你还想操控{bot_name}继续发消息请确保这是合适的
- 注意话题的推进如果没有必要不要揪着一个话题不放
- 不要让{bot_name}自己和自己聊天
</principle_dialogue_management>
</decision_principles>
你必须从上面列出的可用行动中选择一个并说明原因
你的决策必须以严格的 JSON 格式输出且仅包含 JSON 内容不要有任何其他文字或解释
JSON 结构如下包含三个字段 "action", "reasoning", "emoji_query":
{{
"action": "string", // 必须是上面提供的可用行动之一 (例如: '{example_action}')
"reasoning": "string", // 做出此决定的详细理由和思考过程说明你如何应用了回复原则
"emoji_query": "string" // 可选如果行动是 'emoji_reply'必须提供表情主题(填写表情包的适用场合)如果行动是 'text_reply' 且你想附带表情也在此提供表情主题否则留空字符串 ""遵循回复原则不要滥用
}}
请输出你的决策 JSON
<available_actions>
决策任务
{action_options_text}
</available_actions>
</decision_framework>
<output_requirements>
<format_instruction>
你必须从available_actions列出的可用行动中选择一个并说明原因
你的决策必须以严格的 JSON 格式输出且仅包含 JSON 内容不要有任何其他文字或解释
JSON 结构如下包含三个字段 "action", "reasoning", "emoji_query":
</format_instruction>
<json_structure>
{{
"action": "string", // 必须是上面提供的可用行动之一 (例如: '{example_action}')
"reasoning": "string", // 做出此决定的详细理由和思考过程说明你如何应用了decision_principles
"emoji_query": "string" // 可选如果行动是 'emoji_reply'必须提供表情主题(填写表情包的适用场合)如果行动是 'text_reply' 且你想附带表情也在此提供表情主题否则留空字符串 ""遵循回复原则不要滥用
}}
</json_structure>
<final_request>
请输出你的决策 JSON
</final_request>
</output_requirements>
""",
"planner_prompt",
)