为小脑决策加上角色人设提示词以避免决策时出现的人设ooc的情况

可以在配置文件里面关闭
This commit is contained in:
Furina-1013-create
2025-09-08 13:19:40 +08:00
parent c223ce1f3b
commit cb41a98fc2
3 changed files with 19 additions and 1 deletions

View File

@@ -147,6 +147,7 @@ def init_prompt():
Prompt( Prompt(
""" """
{name_block} {name_block}
{personality_block}
{chat_context_description}{time_block}现在请你根据以下聊天内容选择一个或多个合适的action。如果没有合适的action请选择no_action。, {chat_context_description}{time_block}现在请你根据以下聊天内容选择一个或多个合适的action。如果没有合适的action请选择no_action。,
{chat_content_block} {chat_content_block}
@@ -414,6 +415,19 @@ class ActionPlanner:
bot_nickname = f",也有人叫你{','.join(global_config.bot.alias_names)}" if global_config.bot.alias_names else "" bot_nickname = f",也有人叫你{','.join(global_config.bot.alias_names)}" if global_config.bot.alias_names else ""
name_block = f"你的名字是{bot_name}{bot_nickname},请注意哪些是你自己的发言。" name_block = f"你的名字是{bot_name}{bot_nickname},请注意哪些是你自己的发言。"
# 构建人格信息块(仅在启用时)
personality_block = ""
if global_config.chat.include_personality:
personality_core = global_config.personality.personality_core
personality_side = global_config.personality.personality_side
if personality_core or personality_side:
personality_parts = []
if personality_core:
personality_parts.append(f"核心人格:{personality_core}")
if personality_side:
personality_parts.append(f"人格侧面:{personality_side}")
personality_block = "你的人格特征是:" + "".join(personality_parts)
planner_prompt_template = await global_prompt_manager.get_prompt_async("sub_planner_prompt") planner_prompt_template = await global_prompt_manager.get_prompt_async("sub_planner_prompt")
prompt = planner_prompt_template.format( prompt = planner_prompt_template.format(
time_block=time_block, time_block=time_block,
@@ -423,6 +437,7 @@ class ActionPlanner:
action_options_text=action_options_block, action_options_text=action_options_block,
moderation_prompt=moderation_prompt_block, moderation_prompt=moderation_prompt_block,
name_block=name_block, name_block=name_block,
personality_block=personality_block,
) )
except Exception as e: except Exception as e:
logger.error(f"构建小脑提示词时出错: {e}\n{traceback.format_exc()}") logger.error(f"构建小脑提示词时出错: {e}\n{traceback.format_exc()}")

View File

@@ -93,6 +93,7 @@ class ChatConfig(ValidatedConfigBase):
) )
delta_sigma: int = Field(default=120, description="采用正态分布随机时间间隔") delta_sigma: int = Field(default=120, description="采用正态分布随机时间间隔")
planner_size: float = Field(default=5.0, ge=1.0, description="小脑sub-planner的尺寸决定每个小脑处理多少个action") planner_size: float = Field(default=5.0, ge=1.0, description="小脑sub-planner的尺寸决定每个小脑处理多少个action")
include_personality: bool = Field(default=False, description="是否在小脑决策中包含角色人设信息")
def get_current_talk_frequency(self, chat_stream_id: Optional[str] = None) -> float: def get_current_talk_frequency(self, chat_stream_id: Optional[str] = None) -> float:
""" """

View File

@@ -1,5 +1,5 @@
[inner] [inner]
version = "6.7.8" version = "6.7.9"
#----以下是给开发人员阅读的如果你只是部署了MoFox-Bot不需要阅读---- #----以下是给开发人员阅读的如果你只是部署了MoFox-Bot不需要阅读----
#如果你想要修改配置文件请递增version的值 #如果你想要修改配置文件请递增version的值
@@ -175,6 +175,8 @@ delta_sigma = 120 # 正态分布的标准差,控制时间间隔的随机程度
# --- 大脑/小脑 Planner 配置 --- # --- 大脑/小脑 Planner 配置 ---
planner_size = 5.0 # 小脑sub-planner的尺寸决定每个小脑处理多少个action。数值越小并行度越高但单个小脑的上下文越少。建议范围3.0-8.0 planner_size = 5.0 # 小脑sub-planner的尺寸决定每个小脑处理多少个action。数值越小并行度越高但单个小脑的上下文越少。建议范围3.0-8.0
include_personality = false # 是否在小脑决策中包含角色人设信息personality_core、personality_side
[relationship] [relationship]
enable_relationship = true # 是否启用关系系统 enable_relationship = true # 是否启用关系系统