feat:表达方式可以多种随机

pull/1445/head
SengokuCola 2025-12-18 17:07:54 +08:00
parent 2b81f79ef1
commit 11dd9ece13
5 changed files with 47 additions and 8 deletions

View File

@ -48,8 +48,9 @@ reply
动作描述
1.你可以选择呼叫了你的名字但是你没有做出回应的消息进行回复
2.你可以自然的顺着正在进行的聊天内容进行回复或自然的提出一个问题
3.不要选择回复你自己发送的消息
4.不要单独对表情包进行回复
3.最好一次对一个话题进行回复免得啰嗦或者回复内容太乱
4.不要选择回复你自己发送的消息
5.不要单独对表情包进行回复
{reply_action_example}
no_reply

View File

@ -635,7 +635,7 @@ class DefaultReplyer:
# 获取基础personality
prompt_personality = global_config.personality.personality
# 检查是否需要随机替换为状态
# 检查是否需要随机替换为状态personality 本体)
if (
global_config.personality.states
and global_config.personality.state_probability > 0
@ -925,6 +925,17 @@ class DefaultReplyer:
else: # think_level == 1 或默认
prompt_name = "replyer_prompt"
# 根据配置构建最终的 reply_style支持 multiple_reply_style 按概率随机替换
reply_style = global_config.personality.reply_style
multi_styles = getattr(global_config.personality, "multiple_reply_style", None) or []
multi_prob = getattr(global_config.personality, "multiple_probability", 0.0) or 0.0
if multi_styles and multi_prob > 0 and random.random() < multi_prob:
try:
reply_style = random.choice(list(multi_styles))
except Exception:
# 兜底:即使 multiple_reply_style 配置异常也不影响正常回复
reply_style = global_config.personality.reply_style
return await global_prompt_manager.format_prompt(
prompt_name,
expression_habits_block=expression_habits_block,
@ -940,7 +951,7 @@ class DefaultReplyer:
dialogue_prompt=dialogue_prompt,
time_block=time_block,
reply_target_block=reply_target_block,
reply_style=global_config.personality.reply_style,
reply_style=reply_style,
keywords_reaction_prompt=keywords_reaction_prompt,
moderation_prompt=moderation_prompt_block,
memory_retrieval=memory_retrieval,
@ -1021,6 +1032,16 @@ class DefaultReplyer:
template_name = "default_expressor_prompt"
# 根据配置构建最终的 reply_style支持 multiple_reply_style 按概率随机替换
reply_style = global_config.personality.reply_style
multi_styles = getattr(global_config.personality, "multiple_reply_style", None) or []
multi_prob = getattr(global_config.personality, "multiple_probability", 0.0) or 0.0
if multi_styles and multi_prob > 0 and random.random() < multi_prob:
try:
reply_style = random.choice(list(multi_styles))
except Exception:
reply_style = global_config.personality.reply_style
return await global_prompt_manager.format_prompt(
template_name,
expression_habits_block=expression_habits_block,
@ -1033,7 +1054,7 @@ class DefaultReplyer:
reply_target_block=reply_target_block,
raw_reply=raw_reply,
reason=reason,
reply_style=global_config.personality.reply_style,
reply_style=reply_style,
keywords_reaction_prompt=keywords_reaction_prompt,
moderation_prompt=moderation_prompt_block,
)

View File

@ -20,6 +20,7 @@ def init_replyer_prompt():
请注意把握聊天内容不要回复的太有条理
{reply_style}
请注意不要输出多余内容(包括不必要的前后缀冒号括号表情包at或 @等 )只输出发言内容就好
最好一次对一个话题进行回复免得啰嗦或者回复内容太乱
现在你说""",
"replyer_prompt_0",
)
@ -36,7 +37,8 @@ def init_replyer_prompt():
{reply_target_block}
{planner_reasoning}
{identity}
{chat_prompt}你正在群里聊天,现在请你读读之前的聊天记录把握当前的话题然后给出日常且简短的回复
{chat_prompt}你正在群里聊天,现在请你读读之前的聊天记录把握当前的话题然后给出日常且简短的回复
最好一次对一个话题进行回复免得啰嗦或者回复内容太乱
{keywords_reaction_prompt}
请注意把握聊天内容
{reply_style}

View File

@ -43,7 +43,13 @@ class PersonalityConfig(ConfigBase):
"""人格"""
reply_style: str = ""
"""表达风格"""
"""默认表达风格"""
multiple_reply_style: list[str] = field(default_factory=lambda: [])
"""可选的多种表达风格列表,当配置不为空时可按概率随机替换 reply_style"""
multiple_probability: float = 0.0
"""每次构建回复时,从 multiple_reply_style 中随机替换 reply_style 的概率0.0-1.0"""
plan_style: str = ""
"""说话规则,行为风格"""

View File

@ -1,5 +1,5 @@
[inner]
version = "7.1.7"
version = "7.1.8"
#----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读----
# 如果你想要修改配置文件请递增version的值
@ -27,6 +27,15 @@ personality = "是一个大二在读女大学生,现在正在上网和群友
# 描述麦麦说话的表达风格表达习惯如要修改可以酌情新增内容建议1-2行
reply_style = "请不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。"
# 多种回复风格列表,可选配置:当 non-empty 且 multiple_probability>0 时,会按概率随机从中选择一个替换 reply_style
multiple_reply_style = [
"你的风格平淡但不失讽刺,不过分兴奋,很简短。可以参考贴吧,知乎和微博的回复风格。",
"说话偏口语化偶尔带一点情绪但不要太长篇像B站评论区一样自然。",
]
# 替换概率:每次构建回复时,以该概率从 multiple_reply_style 中随机选择一个替换 reply_style0.0-1.0
multiple_probability = 0.3
# 麦麦的说话规则,行为风格:
plan_style = """
1.****action****使使