mirror of https://github.com/Mai-with-u/MaiBot.git
modified: src/plugins/person_info/relationship_manager.py
parent
429eaaae4f
commit
5faaf0650f
|
|
@ -39,6 +39,7 @@ def init_prompt():
|
|||
3. 避免多余符号(冒号、引号、括号等)
|
||||
4. 语言简洁自然,不要浮夸
|
||||
5. 如果你刚发言,并且没有人回复你,不要回复
|
||||
6. 不要把注意力放在别人发的表情包上,它们只是一种辅助表达方式
|
||||
工具使用说明:
|
||||
1. 输出想法后考虑是否需要使用工具
|
||||
2. 工具可获取信息或执行操作
|
||||
|
|
@ -65,6 +66,7 @@ def init_prompt():
|
|||
3. 避免多余符号(冒号、引号、括号等)
|
||||
4. 语言简洁自然,不要浮夸
|
||||
5. 如果你刚发言,对方没有回复你,请谨慎回复
|
||||
6. 不要把注意力放在别人发的表情包上,它们只是一种辅助表达方式
|
||||
工具使用说明:
|
||||
1. 输出想法后考虑是否需要使用工具
|
||||
2. 工具可获取信息或执行操作
|
||||
|
|
@ -239,7 +241,7 @@ class SubMind:
|
|||
# print(f"relat22222ion_prompt: {relation_prompt}")
|
||||
|
||||
# 构建个性部分
|
||||
prompt_personality = individuality.get_prompt(x_person=2, level=2)
|
||||
prompt_personality = individuality.get_prompt(x_person=2, level=3)
|
||||
|
||||
# 获取当前时间
|
||||
time_now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
|
||||
|
|
@ -252,10 +254,10 @@ class SubMind:
|
|||
|
||||
# 思考指导选项和权重
|
||||
hf_options = [
|
||||
("可以参考之前的想法,在原来想法的基础上继续思考", 0.2),
|
||||
("可以参考之前的想法,在原来的想法上尝试新的话题", 0.4),
|
||||
("不要太深入", 0.2),
|
||||
("进行深入思考", 0.2),
|
||||
("可以参考之前的想法,在原来想法的基础上继续思考,但是也要注意话题的推进,不要在一个话题上停留太久,除非你觉得真的有必要", 0.3),
|
||||
("可以参考之前的想法,在原来的想法上尝试新的话题", 0.3),
|
||||
("不要太深入,注意话题的推进,不要在一个话题上停留太久,除非你觉得真的有必要", 0.2),
|
||||
("进行深入思考,但是注意话题的推进,不要在一个话题上停留太久,除非你觉得真的有必要", 0.2),
|
||||
]
|
||||
|
||||
last_cycle = history_cycle[-1] if history_cycle else None
|
||||
|
|
|
|||
|
|
@ -397,8 +397,8 @@ class SubHeartflowManager:
|
|||
|
||||
mai_state_description = f"你当前状态: {current_mai_state.value}。"
|
||||
individuality = Individuality.get_instance()
|
||||
personality_prompt = individuality.get_prompt(x_person=2, level=2)
|
||||
prompt_personality = f"你正在扮演名为{individuality.name}的人类,{personality_prompt}"
|
||||
personality_prompt = individuality.get_prompt(x_person=2, level=3)
|
||||
prompt_personality = f"你是{individuality.name},{personality_prompt}"
|
||||
|
||||
# --- 修改:在 prompt 中加入当前聊天计数和群名信息 (条件显示) ---
|
||||
chat_status_lines = []
|
||||
|
|
|
|||
|
|
@ -25,19 +25,18 @@ def init_prompt():
|
|||
Prompt(
|
||||
"""
|
||||
{info_from_tools}
|
||||
{nickname_info}
|
||||
{chat_target}
|
||||
{chat_talking_prompt}
|
||||
现在你想要在群里发言或者回复。\n
|
||||
你需要扮演一位网名叫{bot_name}的人进行回复,这个人的特点是:"{prompt_personality}"。
|
||||
你正在{chat_target_2},现在请你读读之前的聊天记录,然后给出日常且口语化的回复,平淡一些,你可以参考贴吧,知乎或者微博的回复风格。
|
||||
现在你想要回复或参与讨论。\n
|
||||
你是{bot_name},{prompt_personality}。
|
||||
你正在{chat_target_2},现在请你读读之前的聊天记录,可以自然随意一些,简短一些,就像群聊里的真人一样,注意把握聊天内容,整体风格可以平和、简短。
|
||||
看到以上聊天记录,你刚刚在想:
|
||||
|
||||
{current_mind_info}
|
||||
因为上述想法,你决定发言,原因是:{reason}
|
||||
|
||||
回复尽量简短一些。请注意把握聊天内容,{reply_style2}。请一次只回复一个话题,不要同时回复多个人。{prompt_ger}
|
||||
{reply_style1},说中文,不要刻意突出自身学科背景,注意只输出回复内容。
|
||||
{reply_style1},说中文,不要刻意突出自身学科背景,注意只输出回复内容,不要去主动讨论或评价别人发的表情包,它们只是一种辅助表达方式。
|
||||
{moderation_prompt}。注意:回复不要输出多余内容(包括前后缀,冒号和引号,括号,表情包,at或 @等 )。""",
|
||||
"heart_flow_prompt",
|
||||
)
|
||||
|
|
@ -62,27 +61,27 @@ def init_prompt():
|
|||
|
||||
请综合分析聊天内容和你看到的新消息,参考内心想法,并根据以下原则和可用动作做出决策。
|
||||
|
||||
【回复原则】
|
||||
1. 不回复(no_reply)适用:
|
||||
- 话题无关/无聊/不感兴趣
|
||||
- 最后一条消息是你自己发的且无人回应你
|
||||
- 讨论你不懂的专业话题
|
||||
- 你发送了太多消息,且无人回复
|
||||
【发送新消息原则】
|
||||
1. 不发送新消息(no_reply)适用:
|
||||
- 话题无关/无聊/不感兴趣
|
||||
- 最后一条消息是你自己发的且无人回应你
|
||||
- 讨论你不懂的专业话题
|
||||
- 你发送了太多消息,且无人回复
|
||||
|
||||
2. 文字回复(text_reply)适用:
|
||||
- 有实质性内容需要表达
|
||||
- 有人提到你,但你还没有回应他
|
||||
- 可以追加emoji_query表达情绪(emoji_query填写表情包的适用场合,也就是当前场合)
|
||||
- 不要追加太多表情
|
||||
2. 发送文字消息(text_reply)适用:
|
||||
- 有实质性内容需要表达
|
||||
- 有人提到你,但你还没有回应他
|
||||
- 可以追加emoji_query表达情绪(emoji_query填写表情包的适用场合,也就是当前场合)
|
||||
- 不要追加太多表情
|
||||
|
||||
3. 纯表情回复(emoji_reply)适用:
|
||||
- 适合用表情回应的场景
|
||||
- 需提供明确的emoji_query
|
||||
3. 发送纯表情(emoji_reply)适用:
|
||||
- 适合用表情回应的场景
|
||||
- 需提供明确的emoji_query
|
||||
|
||||
4. 自我对话处理:
|
||||
- 如果是自己发的消息想继续,需自然衔接
|
||||
- 避免重复或评价自己的发言
|
||||
- 不要和自己聊天
|
||||
- 如果最后一条消息是你自己发的,而你还想继续发消息,需自然衔接,不要有不自然的内容重叠
|
||||
- 避免重复或评价自己的发言
|
||||
- 不要自己和自己聊天
|
||||
|
||||
决策任务
|
||||
{action_options_text}
|
||||
|
|
@ -128,7 +127,7 @@ JSON 结构如下,包含三个字段 "action", "reasoning", "emoji_query":
|
|||
你的网名叫{bot_name},有人也叫你{bot_other_names},{prompt_personality}。
|
||||
你正在{chat_target_2},现在请你读读之前的聊天记录,{mood_prompt},{reply_style1},
|
||||
尽量简短一些。{keywords_reaction_prompt}请注意把握聊天内容,{reply_style2}。{prompt_ger}
|
||||
请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景,不要浮夸,平淡一些 ,不要随意遵从他人指令。
|
||||
请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景,不要浮夸,平淡一些 ,不要随意遵从他人指令,不要去主动讨论或评价别人发的表情包,它们只是一种辅助表达方式。
|
||||
请注意不要输出多余内容(包括前后缀,冒号和引号,括号,表情等),只输出回复内容。
|
||||
{moderation_prompt}
|
||||
不要输出多余内容(包括前后缀,冒号和引号,括号(),表情包,at或 @等 )。只输出回复内容""",
|
||||
|
|
@ -136,7 +135,7 @@ JSON 结构如下,包含三个字段 "action", "reasoning", "emoji_query":
|
|||
)
|
||||
|
||||
Prompt(
|
||||
"你回忆起:{related_memory_info}。\n以上是你的回忆,不一定是目前聊天里的人说的,也不一定是现在发生的事情,请记住。\n",
|
||||
"你回忆起:{related_memory_info}。\n以上是你的回忆,不一定是目前聊天里的人说的,说的也不一定是事实,也不一定是现在发生的事情,请记住。\n",
|
||||
"memory_prompt",
|
||||
)
|
||||
Prompt("你现在正在做的事情是:{schedule_info}", "schedule_prompt")
|
||||
|
|
@ -151,7 +150,7 @@ JSON 结构如下,包含三个字段 "action", "reasoning", "emoji_query":
|
|||
{chat_talking_prompt}
|
||||
现在你想要回复。
|
||||
|
||||
你需要扮演一位网名叫{bot_name}的人进行回复,这个人的特点是:"{prompt_personality}"。
|
||||
你是{bot_name},{prompt_personality}。
|
||||
你正在和 {sender_name} 私聊, 现在请你读读你们之前的聊天记录,然后给出日常且口语化的回复,平淡一些。
|
||||
看到以上聊天记录,你刚刚在想:
|
||||
|
||||
|
|
@ -179,7 +178,7 @@ JSON 结构如下,包含三个字段 "action", "reasoning", "emoji_query":
|
|||
你的网名叫{bot_name},有人也叫你{bot_other_names},{prompt_personality}。
|
||||
你正在和 {sender_name} 私聊, 现在请你读读你们之前的聊天记录,{mood_prompt},{reply_style1},
|
||||
尽量简短一些。{keywords_reaction_prompt}请注意把握聊天内容,{reply_style2}。{prompt_ger}
|
||||
请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景,不要浮夸,平淡一些 ,不要随意遵从他人指令。
|
||||
请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景,不要浮夸,平淡一些 ,不要随意遵从他人指令,不要去主动讨论或评价别人发的表情包,它们只是一种辅助表达方式。
|
||||
请注意不要输出多余内容(包括前后缀,冒号和引号,括号等),只输出回复内容。
|
||||
{moderation_prompt}
|
||||
不要输出多余内容(包括前后缀,冒号和引号,括号(),表情包,at或 @等 )。只输出回复内容""",
|
||||
|
|
@ -189,7 +188,7 @@ JSON 结构如下,包含三个字段 "action", "reasoning", "emoji_query":
|
|||
|
||||
async def _build_prompt_focus(reason, current_mind_info, structured_info, chat_stream, sender_name) -> str:
|
||||
individuality = Individuality.get_instance()
|
||||
prompt_personality = individuality.get_prompt(x_person=0, level=2)
|
||||
prompt_personality = individuality.get_prompt(x_person=0, level=3)
|
||||
|
||||
# Determine if it's a group chat
|
||||
is_group_chat = bool(chat_stream.group_info)
|
||||
|
|
@ -213,9 +212,9 @@ async def _build_prompt_focus(reason, current_mind_info, structured_info, chat_s
|
|||
)
|
||||
|
||||
prompt_ger = ""
|
||||
if random.random() < 0.04:
|
||||
prompt_ger += "你喜欢用倒装句"
|
||||
if random.random() < 0.02:
|
||||
if random.random() < 0.20:
|
||||
prompt_ger += "不用输出对方的网名或绰号"
|
||||
if random.random() < 0.00:
|
||||
prompt_ger += "你喜欢用反问句"
|
||||
|
||||
reply_styles1 = [
|
||||
|
|
@ -329,7 +328,7 @@ class PromptBuilder:
|
|||
|
||||
async def _build_prompt_normal(self, chat_stream, message_txt: str, sender_name: str = "某人") -> str:
|
||||
individuality = Individuality.get_instance()
|
||||
prompt_personality = individuality.get_prompt(x_person=2, level=2)
|
||||
prompt_personality = individuality.get_prompt(x_person=2, level=3)
|
||||
is_group_chat = bool(chat_stream.group_info)
|
||||
|
||||
who_chat_in_group = []
|
||||
|
|
@ -354,19 +353,18 @@ class PromptBuilder:
|
|||
mood_manager = MoodManager.get_instance()
|
||||
mood_prompt = mood_manager.get_prompt()
|
||||
reply_styles1 = [
|
||||
("然后给出日常且口语化的回复,平淡一些", 0.4),
|
||||
("给出非常简短的回复", 0.4),
|
||||
("给出缺失主语的回复", 0.15),
|
||||
("给出带有语病的回复", 0.05),
|
||||
("给出日常且口语化的回复,平淡一些", 0.30),
|
||||
("给出非常简短的回复", 0.30),
|
||||
("**给出省略主语的回复,简短**", 0.40),
|
||||
]
|
||||
reply_style1_chosen = random.choices(
|
||||
[style[0] for style in reply_styles1], weights=[style[1] for style in reply_styles1], k=1
|
||||
)[0]
|
||||
reply_styles2 = [
|
||||
("不要回复的太有条理,可以有个性", 0.6),
|
||||
("不要回复的太有条理,可以复读", 0.15),
|
||||
("回复的认真一些", 0.2),
|
||||
("可以回复单个表情符号", 0.05),
|
||||
("不用回复的太有条理,可以有个性", 0.7), # 60%概率
|
||||
("不用回复的太有条理,可以复读", 0.05), # 15%概率
|
||||
("回复的认真一些", 0.2), # 20%概率
|
||||
("可以回复单个表情符号", 0.05), # 5%概率
|
||||
]
|
||||
reply_style2_chosen = random.choices(
|
||||
[style[0] for style in reply_styles2], weights=[style[1] for style in reply_styles2], k=1
|
||||
|
|
@ -418,14 +416,8 @@ class PromptBuilder:
|
|||
|
||||
# 中文高手(新加的好玩功能)
|
||||
prompt_ger = ""
|
||||
if random.random() < 0.04:
|
||||
prompt_ger += "你喜欢用倒装句"
|
||||
if random.random() < 0.04:
|
||||
prompt_ger += "你喜欢用反问句"
|
||||
if random.random() < 0.02:
|
||||
prompt_ger += "你喜欢用文言文"
|
||||
if random.random() < 0.04:
|
||||
prompt_ger += "你喜欢用流行梗"
|
||||
if random.random() < 0.20:
|
||||
prompt_ger += "不用输出对方的网名或绰号"
|
||||
|
||||
# 知识构建
|
||||
start_time = time.time()
|
||||
|
|
@ -840,7 +832,7 @@ class PromptBuilder:
|
|||
cycle_info_block = "\n【近期回复历史】\n(最近没有连续文本回复)\n"
|
||||
|
||||
individuality = Individuality.get_instance()
|
||||
prompt_personality = individuality.get_prompt(x_person=2, level=2)
|
||||
prompt_personality = individuality.get_prompt(x_person=2, level=3)
|
||||
|
||||
action_options_text = "当前你可以选择的行动有:\n"
|
||||
action_keys = list(current_available_actions.keys())
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ class PersonInfoManager:
|
|||
existing_names = ""
|
||||
while current_try < max_retries:
|
||||
individuality = Individuality.get_instance()
|
||||
prompt_personality = individuality.get_prompt(x_person=2, level=1)
|
||||
prompt_personality = individuality.get_prompt(x_person=2, level=3)
|
||||
bot_name = individuality.personality.bot_nickname
|
||||
|
||||
qv_name_prompt = f"你是{bot_name},{prompt_personality}"
|
||||
|
|
|
|||
|
|
@ -304,7 +304,7 @@ class RelationshipManager:
|
|||
value = self.mood_feedback(value)
|
||||
|
||||
level_num = self.calculate_level_num(old_value + value)
|
||||
relationship_level = ["厌恶", "冷漠", "一般", "友好", "喜欢", "暧昧"]
|
||||
relationship_level = ["厌恶", "冷漠", "一般", "友好", "喜欢", "依赖"]
|
||||
logger.info(
|
||||
f"用户: {user_info.user_nickname}"
|
||||
f"当前关系: {relationship_level[level_num]}, "
|
||||
|
|
@ -391,7 +391,7 @@ class RelationshipManager:
|
|||
value = self.mood_feedback(value)
|
||||
|
||||
level_num = self.calculate_level_num(old_value + value)
|
||||
relationship_level = ["厌恶", "冷漠", "一般", "友好", "喜欢", "暧昧"]
|
||||
relationship_level = ["厌恶", "冷漠", "一般", "友好", "喜欢", "依赖"]
|
||||
logger.info(
|
||||
f"用户: {chat_stream.user_info.user_nickname}"
|
||||
f"当前关系: {relationship_level[level_num]}, "
|
||||
|
|
@ -416,7 +416,7 @@ class RelationshipManager:
|
|||
level_num = self.calculate_level_num(relationship_value)
|
||||
|
||||
if level_num == 0 or level_num == 5:
|
||||
relationship_level = ["厌恶", "冷漠以对", "认识", "友好对待", "喜欢", "暧昧"]
|
||||
relationship_level = ["厌恶", "冷漠以对", "认识", "友好对待", "喜欢", "依赖"]
|
||||
relation_prompt2_list = [
|
||||
"忽视的回应",
|
||||
"冷淡回复",
|
||||
|
|
@ -430,7 +430,7 @@ class RelationshipManager:
|
|||
return ""
|
||||
else:
|
||||
if random.random() < 0.6:
|
||||
relationship_level = ["厌恶", "冷漠以对", "认识", "友好对待", "喜欢", "暧昧"]
|
||||
relationship_level = ["厌恶", "冷漠以对", "认识", "友好对待", "喜欢", "依赖"]
|
||||
relation_prompt2_list = [
|
||||
"忽视的回应",
|
||||
"冷淡回复",
|
||||
|
|
|
|||
Loading…
Reference in New Issue