调整成函数
This commit is contained in:
@@ -38,42 +38,20 @@ class PromptBuilder:
|
|||||||
Returns:
|
Returns:
|
||||||
str: 构建好的prompt
|
str: 构建好的prompt
|
||||||
"""
|
"""
|
||||||
# 关系(载入当前聊天记录里所以人的关系)
|
# 关系(载入当前聊天记录里部分人的关系)
|
||||||
relationship_level = ["厌恶", "冷漠", "一般", "友好", "喜欢", "爱慕"]
|
|
||||||
relation_prompt2_list = ["极度厌恶,冷漠回应或直接辱骂", "关系较差,冷淡回复", "关系一般,保持理性",
|
|
||||||
"关系较好,愿意回复", "关系很好,积极回复", "关系暧昧,无条件支持", ]
|
|
||||||
relation_prompt = ""
|
|
||||||
who_chat_in_group = [chat_stream]
|
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)
|
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
|
||||||
|
)
|
||||||
|
relation_prompt = ""
|
||||||
for person in who_chat_in_group:
|
for person in who_chat_in_group:
|
||||||
relationship_value = relationship_manager.get_relationship(person).relationship_value
|
relation_prompt += relationship_manager.build_relationship_info(person)
|
||||||
relationship_level_num = 2
|
|
||||||
if -1000 <= relationship_value < -227:
|
|
||||||
relationship_level_num = 0
|
|
||||||
elif -227 <= relationship_value < -73:
|
|
||||||
relationship_level_num = 1
|
|
||||||
elif -76 <= relationship_value < 227:
|
|
||||||
relationship_level_num = 2
|
|
||||||
elif 227 <= relationship_value < 587:
|
|
||||||
relationship_level_num = 3
|
|
||||||
elif 587 <= relationship_value < 900:
|
|
||||||
relationship_level_num = 4
|
|
||||||
elif 900 <= relationship_value <= 1000: # 不是随便写的数据喵
|
|
||||||
relationship_level_num = 5
|
|
||||||
elif relationship_value > 1000 or relationship_value < -1000:
|
|
||||||
if relationship_value > 1000:
|
|
||||||
relationship_level_num = 5
|
|
||||||
else:
|
|
||||||
relationship_level_num = 0
|
|
||||||
logger.debug("relationship_value 超出有效范围 (-1000 到 1000)")
|
|
||||||
if person.user_info.user_cardname:
|
|
||||||
relation_prompt += f"你对昵称为'[({person.user_info.user_id}){person.user_info.user_nickname}]{person.user_info.user_cardname}'的用户的态度为{relationship_level[relationship_level_num]},"
|
|
||||||
relation_prompt += f"回复态度为{relation_prompt2_list[relationship_level_num]},关系等级为{relationship_level_num}。"
|
|
||||||
else:
|
|
||||||
relation_prompt += f"你对昵称为'({person.user_info.user_id}){person.user_info.user_nickname}'的用户的态度为{relationship_level[relationship_level_num]},"
|
|
||||||
relation_prompt += f"回复态度为{relation_prompt2_list[relationship_level_num]},关系等级为{relationship_level_num}。"
|
|
||||||
|
|
||||||
relation_prompt_all = f"{relation_prompt},关系等级越大,关系越好,请分析聊天记录,根据你和说话者{sender_name}的关系和态度进行回复,明确你的立场和情感。"
|
relation_prompt_all = (
|
||||||
|
f"{relation_prompt},关系等级越大,关系越好,请分析聊天记录,根据你和说话者{sender_name}的关系和态度进行回复,明确你的立场和情感。"
|
||||||
|
)
|
||||||
|
|
||||||
# 开始构建prompt
|
# 开始构建prompt
|
||||||
|
|
||||||
|
|||||||
@@ -271,13 +271,13 @@ class RelationshipManager:
|
|||||||
}
|
}
|
||||||
|
|
||||||
valuedict = {
|
valuedict = {
|
||||||
"happy": 1.0,
|
"happy": 1.5,
|
||||||
"angry": -2.0,
|
"angry": -3.0,
|
||||||
"sad": -1.0,
|
"sad": -1.5,
|
||||||
"surprised": 0.4,
|
"surprised": 0.6,
|
||||||
"disgusted": -3,
|
"disgusted": -4.5,
|
||||||
"fearful": -1.4,
|
"fearful": -2.1,
|
||||||
"neutral": 0.2,
|
"neutral": 0.3,
|
||||||
}
|
}
|
||||||
if self.get_relationship(chat_stream):
|
if self.get_relationship(chat_stream):
|
||||||
old_value = self.get_relationship(chat_stream).relationship_value
|
old_value = self.get_relationship(chat_stream).relationship_value
|
||||||
@@ -296,7 +296,7 @@ class RelationshipManager:
|
|||||||
if old_value > 500:
|
if old_value > 500:
|
||||||
high_value_count = 0
|
high_value_count = 0
|
||||||
for key, relationship in self.relationships.items():
|
for key, relationship in self.relationships.items():
|
||||||
if relationship.relationship_value >= 900:
|
if relationship.relationship_value >= 850:
|
||||||
high_value_count += 1
|
high_value_count += 1
|
||||||
value *= 3/(high_value_count + 3)
|
value *= 3/(high_value_count + 3)
|
||||||
elif valuedict[label] < 0 and stancedict[stance] != 0:
|
elif valuedict[label] < 0 and stancedict[stance] != 0:
|
||||||
@@ -311,11 +311,41 @@ class RelationshipManager:
|
|||||||
else:
|
else:
|
||||||
value = 0
|
value = 0
|
||||||
|
|
||||||
logger.debug(f"[关系变更调试] 立场:{stance} 标签:{label} 关系值:{value} 原值:{old_value}")
|
logger.info(f"[关系变更] 立场:{stance} 标签:{label} 关系值:{value}")
|
||||||
|
|
||||||
await self.update_relationship_value(
|
await self.update_relationship_value(
|
||||||
chat_stream=chat_stream, relationship_value=value
|
chat_stream=chat_stream, relationship_value=value
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def build_relationship_info(person) -> str:
|
||||||
|
relationship_value = relationship_manager.get_relationship(person).relationship_value
|
||||||
|
if -1000 <= relationship_value < -227:
|
||||||
|
level_num = 0
|
||||||
|
elif -227 <= relationship_value < -73:
|
||||||
|
level_num = 1
|
||||||
|
elif -76 <= relationship_value < 227:
|
||||||
|
level_num = 2
|
||||||
|
elif 227 <= relationship_value < 587:
|
||||||
|
level_num = 3
|
||||||
|
elif 587 <= relationship_value < 900:
|
||||||
|
level_num = 4
|
||||||
|
elif 900 <= relationship_value <= 1000:
|
||||||
|
level_num = 5
|
||||||
|
else:
|
||||||
|
level_num = 5 if relationship_value > 1000 else 0
|
||||||
|
|
||||||
|
relationship_level = ["厌恶", "冷漠", "一般", "友好", "喜欢", "暧昧"]
|
||||||
|
relation_prompt2_list = [
|
||||||
|
"冷漠回应或直接辱骂", "冷淡回复",
|
||||||
|
"保持理性", "愿意回复",
|
||||||
|
"积极回复", "无条件支持",
|
||||||
|
]
|
||||||
|
if person.user_info.user_cardname:
|
||||||
|
return (f"你对昵称为'[({person.user_info.user_id}){person.user_info.user_nickname}]{person.user_info.user_cardname}'的用户的态度为{relationship_level[level_num]},"
|
||||||
|
f"回复态度为{relation_prompt2_list[level_num]},关系等级为{level_num}。")
|
||||||
|
else:
|
||||||
|
return (f"你对昵称为'({person.user_info.user_id}){person.user_info.user_nickname}'的用户的态度为{relationship_level[level_num]},"
|
||||||
|
f"回复态度为{relation_prompt2_list[level_num]},关系等级为{level_num}。")
|
||||||
|
|
||||||
|
|
||||||
relationship_manager = RelationshipManager()
|
relationship_manager = RelationshipManager()
|
||||||
|
|||||||
Reference in New Issue
Block a user