fix:解耦海马体,莲藕促销

This commit is contained in:
SengokuCola
2025-03-27 20:07:01 +08:00
parent dce1fdd9fd
commit 2812b0df3c
8 changed files with 116 additions and 37 deletions

View File

@@ -3,7 +3,7 @@ import time
from typing import Optional
from ...common.database import db
from ..memory_system.memory import hippocampus, memory_graph
from ..memory_system.Hippocampus import HippocampusManager
from ..moods.moods import MoodManager
from ..schedule.schedule_generator import bot_schedule
from .config import global_config
@@ -79,19 +79,20 @@ class PromptBuilder:
start_time = time.time()
# 调用 hippocampus 的 get_relevant_memories 方法
relevant_memories = await hippocampus.get_relevant_memories(
text=message_txt, max_topics=3, similarity_threshold=0.5, max_memory_num=4
relevant_memories = await HippocampusManager.get_instance().get_memory_from_text(
text=message_txt, num=3, max_depth=2, fast_retrieval=True
)
memory_str = "\n".join(memory for topic, memories, _ in relevant_memories for memory in memories)
print(f"memory_str: {memory_str}")
if relevant_memories:
# 格式化记忆内容
memory_str = "\n".join(m["content"] for m in relevant_memories)
memory_prompt = f"你回忆起:\n{memory_str}\n"
# 打印调试信息
logger.debug("[记忆检索]找到以下相关记忆:")
for memory in relevant_memories:
logger.debug(f"- 主题「{memory['topic']}」[相似度: {memory['similarity']:.2f}]: {memory['content']}")
# for topic, memory_items, similarity in relevant_memories:
# logger.debug(f"- 主题「{topic}」[相似度: {similarity:.2f}]: {memory_items}")
end_time = time.time()
logger.info(f"回忆耗时: {(end_time - start_time):.3f}")
@@ -192,7 +193,7 @@ class PromptBuilder:
# print(f"\033[1;34m[调试]\033[0m 已从数据库获取群 {group_id} 的消息记录:{chat_talking_prompt}")
# 获取主动发言的话题
all_nodes = memory_graph.dots
all_nodes = HippocampusManager.get_instance().memory_graph.dots
all_nodes = filter(lambda dot: len(dot[1]["memory_items"]) > 3, all_nodes)
nodes_for_select = random.sample(all_nodes, 5)
topics = [info[0] for info in nodes_for_select]
@@ -245,7 +246,7 @@ class PromptBuilder:
related_info = ""
logger.debug(f"获取知识库内容,元消息:{message[:30]}...,消息长度: {len(message)}")
embedding = await get_embedding(message, request_type="prompt_build")
related_info += self.get_info_from_db(embedding, threshold=threshold)
related_info += self.get_info_from_db(embedding, limit=1, threshold=threshold)
return related_info