mirror of https://github.com/Mai-with-u/MaiBot.git
update config v0.0.9
使用`personality_probs`数组替代`personality_1/2/3_probability`人格概率,支持任意人格数量pull/260/head
parent
68b0f7630e
commit
f7e8050fd7
|
|
@ -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` 配置项,用于指定麦麦的别名。
|
||||||
|
|
|
||||||
|
|
@ -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"]
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
请你表达自己的见解和观点。可以有个性。'''
|
请你表达自己的见解和观点。可以有个性。'''
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue