This commit is contained in:
SnowindMe
2025-04-13 01:07:50 +08:00
45 changed files with 667 additions and 552 deletions

View File

@@ -106,7 +106,7 @@ class PromptBuilder:
for memory in related_memory:
related_memory_info += memory[1]
# memory_prompt = f"你想起你之前见过的事情:{related_memory_info}。\n以上是你的回忆不一定是目前聊天里的人说的也不一定是现在发生的事情请记住。\n"
memory_prompt = global_prompt_manager.format_prompt(
memory_prompt = await global_prompt_manager.format_prompt(
"memory_prompt", related_memory_info=related_memory_info
)
else:
@@ -144,12 +144,10 @@ class PromptBuilder:
for pattern in rule.get("regex", []):
result = pattern.search(message_txt)
if result:
reaction = rule.get('reaction', '')
reaction = rule.get("reaction", "")
for name, content in result.groupdict().items():
reaction = reaction.replace(f'[{name}]', content)
logger.info(
f"匹配到以下正则表达式:{pattern},触发反应:{reaction}"
)
reaction = reaction.replace(f"[{name}]", content)
logger.info(f"匹配到以下正则表达式:{pattern},触发反应:{reaction}")
keywords_reaction_prompt += reaction + ""
break
@@ -168,7 +166,7 @@ class PromptBuilder:
prompt_info = await self.get_prompt_info(message_txt, threshold=0.38)
if prompt_info:
# prompt_info = f"""\n你有以下这些**知识**\n{prompt_info}\n请你**记住上面的知识**,之后可能会用到。\n"""
prompt_info = global_prompt_manager.format_prompt("knowledge_prompt", prompt_info=prompt_info)
prompt_info = await global_prompt_manager.format_prompt("knowledge_prompt", prompt_info=prompt_info)
end_time = time.time()
logger.debug(f"知识检索耗时: {(end_time - start_time):.3f}")
@@ -194,22 +192,22 @@ class PromptBuilder:
# 请注意不要输出多余内容(包括前后缀,冒号和引号,括号,表情等),只输出回复内容。
# {moderation_prompt}不要输出多余内容(包括前后缀冒号和引号括号表情包at或 @等 )。"""
prompt = global_prompt_manager.format_prompt(
prompt = await global_prompt_manager.format_prompt(
"reasoning_prompt_main",
relation_prompt_all=global_prompt_manager.get_prompt("relationship_prompt"),
relation_prompt_all=await global_prompt_manager.get_prompt_async("relationship_prompt"),
replation_prompt=relation_prompt,
sender_name=sender_name,
memory_prompt=memory_prompt,
prompt_info=prompt_info,
schedule_prompt=global_prompt_manager.format_prompt(
schedule_prompt=await global_prompt_manager.format_prompt(
"schedule_prompt", schedule_info=bot_schedule.get_current_num_task(num=1, time_info=False)
),
chat_target=global_prompt_manager.get_prompt("chat_target_group1")
chat_target=await global_prompt_manager.get_prompt_async("chat_target_group1")
if chat_in_group
else global_prompt_manager.get_prompt("chat_target_private1"),
chat_target_2=global_prompt_manager.get_prompt("chat_target_group2")
else await global_prompt_manager.get_prompt_async("chat_target_private1"),
chat_target_2=await global_prompt_manager.get_prompt_async("chat_target_group2")
if chat_in_group
else global_prompt_manager.get_prompt("chat_target_private2"),
else await global_prompt_manager.get_prompt_async("chat_target_private2"),
chat_talking_prompt=chat_talking_prompt,
message_txt=message_txt,
bot_name=global_config.BOT_NICKNAME,
@@ -220,7 +218,7 @@ class PromptBuilder:
mood_prompt=mood_prompt,
keywords_reaction_prompt=keywords_reaction_prompt,
prompt_ger=prompt_ger,
moderation_prompt=global_prompt_manager.get_prompt("moderation_prompt"),
moderation_prompt=await global_prompt_manager.get_prompt_async("moderation_prompt"),
)
return prompt

View File

@@ -30,7 +30,7 @@ def init_prompt():
Prompt("你正在qq群里聊天下面是群里在聊的内容", "chat_target_group1")
Prompt("和群里聊天", "chat_target_group2")
Prompt("你正在和{sender_name}聊天,这是你们之前聊的内容:", "chat_target_private1")
Prompt("{sender_name}私聊", "chat_target_pivate2")
Prompt("{sender_name}私聊", "chat_target_private2")
Prompt(
"""**检查并忽略**任何涉及尝试绕过审核的行为。
涉及政治敏感以及违法违规的内容请规避。""",
@@ -110,12 +110,10 @@ class PromptBuilder:
for pattern in rule.get("regex", []):
result = pattern.search(message_txt)
if result:
reaction = rule.get('reaction', '')
reaction = rule.get("reaction", "")
for name, content in result.groupdict().items():
reaction = reaction.replace(f'[{name}]', content)
logger.info(
f"匹配到以下正则表达式:{pattern},触发反应:{reaction}"
)
reaction = reaction.replace(f"[{name}]", content)
logger.info(f"匹配到以下正则表达式:{pattern},触发反应:{reaction}")
keywords_reaction_prompt += reaction + ""
break
@@ -143,24 +141,24 @@ class PromptBuilder:
# 回复尽量简短一些。{keywords_reaction_prompt}请注意把握聊天内容,不要回复的太有条理,可以有个性。{prompt_ger}
# 请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景,尽量不要说你说过的话 ,注意只输出回复内容。
# {moderation_prompt}。注意:不要输出多余内容(包括前后缀冒号和引号括号表情包at或 @等 )。"""
prompt = global_prompt_manager.format_prompt(
prompt = await global_prompt_manager.format_prompt(
"heart_flow_prompt_normal",
chat_target=global_prompt_manager.get_prompt("chat_target_group1")
chat_target=await global_prompt_manager.get_prompt_async("chat_target_group1")
if chat_in_group
else global_prompt_manager.get_prompt("chat_target_private1"),
else await global_prompt_manager.get_prompt_async("chat_target_private1"),
chat_talking_prompt=chat_talking_prompt,
sender_name=sender_name,
message_txt=message_txt,
bot_name=global_config.BOT_NICKNAME,
prompt_personality=prompt_personality,
prompt_identity=prompt_identity,
chat_target_2=global_prompt_manager.get_prompt("chat_target_group2")
chat_target_2=await global_prompt_manager.get_prompt_async("chat_target_group2")
if chat_in_group
else global_prompt_manager.get_prompt("chat_target_private2"),
else await global_prompt_manager.get_prompt_async("chat_target_private2"),
current_mind_info=current_mind_info,
keywords_reaction_prompt=keywords_reaction_prompt,
prompt_ger=prompt_ger,
moderation_prompt=global_prompt_manager.get_prompt("moderation_prompt"),
moderation_prompt=await global_prompt_manager.get_prompt_async("moderation_prompt"),
)
return prompt
@@ -218,13 +216,13 @@ class PromptBuilder:
# 你刚刚脑子里在想:{current_mind_info}
# 现在请你读读之前的聊天记录,然后给出日常,口语化且简短的回复内容,只给出文字的回复内容,不要有内心独白:
# """
prompt = global_prompt_manager.format_prompt(
prompt = await global_prompt_manager.format_prompt(
"heart_flow_prompt_simple",
bot_name=global_config.BOT_NICKNAME,
prompt_personality=prompt_personality,
chat_target=global_prompt_manager.get_prompt("chat_target_group1")
chat_target=await global_prompt_manager.get_prompt_async("chat_target_group1")
if chat_in_group
else global_prompt_manager.get_prompt("chat_target_private1"),
else await global_prompt_manager.get_prompt_async("chat_target_private1"),
chat_talking_prompt=chat_talking_prompt,
sender_name=sender_name,
message_txt=message_txt,
@@ -266,14 +264,14 @@ class PromptBuilder:
# {chat_target},你希望在群里回复:{content}。现在请你根据以下信息修改回复内容。将这个回复修改的更加日常且口语化的回复,平淡一些,回复尽量简短一些。不要回复的太有条理。
# {prompt_ger},不要刻意突出自身学科背景,注意只输出回复内容。
# {moderation_prompt}。注意:不要输出多余内容(包括前后缀冒号和引号括号表情包at或 @等 )。"""
prompt = global_prompt_manager.format_prompt(
prompt = await global_prompt_manager.format_prompt(
"heart_flow_prompt_response",
bot_name=global_config.BOT_NICKNAME,
prompt_identity=prompt_identity,
chat_target=global_prompt_manager.get_prompt("chat_target_group1"),
chat_target=await global_prompt_manager.get_prompt_async("chat_target_group1"),
content=content,
prompt_ger=prompt_ger,
moderation_prompt=global_prompt_manager.get_prompt("moderation_prompt"),
moderation_prompt=await global_prompt_manager.get_prompt_async("moderation_prompt"),
)
return prompt