update config v0.0.9

使用`personality_probs`数组替代`personality_1/2/3_probability`人格概率,支持任意人格数量
pull/260/head
Hosigus 2025-03-12 11:37:01 +08:00
parent 68b0f7630e
commit f7e8050fd7
4 changed files with 35 additions and 20 deletions

View File

@ -1,5 +1,9 @@
# Changelog # Changelog
## [0.0.7] - 2025-3-12
### Update
- 使用`personality_probs`数组替代`personality_1/2/3_probability`人格概率,支持任意人格数量
## [0.0.5] - 2025-3-11 ## [0.0.5] - 2025-3-11
### Added ### Added
- 新增了 `alias_names` 配置项,用于指定麦麦的别名。 - 新增了 `alias_names` 配置项,用于指定麦麦的别名。

View File

@ -91,9 +91,14 @@ class BotConfig:
PROMPT_SCHEDULE_GEN = "一个曾经学习地质,现在学习心理学和脑科学的女大学生喜欢刷qq贴吧知乎和小红书" PROMPT_SCHEDULE_GEN = "一个曾经学习地质,现在学习心理学和脑科学的女大学生喜欢刷qq贴吧知乎和小红书"
PERSONALITY_1: float = 0.6 # 第一种人格概率 # 人设概率默认配置总和应为1
PERSONALITY_2: float = 0.3 # 第二种人格概率 PERSONALITY_PROBS: List[float] = field(
PERSONALITY_3: float = 0.1 # 第三种人格概率 default_factory = lambda: [
0.6, # 第一种人格概率
0.3, # 第二种人格概率
0.1 # 第三种人格概率
]
) # 人格概率分布
build_memory_interval: int = 600 # 记忆构建间隔(秒) build_memory_interval: int = 600 # 记忆构建间隔(秒)
@ -171,16 +176,23 @@ class BotConfig:
def personality(parent: dict): def personality(parent: dict):
personality_config = parent["personality"] personality_config = parent["personality"]
personality = personality_config.get("prompt_personality") personality = personality_config.get("prompt_personality")
if len(personality) >= 2: if config.INNER_VERSION in SpecifierSet(">=0.0.9") or len(personality) >= 2:
logger.debug(f"载入自定义人格:{personality}") logger.debug(f"载入自定义人格:{personality_config.get('prompt_personality', config.PROMPT_PERSONALITY)}")
config.PROMPT_PERSONALITY = personality_config.get("prompt_personality", config.PROMPT_PERSONALITY) config.PROMPT_PERSONALITY = personality_config.get("prompt_personality", config.PROMPT_PERSONALITY)
logger.info(f"载入自定义日程prompt:{personality_config.get('prompt_schedule', config.PROMPT_SCHEDULE_GEN)}") logger.info(f"载入自定义日程prompt:{personality_config.get('prompt_schedule', config.PROMPT_SCHEDULE_GEN)}")
config.PROMPT_SCHEDULE_GEN = personality_config.get("prompt_schedule", config.PROMPT_SCHEDULE_GEN) config.PROMPT_SCHEDULE_GEN = personality_config.get("prompt_schedule", config.PROMPT_SCHEDULE_GEN)
if config.INNER_VERSION in SpecifierSet(">=0.0.2"): if config.INNER_VERSION in SpecifierSet(">=0.0.9"):
config.PERSONALITY_1 = personality_config.get("personality_1_probability", config.PERSONALITY_1) config.PERSONALITY_PROBS = personality_config.get("personality_probs", config.PERSONALITY_PROBS)
config.PERSONALITY_2 = personality_config.get("personality_2_probability", config.PERSONALITY_2) if len(config.PERSONALITY_PROBS) != len(personality):
config.PERSONALITY_3 = personality_config.get("personality_3_probability", config.PERSONALITY_3) logger.error("人格设定[prompt_personality]数量和人格概率[personality_probs]数量不相等,请检查")
raise ValueError("人格设定[prompt_personality]数量和人格概率[personality_probs]数量不相等,,请检查")
elif config.INNER_VERSION in SpecifierSet(">=0.0.2"):
config.PERSONALITY_PROBS = [
personality_config.get("personality_1_probability", 0.6),
personality_config.get("personality_2_probability", 0.3),
personality_config.get("personality_3_probability", 0.1)
]
def emoji(parent: dict): def emoji(parent: dict):
emoji_config = parent["emoji"] emoji_config = parent["emoji"]

View File

@ -146,10 +146,7 @@ class PromptBuilder:
+ "\n".join(f'- 命中关键字: {", ".join(map(repr, matched_kws))}; 回复要求: {reaction!r}' for matched_kws, reaction in triggered_keyword_prompt_arr) + "\n".join(f'- 命中关键字: {", ".join(map(repr, matched_kws))}; 回复要求: {reaction!r}' for matched_kws, reaction in triggered_keyword_prompt_arr)
# 人格选择 # 人格选择
personality = global_config.PROMPT_PERSONALITY personality = random.choices(global_config.PROMPT_PERSONALITY, global_config.PERSONALITY_PROBS)[0]
probability_1 = global_config.PERSONALITY_1
probability_2 = global_config.PERSONALITY_2
probability_3 = global_config.PERSONALITY_3
prompt_personality = f'{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},你还有很多别名:{"/".join(global_config.BOT_ALIAS_NAMES)}' prompt_personality = f'{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},你还有很多别名:{"/".join(global_config.BOT_ALIAS_NAMES)}'
personality_choice = random.random() personality_choice = random.random()
@ -158,15 +155,15 @@ class PromptBuilder:
else: else:
prompt_in_group=f"你正在{chat_stream.platform}上和{sender_name}私聊" prompt_in_group=f"你正在{chat_stream.platform}上和{sender_name}私聊"
if personality_choice < probability_1: # 第一种人格 if personality_choice < probability_1: # 第一种人格
prompt_personality += f'''{personality[0]}, 你正在浏览qq群,{promt_info_prompt}, prompt_personality += f'''{personality}, 你正在浏览qq群,{promt_info_prompt},
现在请你给出日常且口语化的回复平淡一些尽量简短一些{keywords_reaction_prompt} 现在请你给出日常且口语化的回复平淡一些尽量简短一些{keywords_reaction_prompt}
请注意把握群里的聊天内容不要刻意突出自身学科背景不要回复的太有条理可以有个性''' 请注意把握群里的聊天内容不要刻意突出自身学科背景不要回复的太有条理可以有个性'''
elif personality_choice < probability_1 + probability_2: # 第二种人格 elif personality_choice < probability_1 + probability_2: # 第二种人格
prompt_personality += f'''{personality[1]}, 你正在浏览qq群{promt_info_prompt}, prompt_personality += f'''{personality}, 你正在浏览qq群{promt_info_prompt},
现在请你给出日常且口语化的回复请表现你自己的见解不要一昧迎合尽量简短一些{keywords_reaction_prompt} 现在请你给出日常且口语化的回复请表现你自己的见解不要一昧迎合尽量简短一些{keywords_reaction_prompt}
请你表达自己的见解和观点可以有个性''' 请你表达自己的见解和观点可以有个性'''
else: # 第三种人格 else: # 第三种人格
prompt_personality += f'''{personality[2]}, 你正在浏览qq群{promt_info_prompt}, prompt_personality += f'''{personality}, 你正在浏览qq群{promt_info_prompt},
现在请你给出日常且口语化的回复请表现你自己的见解不要一昧迎合尽量简短一些{keywords_reaction_prompt} 现在请你给出日常且口语化的回复请表现你自己的见解不要一昧迎合尽量简短一些{keywords_reaction_prompt}
请你表达自己的见解和观点可以有个性''' 请你表达自己的见解和观点可以有个性'''

View File

@ -1,5 +1,5 @@
[inner] [inner]
version = "0.0.8" version = "0.0.9"
#如果你想要修改配置文件请在修改后将version的值进行变更 #如果你想要修改配置文件请在修改后将version的值进行变更
#如果新增项目请在BotConfig类下新增相应的变量 #如果新增项目请在BotConfig类下新增相应的变量
@ -23,9 +23,11 @@ prompt_personality = [
"是一个女大学生,你有黑色头发,你会刷小红书", # 小红书人格 "是一个女大学生,你有黑色头发,你会刷小红书", # 小红书人格
"是一个女大学生你会刷b站对ACG文化感兴趣" # b站人格 "是一个女大学生你会刷b站对ACG文化感兴趣" # b站人格
] ]
personality_1_probability = 0.6 # 第一种人格出现概率 personality_probs = [
personality_2_probability = 0.3 # 第二种人格出现概率 0.6, # 第一种人格出现概率
personality_3_probability = 0.1 # 第三种人格出现概率请确保三个概率相加等于1 0.3, # 第二种人格出现概率
0.1 # 第三种人格出现概率请确保三个概率相加等于1
]
prompt_schedule = "一个曾经学习地质,现在学习心理学和脑科学的女大学生喜欢刷qq贴吧知乎和小红书" prompt_schedule = "一个曾经学习地质,现在学习心理学和脑科学的女大学生喜欢刷qq贴吧知乎和小红书"
[message] [message]