feat:s4uprompt模式正式上位
This commit is contained in:
@@ -33,10 +33,11 @@ def init_prompt():
|
|||||||
{time_block}
|
{time_block}
|
||||||
{identity_block}
|
{identity_block}
|
||||||
你现在需要根据聊天内容,选择的合适的action来参与聊天。
|
你现在需要根据聊天内容,选择的合适的action来参与聊天。
|
||||||
{chat_context_description},以下是具体的聊天内容:
|
{chat_context_description},以下是具体的聊天内容
|
||||||
{chat_content_block}
|
{chat_content_block}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{moderation_prompt}
|
{moderation_prompt}
|
||||||
|
|
||||||
现在请你根据{by_what}选择合适的action和触发action的消息:
|
现在请你根据{by_what}选择合适的action和触发action的消息:
|
||||||
|
|||||||
@@ -40,33 +40,7 @@ def init_prompt():
|
|||||||
Prompt("你正在和{sender_name}聊天,这是你们之前聊的内容:", "chat_target_private1")
|
Prompt("你正在和{sender_name}聊天,这是你们之前聊的内容:", "chat_target_private1")
|
||||||
Prompt("在群里聊天", "chat_target_group2")
|
Prompt("在群里聊天", "chat_target_group2")
|
||||||
Prompt("和{sender_name}聊天", "chat_target_private2")
|
Prompt("和{sender_name}聊天", "chat_target_private2")
|
||||||
Prompt("\n你有以下这些**知识**:\n{prompt_info}\n请你**记住上面的知识**,之后可能会用到。\n", "knowledge_prompt")
|
|
||||||
|
|
||||||
Prompt(
|
|
||||||
"""
|
|
||||||
{expression_habits_block}
|
|
||||||
{tool_info_block}
|
|
||||||
{knowledge_prompt}
|
|
||||||
{memory_block}
|
|
||||||
{relation_info_block}
|
|
||||||
{extra_info_block}
|
|
||||||
|
|
||||||
{chat_target}
|
|
||||||
{time_block}
|
|
||||||
{chat_info}
|
|
||||||
{reply_target_block}
|
|
||||||
{identity}
|
|
||||||
|
|
||||||
{action_descriptions}
|
|
||||||
你正在{chat_target_2},你现在的心情是:{mood_state}
|
|
||||||
现在请你读读之前的聊天记录,并给出回复
|
|
||||||
{config_expression_style}。注意不要复读你说过的话
|
|
||||||
{keywords_reaction_prompt}
|
|
||||||
{moderation_prompt}
|
|
||||||
不要浮夸,不要夸张修辞,不要输出多余内容(包括前后缀,冒号和引号,括号(),表情包,at或 @等 )。只输出回复内容""",
|
|
||||||
"default_generator_prompt",
|
|
||||||
)
|
|
||||||
|
|
||||||
Prompt(
|
Prompt(
|
||||||
"""
|
"""
|
||||||
{expression_habits_block}
|
{expression_habits_block}
|
||||||
@@ -114,7 +88,8 @@ def init_prompt():
|
|||||||
{core_dialogue_prompt}
|
{core_dialogue_prompt}
|
||||||
|
|
||||||
{reply_target_block}
|
{reply_target_block}
|
||||||
对方最新发送的内容:{message_txt}
|
|
||||||
|
|
||||||
你现在的心情是:{mood_state}
|
你现在的心情是:{mood_state}
|
||||||
{config_expression_style}
|
{config_expression_style}
|
||||||
注意不要复读你说过的话
|
注意不要复读你说过的话
|
||||||
@@ -781,103 +756,63 @@ class DefaultReplyer:
|
|||||||
# 根据sender通过person_info_manager反向查找person_id,再获取user_id
|
# 根据sender通过person_info_manager反向查找person_id,再获取user_id
|
||||||
person_id = person_info_manager.get_person_id_by_person_name(sender)
|
person_id = person_info_manager.get_person_id_by_person_name(sender)
|
||||||
|
|
||||||
# 根据配置选择使用哪种 prompt 构建模式
|
# 使用 s4u 对话构建模式:分离当前对话对象和其他对话
|
||||||
if global_config.chat.use_s4u_prompt_mode and person_id:
|
try:
|
||||||
# 使用 s4u 对话构建模式:分离当前对话对象和其他对话
|
user_id_value = await person_info_manager.get_value(person_id, "user_id")
|
||||||
try:
|
if user_id_value:
|
||||||
user_id_value = await person_info_manager.get_value(person_id, "user_id")
|
target_user_id = str(user_id_value)
|
||||||
if user_id_value:
|
except Exception as e:
|
||||||
target_user_id = str(user_id_value)
|
logger.warning(f"无法从person_id {person_id} 获取user_id: {e}")
|
||||||
except Exception as e:
|
target_user_id = ""
|
||||||
logger.warning(f"无法从person_id {person_id} 获取user_id: {e}")
|
|
||||||
target_user_id = ""
|
|
||||||
|
|
||||||
# 构建分离的对话 prompt
|
# 构建分离的对话 prompt
|
||||||
core_dialogue_prompt, background_dialogue_prompt = self.build_s4u_chat_history_prompts(
|
core_dialogue_prompt, background_dialogue_prompt = self.build_s4u_chat_history_prompts(
|
||||||
message_list_before_now_long, target_user_id
|
message_list_before_now_long, target_user_id
|
||||||
)
|
)
|
||||||
|
|
||||||
self.build_mai_think_context(
|
self.build_mai_think_context(
|
||||||
chat_id=chat_id,
|
chat_id=chat_id,
|
||||||
memory_block=memory_block,
|
memory_block=memory_block,
|
||||||
relation_info=relation_info,
|
relation_info=relation_info,
|
||||||
time_block=time_block,
|
time_block=time_block,
|
||||||
chat_target_1=chat_target_1,
|
chat_target_1=chat_target_1,
|
||||||
chat_target_2=chat_target_2,
|
chat_target_2=chat_target_2,
|
||||||
mood_prompt=mood_prompt,
|
mood_prompt=mood_prompt,
|
||||||
identity_block=identity_block,
|
identity_block=identity_block,
|
||||||
sender=sender,
|
sender=sender,
|
||||||
target=target,
|
target=target,
|
||||||
chat_info=f"""
|
chat_info=f"""
|
||||||
{background_dialogue_prompt}
|
{background_dialogue_prompt}
|
||||||
--------------------------------
|
--------------------------------
|
||||||
{time_block}
|
{time_block}
|
||||||
这是你和{sender}的对话,你们正在交流中:
|
这是你和{sender}的对话,你们正在交流中:
|
||||||
{core_dialogue_prompt}""",
|
{core_dialogue_prompt}""",
|
||||||
)
|
)
|
||||||
|
|
||||||
# 使用 s4u 风格的模板
|
# 使用 s4u 风格的模板
|
||||||
template_name = "s4u_style_prompt"
|
template_name = "s4u_style_prompt"
|
||||||
|
|
||||||
return await global_prompt_manager.format_prompt(
|
return await global_prompt_manager.format_prompt(
|
||||||
template_name,
|
template_name,
|
||||||
expression_habits_block=expression_habits_block,
|
expression_habits_block=expression_habits_block,
|
||||||
tool_info_block=tool_info,
|
tool_info_block=tool_info,
|
||||||
knowledge_prompt=prompt_info,
|
knowledge_prompt=prompt_info,
|
||||||
memory_block=memory_block,
|
memory_block=memory_block,
|
||||||
relation_info_block=relation_info,
|
relation_info_block=relation_info,
|
||||||
extra_info_block=extra_info_block,
|
extra_info_block=extra_info_block,
|
||||||
identity=identity_block,
|
identity=identity_block,
|
||||||
action_descriptions=action_descriptions,
|
action_descriptions=action_descriptions,
|
||||||
sender_name=sender,
|
sender_name=sender,
|
||||||
mood_state=mood_prompt,
|
mood_state=mood_prompt,
|
||||||
background_dialogue_prompt=background_dialogue_prompt,
|
background_dialogue_prompt=background_dialogue_prompt,
|
||||||
time_block=time_block,
|
time_block=time_block,
|
||||||
core_dialogue_prompt=core_dialogue_prompt,
|
core_dialogue_prompt=core_dialogue_prompt,
|
||||||
reply_target_block=reply_target_block,
|
reply_target_block=reply_target_block,
|
||||||
message_txt=target,
|
message_txt=target,
|
||||||
config_expression_style=global_config.expression.expression_style,
|
config_expression_style=global_config.expression.expression_style,
|
||||||
keywords_reaction_prompt=keywords_reaction_prompt,
|
keywords_reaction_prompt=keywords_reaction_prompt,
|
||||||
moderation_prompt=moderation_prompt_block,
|
moderation_prompt=moderation_prompt_block,
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
self.build_mai_think_context(
|
|
||||||
chat_id=chat_id,
|
|
||||||
memory_block=memory_block,
|
|
||||||
relation_info=relation_info,
|
|
||||||
time_block=time_block,
|
|
||||||
chat_target_1=chat_target_1,
|
|
||||||
chat_target_2=chat_target_2,
|
|
||||||
mood_prompt=mood_prompt,
|
|
||||||
identity_block=identity_block,
|
|
||||||
sender=sender,
|
|
||||||
target=target,
|
|
||||||
chat_info=chat_talking_prompt,
|
|
||||||
)
|
|
||||||
|
|
||||||
# 使用原有的模式
|
|
||||||
return await global_prompt_manager.format_prompt(
|
|
||||||
template_name,
|
|
||||||
expression_habits_block=expression_habits_block,
|
|
||||||
chat_target=chat_target_1,
|
|
||||||
chat_info=chat_talking_prompt,
|
|
||||||
memory_block=memory_block,
|
|
||||||
tool_info_block=tool_info,
|
|
||||||
knowledge_prompt=prompt_info,
|
|
||||||
extra_info_block=extra_info_block,
|
|
||||||
relation_info_block=relation_info,
|
|
||||||
time_block=time_block,
|
|
||||||
reply_target_block=reply_target_block,
|
|
||||||
moderation_prompt=moderation_prompt_block,
|
|
||||||
keywords_reaction_prompt=keywords_reaction_prompt,
|
|
||||||
identity=identity_block,
|
|
||||||
target_message=target,
|
|
||||||
sender_name=sender,
|
|
||||||
config_expression_style=global_config.expression.expression_style,
|
|
||||||
action_descriptions=action_descriptions,
|
|
||||||
chat_target_2=chat_target_2,
|
|
||||||
mood_state=mood_prompt,
|
|
||||||
)
|
|
||||||
|
|
||||||
async def build_prompt_rewrite_context(
|
async def build_prompt_rewrite_context(
|
||||||
self,
|
self,
|
||||||
@@ -1078,9 +1013,7 @@ async def get_prompt_info(message: str, threshold: float):
|
|||||||
logger.debug(f"获取知识库内容,相关信息:{related_info[:100]}...,信息长度: {len(related_info)}")
|
logger.debug(f"获取知识库内容,相关信息:{related_info[:100]}...,信息长度: {len(related_info)}")
|
||||||
|
|
||||||
# 格式化知识信息
|
# 格式化知识信息
|
||||||
formatted_prompt_info = await global_prompt_manager.format_prompt(
|
formatted_prompt_info = f"你有以下这些**知识**:\n{related_info}\n请你**记住上面的知识**,之后可能会用到。\n"
|
||||||
"knowledge_prompt", prompt_info=related_info
|
|
||||||
)
|
|
||||||
return formatted_prompt_info
|
return formatted_prompt_info
|
||||||
else:
|
else:
|
||||||
logger.debug("从LPMM知识库获取知识失败,可能是从未导入过知识,返回空知识...")
|
logger.debug("从LPMM知识库获取知识失败,可能是从未导入过知识,返回空知识...")
|
||||||
|
|||||||
@@ -83,9 +83,6 @@ class ChatConfig(ConfigBase):
|
|||||||
talk_frequency: float = 1
|
talk_frequency: float = 1
|
||||||
"""回复频率阈值"""
|
"""回复频率阈值"""
|
||||||
|
|
||||||
use_s4u_prompt_mode: bool = False
|
|
||||||
"""是否使用 s4u 对话构建模式,该模式会分开处理当前对话对象和其他所有对话的内容进行 prompt 构建"""
|
|
||||||
|
|
||||||
mentioned_bot_inevitable_reply: bool = False
|
mentioned_bot_inevitable_reply: bool = False
|
||||||
"""提及 bot 必然回复"""
|
"""提及 bot 必然回复"""
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[inner]
|
[inner]
|
||||||
version = "4.4.9"
|
version = "4.5.0"
|
||||||
|
|
||||||
#----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读----
|
#----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读----
|
||||||
#如果你想要修改配置文件,请在修改后将version的值进行变更
|
#如果你想要修改配置文件,请在修改后将version的值进行变更
|
||||||
@@ -64,8 +64,6 @@ replyer_random_probability = 0.5 # 首要replyer模型被选择的概率
|
|||||||
mentioned_bot_inevitable_reply = true # 提及 bot 大概率回复
|
mentioned_bot_inevitable_reply = true # 提及 bot 大概率回复
|
||||||
at_bot_inevitable_reply = true # @bot 或 提及bot 大概率回复
|
at_bot_inevitable_reply = true # @bot 或 提及bot 大概率回复
|
||||||
|
|
||||||
use_s4u_prompt_mode = true # 是否使用 s4u 对话构建模式,该模式会更好的把握当前对话对象的对话内容,但是对群聊整理理解能力较差(测试功能!!可能有未知问题!!)
|
|
||||||
|
|
||||||
|
|
||||||
talk_frequency = 1 # 麦麦回复频率,越高,麦麦回复越频繁
|
talk_frequency = 1 # 麦麦回复频率,越高,麦麦回复越频繁
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user