feat:为normal加入了关系的构建和使用
This commit is contained in:
@@ -124,31 +124,14 @@ class RelationshipManager:
|
||||
person_name = await person_info_manager.get_value(person_id, "person_name")
|
||||
if not person_name or person_name == "none":
|
||||
return ""
|
||||
# impression = await person_info_manager.get_value(person_id, "impression")
|
||||
points = await person_info_manager.get_value(person_id, "points") or []
|
||||
|
||||
if isinstance(points, str):
|
||||
try:
|
||||
points = ast.literal_eval(points)
|
||||
except (SyntaxError, ValueError):
|
||||
points = []
|
||||
|
||||
random_points = random.sample(points, min(5, len(points))) if points else []
|
||||
short_impression = await person_info_manager.get_value(person_id, "short_impression")
|
||||
|
||||
nickname_str = await person_info_manager.get_value(person_id, "nickname")
|
||||
platform = await person_info_manager.get_value(person_id, "platform")
|
||||
relation_prompt = f"'{person_name}' ,ta在{platform}上的昵称是{nickname_str}。"
|
||||
|
||||
# if impression:
|
||||
# relation_prompt += f"你对ta的印象是:{impression}。"
|
||||
|
||||
if random_points:
|
||||
for point in random_points:
|
||||
# print(f"point: {point}")
|
||||
# print(f"point[2]: {point[2]}")
|
||||
# print(f"point[0]: {point[0]}")
|
||||
point_str = f"时间:{point[2]}。内容:{point[0]}"
|
||||
relation_prompt += f"你记得{person_name}最近的点是:{point_str}。"
|
||||
if short_impression:
|
||||
relation_prompt += f"你对ta的印象是:{short_impression}。"
|
||||
|
||||
return relation_prompt
|
||||
|
||||
@@ -448,6 +431,35 @@ class RelationshipManager:
|
||||
|
||||
await person_info_manager.update_one_field(person_id, "impression", compressed_summary)
|
||||
|
||||
|
||||
|
||||
|
||||
compress_short_prompt = f"""
|
||||
你的名字是{global_config.bot.nickname},{global_config.bot.nickname}的别名是{alias_str}。
|
||||
请不要混淆你自己和{global_config.bot.nickname}和{person_name}。
|
||||
|
||||
你对{person_name}的了解是:
|
||||
{compressed_summary}
|
||||
|
||||
请你用一句话概括你对{person_name}的了解。突出:
|
||||
1.对{person_name}的直观印象
|
||||
2.{global_config.bot.nickname}与{person_name}的关系
|
||||
3.{person_name}的关键信息
|
||||
请输出一段平文本,以陈诉自白的语气,输出你对{person_name}的概括,不要输出任何其他内容。
|
||||
"""
|
||||
compressed_short_summary, _ = await self.relationship_llm.generate_response_async(prompt=compress_short_prompt)
|
||||
|
||||
# current_time = datetime.fromtimestamp(timestamp).strftime("%Y-%m-%d %H:%M:%S")
|
||||
# compressed_short_summary = f"截至{current_time},你对{person_name}的了解:{compressed_short_summary}"
|
||||
|
||||
await person_info_manager.update_one_field(person_id, "short_impression", compressed_short_summary)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
forgotten_points = []
|
||||
|
||||
# 这句代码的作用是:将更新后的 forgotten_points(遗忘的记忆点)列表,序列化为 JSON 字符串后,写回到数据库中的 forgotten_points 字段
|
||||
|
||||
Reference in New Issue
Block a user