🤖 自动格式化代码 [skip ci]
This commit is contained in:
@@ -6,8 +6,10 @@ from src.plugins.config.config import global_config
|
||||
from src.common.database import db
|
||||
from src.common.logger import get_module_logger
|
||||
import traceback
|
||||
|
||||
logger = get_module_logger("observation")
|
||||
|
||||
|
||||
# 所有观察的基类
|
||||
class Observation:
|
||||
def __init__(self, observe_type, observe_id):
|
||||
@@ -42,7 +44,7 @@ class ChattingObservation(Observation):
|
||||
self.max_mid_memory_len = 5
|
||||
self.mid_memory_info = ""
|
||||
self.now_message_info = ""
|
||||
|
||||
|
||||
self.updating_old = False
|
||||
|
||||
self.llm_summary = LLM_request(
|
||||
@@ -50,43 +52,42 @@ class ChattingObservation(Observation):
|
||||
)
|
||||
|
||||
# 进行一次观察 返回观察结果observe_info
|
||||
def get_observe_info(self, ids = None):
|
||||
def get_observe_info(self, ids=None):
|
||||
if ids:
|
||||
mid_memory_str = ""
|
||||
for id in ids:
|
||||
print(f"id:{id}")
|
||||
try:
|
||||
for mid_memory in self.mid_memorys:
|
||||
if mid_memory['id'] == id:
|
||||
if mid_memory["id"] == id:
|
||||
mid_memory_by_id = mid_memory
|
||||
msg_str = ""
|
||||
for msg in mid_memory_by_id['messages']:
|
||||
for msg in mid_memory_by_id["messages"]:
|
||||
msg_str += f"{msg['detailed_plain_text']}"
|
||||
time_diff = int((datetime.now().timestamp() - mid_memory_by_id['created_at']) / 60)
|
||||
time_diff = int((datetime.now().timestamp() - mid_memory_by_id["created_at"]) / 60)
|
||||
mid_memory_str += f"距离现在{time_diff}分钟前:\n{msg_str}\n"
|
||||
except Exception as e:
|
||||
logger.error(f"获取mid_memory_id失败: {e}")
|
||||
traceback.print_exc()
|
||||
# print(f"获取mid_memory_id失败: {e}")
|
||||
return self.now_message_info
|
||||
|
||||
|
||||
return mid_memory_str + "现在群里正在聊:\n" + self.now_message_info
|
||||
|
||||
|
||||
else:
|
||||
return self.now_message_info
|
||||
|
||||
|
||||
async def observe(self):
|
||||
# 查找新消息
|
||||
new_messages = list(
|
||||
db.messages.find({"chat_id": self.chat_id, "time": {"$gt": self.last_observe_time}})
|
||||
.sort("time", 1)
|
||||
db.messages.find({"chat_id": self.chat_id, "time": {"$gt": self.last_observe_time}}).sort("time", 1)
|
||||
) # 按时间正序排列
|
||||
|
||||
|
||||
if not new_messages:
|
||||
return self.observe_info # 没有新消息,返回上次观察结果
|
||||
|
||||
self.last_observe_time = new_messages[-1]["time"]
|
||||
|
||||
|
||||
self.talking_message.extend(new_messages)
|
||||
|
||||
# 将新消息转换为字符串格式
|
||||
@@ -98,7 +99,7 @@ class ChattingObservation(Observation):
|
||||
# print(f"new_messages_str:{new_messages_str}")
|
||||
|
||||
# 将新消息添加到talking_message,同时保持列表长度不超过20条
|
||||
|
||||
|
||||
if len(self.talking_message) > self.max_now_obs_len and not self.updating_old:
|
||||
self.updating_old = True
|
||||
# 计算需要保留的消息数量
|
||||
@@ -123,37 +124,31 @@ class ChattingObservation(Observation):
|
||||
"messages": oldest_messages,
|
||||
"timestamps": oldest_timestamps,
|
||||
"chat_id": self.chat_id,
|
||||
"created_at": datetime.now().timestamp()
|
||||
"created_at": datetime.now().timestamp(),
|
||||
}
|
||||
# print(f"mid_memory:{mid_memory}")
|
||||
# 存入内存中的 mid_memorys
|
||||
self.mid_memorys.append(mid_memory)
|
||||
if len(self.mid_memorys) > self.max_mid_memory_len:
|
||||
self.mid_memorys.pop(0)
|
||||
|
||||
|
||||
mid_memory_str = "之前聊天的内容概括是:\n"
|
||||
for mid_memory in self.mid_memorys:
|
||||
time_diff = int((datetime.now().timestamp() - mid_memory['created_at']) / 60)
|
||||
time_diff = int((datetime.now().timestamp() - mid_memory["created_at"]) / 60)
|
||||
mid_memory_str += f"距离现在{time_diff}分钟前(聊天记录id:{mid_memory['id']}):{mid_memory['theme']}\n"
|
||||
self.mid_memory_info = mid_memory_str
|
||||
|
||||
|
||||
|
||||
self.updating_old = False
|
||||
|
||||
|
||||
# print(f"处理后self.talking_message:{self.talking_message}")
|
||||
|
||||
now_message_str = ""
|
||||
now_message_str += self.translate_message_list_to_str(talking_message=self.talking_message)
|
||||
self.now_message_info = now_message_str
|
||||
|
||||
|
||||
|
||||
|
||||
logger.debug(f"压缩早期记忆:{self.mid_memory_info}\n现在聊天内容:{self.now_message_info}")
|
||||
|
||||
|
||||
async def update_talking_summary(self, new_messages_str):
|
||||
|
||||
|
||||
prompt = ""
|
||||
# prompt += f"{personality_info}"
|
||||
prompt += f"你的名字叫:{self.name}\n,标识'{self.name}'的都是你自己说的话"
|
||||
|
||||
Reference in New Issue
Block a user