This commit is contained in:
meng_xi_pan
2025-03-14 16:47:31 +08:00
parent 6a5316bcf8
commit 414340588d
3 changed files with 95 additions and 35 deletions

View File

@@ -17,34 +17,65 @@ class PromptBuilder:
self.prompt_built = ''
self.activate_messages = ''
async def _build_prompt(self,
message_txt: str,
sender_name: str = "某人",
relationship_value: float = 0.0,
stream_id: Optional[int] = None) -> tuple[str, str]:
async def _build_prompt(self,
chat_stream,
message_txt: str,
sender_name: str = "某人",
stream_id: Optional[int] = None) -> tuple[str, str]:
"""构建prompt
Args:
message_txt: 消息文本
sender_name: 发送者昵称
relationship_value: 关系值
# relationship_value: 关系值
group_id: 群组ID
Returns:
str: 构建好的prompt
"""
# 先禁用关系
if 0 > 30:
relation_prompt = "关系特别特别好,你很喜欢喜欢他"
relation_prompt_2 = "热情发言或者回复"
elif 0 < -20:
relation_prompt = "关系差,你很讨厌他"
relation_prompt_2 = "骂他"
else:
relation_prompt = "关系一般"
relation_prompt_2 = "发言或者回复"
# 关系
relationship_level = ["厌恶", "冷漠", "一般", "友好", "喜欢", "爱慕"]
# position_attitude_list = ["反驳", "中立", "支持"]
relation_prompt2 = ""
# position_attitude = ""
relation_prompt2_list = ["极度厌恶,冷漠回应或直接辱骂", "关系差,冷淡回复,保持距离", "关系一般,保持理性", \
"关系较好,友善回复,积极互动", "关系很好,积极回复,关心对方", "关系暧昧,热情回复,无条件支持", ]
relation_prompt = ""
who_chat_in_group = [chat_stream]
who_chat_in_group += get_recent_group_speaker(stream_id, (chat_stream.user_info.user_id, chat_stream.user_info.platform), limit=global_config.MAX_CONTEXT_SIZE)
for person in who_chat_in_group:
relationship_value = relationship_manager.get_relationship(person).relationship_value
if person.user_info.user_cardname:
relation_prompt += f"你对昵称为'[({person.user_info.user_id}){person.user_info.user_nickname}]{person.user_info.user_cardname}'的用户的态度为"
relation_prompt2 += f"你对昵称为'[({person.user_info.user_id}){person.user_info.user_nickname}]{person.user_info.user_cardname}'的用户的回复态度为"
else:
relation_prompt += f"你对昵称为'({person.user_info.user_id}){person.user_info.user_nickname}'的用户的态度为"
relation_prompt2 += f"你对昵称为'({person.user_info.user_id}){person.user_info.user_nickname}'的用户的回复态度为"
relationship_level_num = 2
# position_attitude_num = 1
if -1000 <= relationship_value < -227:
relationship_level_num = 0
# position_attitude_num = 0
elif -227 <= relationship_value < -73:
relationship_level_num = 1
# position_attitude_num = 0
elif -76 <= relationship_value < 227:
relationship_level_num = 2
# position_attitude_num = 1
elif 227 <= relationship_value < 587:
relationship_level_num = 3
# position_attitude_num = 2
elif 587 <= relationship_value < 900:
relationship_level_num = 4
# position_attitude_num = 2
elif 900 <= relationship_value <= 1000: # 不是随便写的数据!
relationship_level_num = 5
# position_attitude_num = 2
else:
logger.debug("relationship_value 超出有效范围 (-1000 到 1000)")
relation_prompt2 += relation_prompt2_list[relationship_level_num] + ""
# position_attitude = position_attitude_list[position_attitude_num]
relation_prompt += relationship_level[relationship_level_num] + ""
# 开始构建prompt