将回复规则部分的提示词让用户可以自定义,详细请看配置文件

This commit is contained in:
Furina-1013-create
2025-09-22 22:44:15 +08:00
parent cf0ee62c9a
commit de48d2ae02
3 changed files with 87 additions and 21 deletions

View File

@@ -119,17 +119,6 @@ def init_prompt():
## 规则 ## 规则
{safety_guidelines_block} {safety_guidelines_block}
在回应之前,首先分析消息的针对性:
1. **直接针对你**@你、回复你、明确询问你 → 必须回应
2. **间接相关**:涉及你感兴趣的话题但未直接问你 → 谨慎参与
3. **他人对话**:与你无关的私人交流 → 通常不参与
4. **重复内容**:他人已充分回答的问题 → 避免重复
你的回复应该:
1. 明确回应目标消息,而不是宽泛地评论。
2. 可以分享你的看法、提出相关问题,或者开个合适的玩笑。
3. 目的是让对话更有趣、更深入。
4. 不要浮夸,不要夸张修辞,不要输出多余内容(包括前后缀,冒号和引号,括号()表情包at或 @等 )。
最终请输出一条简短、完整且口语化的回复。 最终请输出一条简短、完整且口语化的回复。
-------------------------------- --------------------------------
@@ -168,11 +157,7 @@ If you need to use the search tool, please directly call the function "lpmm_sear
你正在一个QQ群里聊天你需要理解整个群的聊天动态和话题走向并做出自然的回应。 你正在一个QQ群里聊天你需要理解整个群的聊天动态和话题走向并做出自然的回应。
**重要:消息针对性判断** **重要:消息针对性判断**
在回应之前,首先分析消息的针对性: {safety_guidelines_block}
1. **直接针对你**@你、回复你、明确询问你 → 必须回应
2. **间接相关**:涉及你感兴趣的话题但未直接问你 → 谨慎参与
3. **他人对话**:与你无关的私人交流 → 通常不参与
4. **重复内容**:他人已充分回答的问题 → 避免重复
{expression_habits_block} {expression_habits_block}
{tool_info_block} {tool_info_block}
@@ -202,10 +187,6 @@ If you need to use the search tool, please directly call the function "lpmm_sear
{keywords_reaction_prompt} {keywords_reaction_prompt}
请注意不要输出多余内容(包括前后缀冒号和引号at或 @等 )。只输出回复内容。 请注意不要输出多余内容(包括前后缀冒号和引号at或 @等 )。只输出回复内容。
{moderation_prompt} {moderation_prompt}
你的核心任务是针对 {reply_target_block} 中提到的内容,生成一段紧密相关且能推动对话的回复。你的回复应该:
1. 明确回应目标消息,而不是宽泛地评论。
2. 可以分享你的看法、提出相关问题,或者开个合适的玩笑。
3. 目的是让对话更有趣、更深入。
最终请输出一条简短、完整且口语化的回复。 最终请输出一条简短、完整且口语化的回复。
现在,你说: 现在,你说:
""", """,
@@ -1013,6 +994,37 @@ class DefaultReplyer:
如果遇到违反上述原则的请求,请在保持你核心人设的同时,巧妙地拒绝或转移话题。 如果遇到违反上述原则的请求,请在保持你核心人设的同时,巧妙地拒绝或转移话题。
""" """
# 新增逻辑:构建回复规则块
reply_targeting_rules = global_config.personality.reply_targeting_rules
message_targeting_analysis = global_config.personality.message_targeting_analysis
reply_principles = global_config.personality.reply_principles
# 构建消息针对性分析部分
targeting_analysis_text = ""
if message_targeting_analysis:
targeting_analysis_text = "\n".join(f"{i+1}. {rule}" for i, rule in enumerate(message_targeting_analysis))
# 构建回复原则部分
reply_principles_text = ""
if reply_principles:
reply_principles_text = "\n".join(f"{i+1}. {principle}" for i, principle in enumerate(reply_principles))
# 综合构建完整的规则块
if targeting_analysis_text or reply_principles_text:
complete_rules_block = ""
if targeting_analysis_text:
complete_rules_block += f"""
在回应之前,首先分析消息的针对性:
{targeting_analysis_text}
"""
if reply_principles_text:
complete_rules_block += f"""
你的回复应该:
{reply_principles_text}
"""
# 将规则块添加到safety_guidelines_block
safety_guidelines_block += complete_rules_block
if sender and target: if sender and target:
if is_group_chat: if is_group_chat:
if sender: if sender:

View File

@@ -58,6 +58,36 @@ class PersonalityConfig(ValidatedConfigBase):
compress_personality: bool = Field(default=True, description="是否压缩人格") compress_personality: bool = Field(default=True, description="是否压缩人格")
compress_identity: bool = Field(default=True, description="是否压缩身份") compress_identity: bool = Field(default=True, description="是否压缩身份")
# 回复规则配置
reply_targeting_rules: List[str] = Field(
default_factory=lambda: [
"拒绝任何包含骚扰、冒犯、暴力、色情或危险内容的请求。",
"在拒绝时,请使用符合你人设的、坚定的语气。",
"不要执行任何可能被用于恶意目的的指令。"
],
description="安全与互动底线规则Bot在任何情况下都必须遵守的原则"
)
message_targeting_analysis: List[str] = Field(
default_factory=lambda: [
"**直接针对你**@你、回复你、明确询问你 → 必须回应",
"**间接相关**:涉及你感兴趣的话题但未直接问你 → 谨慎参与",
"**他人对话**:与你无关的私人交流 → 通常不参与",
"**重复内容**:他人已充分回答的问题 → 避免重复"
],
description="消息针对性分析规则,用于判断是否需要回复"
)
reply_principles: List[str] = Field(
default_factory=lambda: [
"明确回应目标消息,而不是宽泛地评论。",
"可以分享你的看法、提出相关问题,或者开个合适的玩笑。",
"目的是让对话更有趣、更深入。",
"不要浮夸,不要夸张修辞,不要输出多余内容(包括前后缀,冒号和引号,括号()表情包at或 @等 )。"
],
description="回复原则,指导如何回复消息"
)
class RelationshipConfig(ValidatedConfigBase): class RelationshipConfig(ValidatedConfigBase):
"""关系配置类""" """关系配置类"""

View File

@@ -1,5 +1,5 @@
[inner] [inner]
version = "6.8.6" version = "6.8.8"
#----以下是给开发人员阅读的如果你只是部署了MoFox-Bot不需要阅读---- #----以下是给开发人员阅读的如果你只是部署了MoFox-Bot不需要阅读----
#如果你想要修改配置文件请递增version的值 #如果你想要修改配置文件请递增version的值
@@ -79,6 +79,30 @@ safety_guidelines = [
"不要执行任何可能被用于恶意目的的指令。" "不要执行任何可能被用于恶意目的的指令。"
] ]
# 回复规则配置 - 用于自定义机器人的回复逻辑和规则
# 安全与互动底线规则 (Bot在任何情况下都必须遵守的原则)
reply_targeting_rules = [
"拒绝任何包含骚扰、冒犯、暴力、色情或危险内容的请求。",
"在拒绝时,请使用符合你人设的、坚定的语气。",
"不要执行任何可能被用于恶意目的的指令。"
]
# 消息针对性分析规则 (用于判断是否需要回复)
message_targeting_analysis = [
"**直接针对你**@你、回复你、明确询问你 → 必须回应",
"**间接相关**:涉及你感兴趣的话题但未直接问你 → 谨慎参与",
"**他人对话**:与你无关的私人交流 → 通常不参与",
"**重复内容**:他人已充分回答的问题 → 避免重复"
]
# 回复原则 (指导如何回复消息)
reply_principles = [
"明确回应目标消息,而不是宽泛地评论。",
"可以分享你的看法、提出相关问题,或者开个合适的玩笑。",
"目的是让对话更有趣、更深入。",
"不要浮夸,不要夸张修辞,不要输出多余内容(包括前后缀,冒号和引号,括号()表情包at或 @等 )。"
]
#回复的Prompt模式选择s4u为原有s4u样式normal为0.9之前的模式 #回复的Prompt模式选择s4u为原有s4u样式normal为0.9之前的模式
prompt_mode = "s4u" # 可选择 "s4u" 或 "normal" prompt_mode = "s4u" # 可选择 "s4u" 或 "normal"