better:心流升级,大大减少了复读情况,并且灵活调用工具来实现知识和记忆检索

This commit is contained in:
SengokuCola
2025-04-10 23:32:28 +08:00
parent 110f94353f
commit 54f7b73ec4
10 changed files with 729 additions and 597 deletions

View File

@@ -68,20 +68,24 @@ class ChattingObservation(Observation):
self.translate_message_list_to_str()
# 更新观察次数
self.observe_times += 1
# self.observe_times += 1
self.last_observe_time = new_messages[-1]["time"]
# 检查是否需要更新summary
current_time = int(datetime.now().timestamp())
if current_time - self.last_summary_time >= 30: # 如果超过30秒重置计数
self.summary_count = 0
self.last_summary_time = current_time
# current_time = int(datetime.now().timestamp())
# if current_time - self.last_summary_time >= 30: # 如果超过30秒重置计数
# self.summary_count = 0
# self.last_summary_time = current_time
if self.summary_count < self.max_update_in_30s: # 如果30秒内更新次数小于2次
await self.update_talking_summary(new_messages_str)
self.summary_count += 1
# if self.summary_count < self.max_update_in_30s: # 如果30秒内更新次数小于2次
# await self.update_talking_summary(new_messages_str)
# print(f"更新聊天总结:{self.observe_info}11111111111111")
# self.summary_count += 1
updated_observe_info = await self.update_talking_summary(new_messages_str)
print(f"更新聊天总结:{updated_observe_info}11111111111111")
self.observe_info = updated_observe_info
return self.observe_info
return updated_observe_info
async def carefully_observe(self):
# 查找新消息限制最多40条
@@ -110,43 +114,46 @@ class ChattingObservation(Observation):
self.observe_times += 1
self.last_observe_time = new_messages[-1]["time"]
await self.update_talking_summary(new_messages_str)
return self.observe_info
updated_observe_info = await self.update_talking_summary(new_messages_str)
self.observe_info = updated_observe_info
return updated_observe_info
async def update_talking_summary(self, new_messages_str):
# 基于已经有的talking_summary和新的talking_message生成一个summary
# print(f"更新聊天总结:{self.talking_summary}")
# 开始构建prompt
prompt_personality = ""
# person
individuality = Individuality.get_instance()
# prompt_personality = "你"
# # person
# individuality = Individuality.get_instance()
personality_core = individuality.personality.personality_core
prompt_personality += personality_core
# personality_core = individuality.personality.personality_core
# prompt_personality += personality_core
personality_sides = individuality.personality.personality_sides
random.shuffle(personality_sides)
prompt_personality += f",{personality_sides[0]}"
# personality_sides = individuality.personality.personality_sides
# random.shuffle(personality_sides)
# prompt_personality += f",{personality_sides[0]}"
identity_detail = individuality.identity.identity_detail
random.shuffle(identity_detail)
prompt_personality += f",{identity_detail[0]}"
# identity_detail = individuality.identity.identity_detail
# random.shuffle(identity_detail)
# prompt_personality += f",{identity_detail[0]}"
personality_info = prompt_personality
# personality_info = prompt_personality
prompt = ""
prompt += f"{personality_info},请注意识别你自己的聊天发言"
prompt += f"你的名字叫:{self.name},你的昵称是:{self.nick_name}\n"
# prompt += f"{personality_info}"
prompt += f"你的名字叫:{self.name}\n,标识'{self.name}'的都是你自己说的话"
prompt += f"你正在参与一个qq群聊的讨论你记得这个群之前在聊的内容是{self.observe_info}\n"
prompt += f"现在群里的群友们产生了新的讨论,有了新的发言,具体内容如下:{new_messages_str}\n"
prompt += """以上是群里在进行的聊天,请你对这个聊天内容进行总结,总结内容要包含聊天的大致内容,
以及聊天中的一些重要信息,注意识别你自己的发言,记得不要分点,不要太长,精简的概括成一段文本\n"""
prompt += """以上是群里在进行的聊天,请你对这个聊天内容进行总结,总结内容要包含聊天的大致内容,目前最新讨论的话题
以及聊天中的一些重要信息,记得不要分点,精简的概括成一段文本\n"""
prompt += "总结概括:"
try:
self.observe_info, reasoning_content = await self.llm_summary.generate_response_async(prompt)
updated_observe_info, reasoning_content = await self.llm_summary.generate_response_async(prompt)
except Exception as e:
print(f"获取总结失败: {e}")
self.observe_info = ""
updated_observe_info = ""
return updated_observe_info
# print(f"prompt{prompt}")
# print(f"self.observe_info{self.observe_info}")