From d36b217bcf914fe83b638449ed0287a85d329342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=91=BE=E6=98=9FMcc?= <3422982454@qq.com> Date: Sat, 8 Mar 2025 13:08:35 +0800 Subject: [PATCH 1/2] Add files via upload --- template/bot_config_template.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index 95e14fc0b..ababbbf21 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -5,8 +5,12 @@ nickname = "麦麦" [personality] prompt_personality = [ "曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧", # 贴吧人格 - "是一个女大学生,你有黑色头发,你会刷小红书" # 小红书人格 + "是一个女大学生,你有黑色头发,你会刷小红书", # 小红书人格 + "是一个女大学生,你会刷b站,对ACG文化感兴趣" # b站人格 ] +personality_1_probability = 0.6 # 第一种人格出现概率 +personality_2_probability = 0.3 # 第二种人格出现概率 +personality_3_probability = 0.1 # 第三种人格出现概率,请确保三个概率相加等于1 prompt_schedule = "一个曾经学习地质,现在学习心理学和脑科学的女大学生,喜欢刷qq,贴吧,知乎和小红书" [message] From 56e9891c4d17d7db81e1c50ec3dec381d38af7a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=91=BE=E6=98=9FMcc?= <3422982454@qq.com> Date: Sat, 8 Mar 2025 13:09:35 +0800 Subject: [PATCH 2/2] Add files via upload --- src/plugins/chat/config.py | 10 +++++++++- src/plugins/chat/message_sender.py | 3 +-- src/plugins/chat/prompt_builder.py | 23 +++++++++++++++++------ 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/plugins/chat/config.py b/src/plugins/chat/config.py index 6ebf5b165..caa41cb70 100644 --- a/src/plugins/chat/config.py +++ b/src/plugins/chat/config.py @@ -64,10 +64,15 @@ class BotConfig: # 默认人设 PROMPT_PERSONALITY=[ "曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧", - "是一个女大学生,你有黑色头发,你会刷小红书" + "是一个女大学生,你有黑色头发,你会刷小红书", + "是一个女大学生,你会刷b站,对ACG文化感兴趣" ] PROMPT_SCHEDULE_GEN="一个曾经学习地质,现在学习心理学和脑科学的女大学生,喜欢刷qq,贴吧,知乎和小红书" + PERSONALITY_1: float = 0.6 # 第一种人格概率 + PERSONALITY_2: float = 0.3 # 第二种人格概率 + PERSONALITY_3: float = 0.1 # 第三种人格概率 + @staticmethod def get_config_dir() -> str: """获取配置文件目录""" @@ -99,6 +104,9 @@ class BotConfig: config.PROMPT_PERSONALITY=personality_config.get('prompt_personality',config.PROMPT_PERSONALITY) 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.PERSONALITY_1=personality_config.get('personality_1_probability',config.PERSONALITY_1) + config.PERSONALITY_2=personality_config.get('personality_2_probability',config.PERSONALITY_2) + config.PERSONALITY_3=personality_config.get('personality_3_probability',config.PERSONALITY_3) if "emoji" in toml_dict: emoji_config = toml_dict["emoji"] diff --git a/src/plugins/chat/message_sender.py b/src/plugins/chat/message_sender.py index 3e30b3cbe..0e838d74c 100644 --- a/src/plugins/chat/message_sender.py +++ b/src/plugins/chat/message_sender.py @@ -161,8 +161,7 @@ class MessageManager: #优先等待这条消息 message_earliest.update_thinking_time() thinking_time = message_earliest.thinking_time - if thinking_time % 10 == 0: - print(f"\033[1;34m[调试]\033[0m 消息正在思考中,已思考{int(thinking_time)}秒") + print(f"\033[1;34m[调试]\033[0m 消息正在思考中,已思考{int(thinking_time)}秒\033[K\r", end='', flush=True) else:# 如果不是message_thinking就只能是message_sending print(f"\033[1;34m[调试]\033[0m 消息'{message_earliest.processed_plain_text}'正在发送中") #直接发,等什么呢 diff --git a/src/plugins/chat/prompt_builder.py b/src/plugins/chat/prompt_builder.py index 7c398583a..442aa57e0 100644 --- a/src/plugins/chat/prompt_builder.py +++ b/src/plugins/chat/prompt_builder.py @@ -127,16 +127,23 @@ class PromptBuilder: #人格选择 personality=global_config.PROMPT_PERSONALITY + probability_1 = global_config.PERSONALITY_1 + probability_2 = global_config.PERSONALITY_2 + probability_3 = global_config.PERSONALITY_3 prompt_personality = '' personality_choice = random.random() - if personality_choice < 4/6: # 第一种人格 + if personality_choice < probability_1: # 第一种人格 prompt_personality = f'''{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},{personality[0]}, 你正在浏览qq群,{promt_info_prompt}, 现在请你给出日常且口语化的回复,平淡一些,尽量简短一些。{is_bot_prompt} 请注意把握群里的聊天内容,不要刻意突出自身学科背景,不要回复的太有条理,可以有个性。''' - elif personality_choice < 1: # 第二种人格 + elif personality_choice < probability_1 + probability_2: # 第二种人格 prompt_personality = f'''{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},{personality[1]}, 你正在浏览qq群,{promt_info_prompt}, 现在请你给出日常且口语化的回复,请表现你自己的见解,不要一昧迎合,尽量简短一些。{is_bot_prompt} 请你表达自己的见解和观点。可以有个性。''' + else: # 第三种人格 + prompt_personality = f'''{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},{personality[2]}, 你正在浏览qq群,{promt_info_prompt}, + 现在请你给出日常且口语化的回复,请表现你自己的见解,不要一昧迎合,尽量简短一些。{is_bot_prompt} + 请你表达自己的见解和观点。可以有个性。''' #中文高手(新加的好玩功能) prompt_ger = '' @@ -163,10 +170,12 @@ class PromptBuilder: activate_prompt_check=f"以上是群里正在进行的聊天,昵称为 '{sender_name}' 的用户说的:{message_txt}。引起了你的注意,你和他{relation_prompt},你想要{relation_prompt_2},但是这不一定是合适的时机,请你决定是否要回应这条消息。" prompt_personality_check = '' extra_check_info=f"请注意把握群里的聊天内容的基础上,综合群内的氛围,例如,和{global_config.BOT_NICKNAME}相关的话题要积极回复,如果是at自己的消息一定要回复,如果自己正在和别人聊天一定要回复,其他话题如果合适搭话也可以回复,如果认为应该回复请输出yes,否则输出no,请注意是决定是否需要回复,而不是编写回复内容,除了yes和no不要输出任何回复内容。" - if personality_choice < 4/6: # 第一种人格 + if personality_choice < probability_1: # 第一种人格 prompt_personality_check = f'''你的网名叫{global_config.BOT_NICKNAME},{personality[0]}, 你正在浏览qq群,{promt_info_prompt} {activate_prompt_check} {extra_check_info}''' - elif personality_choice < 1: # 第二种人格 + elif personality_choice < probability_1 + probability_2: # 第二种人格 prompt_personality_check = f'''你的网名叫{global_config.BOT_NICKNAME},{personality[1]}, 你正在浏览qq群,{promt_info_prompt} {activate_prompt_check} {extra_check_info}''' + else: # 第三种人格 + prompt_personality_check = f'''你的网名叫{global_config.BOT_NICKNAME},{personality[2]}, 你正在浏览qq群,{promt_info_prompt} {activate_prompt_check} {extra_check_info}''' prompt_check_if_response=f"{prompt_info}\n{prompt_date}\n{chat_talking_prompt}\n{prompt_personality_check}" @@ -198,10 +207,12 @@ class PromptBuilder: personality=global_config.PROMPT_PERSONALITY prompt_personality = '' personality_choice = random.random() - if personality_choice < 4/6: # 第一种人格 + if personality_choice < probability_1: # 第一种人格 prompt_personality = f'''{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},{personality[0]}''' - elif personality_choice < 1: # 第二种人格 + elif personality_choice < probability_1 + probability_2: # 第二种人格 prompt_personality = f'''{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},{personality[1]}''' + else: # 第三种人格 + prompt_personality = f'''{activate_prompt}你的网名叫{global_config.BOT_NICKNAME},{personality[2]}''' topics_str=','.join(f"\"{topics}\"") prompt_for_select=f"你现在想在群里发言,回忆了一下,想到几个话题,分别是{topics_str},综合当前状态以及群内气氛,请你在其中选择一个合适的话题,注意只需要输出话题,除了话题什么也不要输出(双引号也不要输出)"