From 30bfc458168a8b465f4acb97a8528a1af33ed8ef Mon Sep 17 00:00:00 2001 From: tcmofashi Date: Tue, 4 Mar 2025 11:09:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=E5=8F=8D=E6=96=9C?= =?UTF-8?q?=E6=9D=A0=EF=BC=8Ctoml=E5=8A=A0=E5=85=A5=E4=BA=BA=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/bot_config_template.toml | 7 +++++++ src/plugins/chat/config.py | 5 +++++ src/plugins/chat/prompt_builder.py | 8 +++----- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/config/bot_config_template.toml b/config/bot_config_template.toml index 7fe5c0a77..f174fcebf 100644 --- a/config/bot_config_template.toml +++ b/config/bot_config_template.toml @@ -2,6 +2,13 @@ qq = 123 nickname = "麦麦" +[personality] +prompt_personality = [ + "曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧", # 贴吧人格 + "是一个女大学生,你有黑色头发,你会刷小红书" # 小红书人格 + ] +prompt_schedule = "一个曾经学习地质,现在学习心理学和脑科学的女大学生,喜欢刷qq,贴吧,知乎和小红书" + [message] min_text_length = 2 # 与麦麦聊天时麦麦只会回答文本大于等于此数的消息 max_context_size = 15 # 麦麦获得的上下文数量,超出数量后自动丢弃 diff --git a/src/plugins/chat/config.py b/src/plugins/chat/config.py index ffd593159..3bfde8425 100644 --- a/src/plugins/chat/config.py +++ b/src/plugins/chat/config.py @@ -76,6 +76,11 @@ class BotConfig: if os.path.exists(config_path): with open(config_path, "rb") as f: toml_dict = tomli.load(f) + + if 'personality' in toml_dict: + personality_config=toml_dict['personality'] + config.PROMPT_PERSONALITY=personality_config.get('prompt_personality') + config.PROMPT_SCHEDULE_GEN=personality_config.get('prompt_schedule') if "emoji" in toml_dict: emoji_config = toml_dict["emoji"] diff --git a/src/plugins/chat/prompt_builder.py b/src/plugins/chat/prompt_builder.py index 707c035ad..20135f9bf 100644 --- a/src/plugins/chat/prompt_builder.py +++ b/src/plugins/chat/prompt_builder.py @@ -244,14 +244,12 @@ class PromptBuilder: def _build_initiative_prompt_check(self,selected_node,prompt_regular): memory=random.sample(selected_node['memory_items'],3) - prompt_for_check=f"{prompt_regular}你现在想在群里发言,回忆了一下,想到一个话题,是\"{selected_node['concept']}\",关于这个话题的记忆有\n{'\n'.join(memory)}\n,以这个作为主题发言合适吗?\ - 请在把握群里的聊天内容的基础上,综合群内的氛围,如果认为应该发言请输出yes,否则输出no,请注意是决定是否需要发言,而不是编写回复内容,除了yes和no不要输出任何回复内容。" + memory='\n'.join(memory) + prompt_for_check=f"{prompt_regular}你现在想在群里发言,回忆了一下,想到一个话题,是{selected_node['concept']},关于这个话题的记忆有\n{memory}\n,以这个作为主题发言合适吗?请在把握群里的聊天内容的基础上,综合群内的氛围,如果认为应该发言请输出yes,否则输出no,请注意是决定是否需要发言,而不是编写回复内容,除了yes和no不要输出任何回复内容。" return prompt_for_check,memory def _build_initiative_prompt(self,selected_node,prompt_regular,memory): - prompt_for_initiative=f"{prompt_regular}你现在想在群里发言,回忆了一下,想到一个话题,是\"{selected_node['concept']}\",关于这个话题的记忆有\n{'\n'.join(memory)}\n,\ - 请在把握群里的聊天内容的基础上,综合群内的氛围,以日常且口语化的口吻,简短且随意一点进行发言,不要说的太有条理,可以有个性。记住不要输出多余内容(包括前后缀,冒号和引号,\ - 括号,表情等)" + prompt_for_initiative=f"{prompt_regular}你现在想在群里发言,回忆了一下,想到一个话题,是{selected_node['concept']},关于这个话题的记忆有\n{memory}\n,请在把握群里的聊天内容的基础上,综合群内的氛围,以日常且口语化的口吻,简短且随意一点进行发言,不要说的太有条理,可以有个性。记住不要输出多余内容(包括前后缀,冒号和引号,括号,表情等)" return prompt_for_initiative