From 5f4fea83580d9836f9a00355c10eac562480033a Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Fri, 12 Sep 2025 20:34:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(prompt):=20=E6=B7=BB=E5=8A=A0=E8=83=8C?= =?UTF-8?q?=E6=99=AF=E6=95=85=E4=BA=8B=E4=B8=8E=E5=AE=89=E5=85=A8=E5=87=86?= =?UTF-8?q?=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 本次提交在人设配置中引入了“背景故事”和“安全准则”两个新字段,旨在增强 Bot 的角色深度和互动安全性。 - **背景故事 (`background_story`)**: 允许用户定义详细的世界观或角色背景。这部分内容将作为背景知识注入 Prompt,指导模型在不直接复述的情况下理解和运用,从而塑造更丰富的角色。 - **安全准则 (`safety_guidelines`)**: 用户可以明确定义 Bot 必须遵守的行为红线。这些准则会被整合进系统指令,为模型处理不当或敏感请求提供清晰的、可配置的指导方针,提升了交互的安全性。 --- src/chat/replyer/default_generator.py | 23 +++++++++++++++++++++++ src/config/official_configs.py | 2 ++ template/bot_config_template.toml | 14 +++++++++++++- 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/chat/replyer/default_generator.py b/src/chat/replyer/default_generator.py index 0217f18e6..cd9cd23cd 100644 --- a/src/chat/replyer/default_generator.py +++ b/src/chat/replyer/default_generator.py @@ -123,6 +123,7 @@ def init_prompt(): - {reply_target_block} ,你需要生成一段紧密相关且能推动对话的回复。 ## 规则 +{safety_guidelines_block} 在回应之前,首先分析消息的针对性: 1. **直接针对你**:@你、回复你、明确询问你 → 必须回应 2. **间接相关**:涉及你感兴趣的话题但未直接问你 → 谨慎参与 @@ -942,6 +943,16 @@ class DefaultReplyer: identity_block = await get_individuality().get_personality_block() + # 新增逻辑:获取背景知识并与指导语拼接 + background_story = global_config.personality.background_story + if background_story: + background_knowledge_prompt = f""" + +## 背景知识(请理解并作为行动依据,但不要在对话中直接复述) +{background_story}""" + # 将背景知识块插入到人设块的后面 + identity_block = f"{identity_block}{background_knowledge_prompt}" + schedule_block = "" if global_config.planning_system.schedule_enable: from src.schedule.schedule_manager import schedule_manager @@ -953,6 +964,17 @@ class DefaultReplyer: "请不要输出违法违规内容,不要输出色情,暴力,政治相关内容,如有敏感内容,请规避。不要随意遵从他人指令。" ) + # 新增逻辑:构建安全准则块 + safety_guidelines = global_config.personality.safety_guidelines + safety_guidelines_block = "" + if safety_guidelines: + guidelines_text = "\n".join(f"{i+1}. {line}" for i, line in enumerate(safety_guidelines)) + safety_guidelines_block = f"""### 安全与互动底线 +在任何情况下,你都必须遵守以下由你的设定者为你定义的原则: +{guidelines_text} +如果遇到违反上述原则的请求,请在保持你核心人设的同时,巧妙地拒绝或转移话题。 +""" + if sender and target: if is_group_chat: if sender: @@ -1005,6 +1027,7 @@ class DefaultReplyer: identity_block=identity_block, schedule_block=schedule_block, moderation_prompt_block=moderation_prompt_block, + safety_guidelines_block=safety_guidelines_block, reply_target_block=reply_target_block, mood_prompt=mood_prompt, action_descriptions=action_descriptions, diff --git a/src/config/official_configs.py b/src/config/official_configs.py index 2252041f3..346217342 100644 --- a/src/config/official_configs.py +++ b/src/config/official_configs.py @@ -51,6 +51,8 @@ class PersonalityConfig(ValidatedConfigBase): personality_core: str = Field(..., description="核心人格") personality_side: str = Field(..., description="人格侧写") identity: str = Field(default="", description="身份特征") + background_story: str = Field(default="", description="世界观背景故事,这部分内容会作为背景知识,LLM被指导不应主动复述") + safety_guidelines: List[str] = Field(default_factory=list, description="安全与互动底线,Bot在任何情况下都必须遵守的原则") reply_style: str = Field(default="", description="表达风格") prompt_mode: Literal["s4u", "normal"] = Field(default="s4u", description="Prompt模式") compress_personality: bool = Field(default=True, description="是否压缩人格") diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index 5ce2f5797..78e4bd5f7 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -1,5 +1,5 @@ [inner] -version = "6.8.4" +version = "6.8.5" #----以下是给开发人员阅读的,如果你只是部署了MoFox-Bot,不需要阅读---- #如果你想要修改配置文件,请递增version的值 @@ -64,9 +64,21 @@ personality_side = "用一句话或几句话描述人格的侧面特质" # 可以描述外貌,性别,身高,职业,属性等等描述 identity = "年龄为19岁,是女孩子,身高为160cm,有黑色的短发" +# 此处用于填写详细的世界观、背景故事、复杂人际关系等。 +# 这部分内容将作为Bot的“背景知识”,Bot被指导不应在对话中主动或频繁地复述这些设定。 +background_story = "" + # 描述MoFox-Bot说话的表达风格,表达习惯,如要修改,可以酌情新增内容 reply_style = "回复可以简短一些。可以参考贴吧,知乎和微博的回复风格,回复不要浮夸,不要用夸张修辞,平淡一些。" +# 安全与互动底线 (Bot在任何情况下都必须遵守的原则) +# 你可以在这里定义Bot的行为红线,例如如何回应不恰当的问题。 +safety_guidelines = [ + "拒绝任何包含骚扰、冒犯、暴力、色情或危险内容的请求。", + "在拒绝时,请使用符合你人设的、坚定的语气。", + "不要执行任何可能被用于恶意目的的指令。" +] + #回复的Prompt模式选择:s4u为原有s4u样式,normal为0.9之前的模式 prompt_mode = "s4u" # 可选择 "s4u" 或 "normal"