fix:优化激活值,优化logger显示

This commit is contained in:
SengokuCola
2025-03-28 09:09:30 +08:00
parent 4a72fe104a
commit de8d2aba68
8 changed files with 102 additions and 34 deletions

View File

@@ -130,9 +130,9 @@ class ChatBot:
# 根据话题计算激活度
topic = ""
interested_rate = await HippocampusManager.get_instance().get_activate_from_text(
message.processed_plain_text)*300
message.processed_plain_text,fast_retrieval=True)
# interested_rate = 0.1
logger.info(f"{message.processed_plain_text}的激活度:{interested_rate}")
# logger.info(f"对{message.processed_plain_text}的激活度:{interested_rate}")
# logger.info(f"\033[1;32m[主题识别]\033[0m 使用{global_config.topic_extract}主题: {topic}")
await self.storage.store_message(message, chat, topic[0] if topic else None)

View File

@@ -81,15 +81,15 @@ class PromptBuilder:
# 调用 hippocampus 的 get_relevant_memories 方法
relevant_memories = await HippocampusManager.get_instance().get_memory_from_text(
text=message_txt,
max_memory_num=4,
max_memory_num=3,
max_memory_length=2,
max_depth=3,
fast_retrieval=True
fast_retrieval=False
)
memory_str = ""
for _topic, memories in relevant_memories:
memory_str += f"{memories}\n"
print(f"memory_str: {memory_str}")
# print(f"memory_str: {memory_str}")
if relevant_memories:
# 格式化记忆内容

View File

@@ -817,8 +817,8 @@ class Hippocampus:
self.parahippocampal_gyrus = ParahippocampalGyrus(self)
# 从数据库加载记忆图
self.entorhinal_cortex.sync_memory_from_db()
self.llm_topic_judge = LLM_request(self.config.llm_topic_judge)
self.llm_summary_by_topic = LLM_request(self.config.llm_summary_by_topic)
self.llm_topic_judge = LLM_request(self.config.llm_topic_judge,request_type="memory")
self.llm_summary_by_topic = LLM_request(self.config.llm_summary_by_topic,request_type="memory")
def get_all_node_names(self) -> list:
"""获取记忆图中所有节点的名字列表"""
@@ -950,7 +950,7 @@ class Hippocampus:
# 提取关键词
keywords = re.findall(r'<([^>]+)>', topics_response[0])
if not keywords:
keywords = ['none']
keywords = []
else:
keywords = [
keyword.strip()
@@ -1025,7 +1025,7 @@ class Hippocampus:
# 基于激活值平方的独立概率选择
remember_map = {}
logger.info("基于激活值平方的归一化选择:")
# logger.info("基于激活值平方的归一化选择:")
# 计算所有激活值的平方和
total_squared_activation = sum(activation ** 2 for activation in activate_map.values())
@@ -1079,12 +1079,11 @@ class Hippocampus:
memory_similarities.sort(key=lambda x: x[1], reverse=True)
# 获取最匹配的记忆
top_memories = memory_similarities[:max_memory_length]
# 添加到结果中
for memory, similarity in top_memories:
all_memories.append((node, [memory], similarity))
logger.info(f"选中记忆: {memory} (相似度: {similarity:.2f})")
# logger.info(f"选中记忆: {memory} (相似度: {similarity:.2f})")
else:
logger.info("节点没有记忆")
@@ -1148,7 +1147,7 @@ class Hippocampus:
# 提取关键词
keywords = re.findall(r'<([^>]+)>', topics_response[0])
if not keywords:
keywords = ['none']
keywords = []
else:
keywords = [
keyword.strip()
@@ -1221,10 +1220,13 @@ class Hippocampus:
# logger.info(f"节点 '{node}': 累计激活值 = {total_activation:.2f}")
# 计算激活节点数与总节点数的比值
total_activation = sum(activate_map.values())
logger.info(f"总激活值: {total_activation:.2f}")
total_nodes = len(self.memory_graph.G.nodes())
activated_nodes = len(activate_map)
activation_ratio = activated_nodes / total_nodes if total_nodes > 0 else 0
logger.info(f"激活节点数: {activated_nodes}, 总节点数: {total_nodes}, 激活比例: {activation_ratio}")
# activated_nodes = len(activate_map)
activation_ratio = total_activation / total_nodes if total_nodes > 0 else 0
activation_ratio = activation_ratio*40
logger.info(f"总激活值: {total_activation:.2f}, 总节点数: {total_nodes}, 激活: {activation_ratio}")
return activation_ratio