You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

382 lines
15 KiB
Python

6 months ago
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
代码示例 06: 记忆整合机制演示
展示从短期记忆到长期记忆的智能转化过程
"""
import time
from datetime import datetime, timedelta
from hello_agents.tools import MemoryTool
class MemoryConsolidationDemo:
"""记忆整合演示类"""
def __init__(self):
self.memory_tool = MemoryTool(
user_id="consolidation_demo_user",
memory_types=["working", "episodic", "semantic", "perceptual"]
)
def setup_initial_memories(self):
"""设置初始记忆数据"""
print("📝 设置初始记忆数据")
print("=" * 50)
# 添加不同重要性的工作记忆
working_memories = [
{
"content": "学习了Transformer架构的基本原理",
"importance": 0.9,
"topic": "deep_learning",
"session": "study_session_1"
},
{
"content": "完成了Python代码调试任务",
"importance": 0.8,
"topic": "programming",
"task_type": "debugging"
},
{
"content": "参加了团队会议讨论项目进展",
"importance": 0.7,
"topic": "teamwork",
"meeting_type": "progress_review"
},
{
"content": "查看了今天的天气预报",
"importance": 0.3,
"topic": "daily_life",
"category": "routine"
},
{
"content": "阅读了关于注意力机制的论文",
"importance": 0.85,
"topic": "research",
"paper_type": "technical"
},
{
"content": "喝了一杯咖啡",
"importance": 0.2,
"topic": "daily_life",
"category": "routine"
},
{
"content": "解决了一个复杂的算法问题",
"importance": 0.9,
"topic": "problem_solving",
"difficulty": "high"
},
{
"content": "整理了桌面文件",
"importance": 0.4,
"topic": "organization",
"category": "maintenance"
}
]
print("添加工作记忆:")
for i, memory in enumerate(working_memories):
content = memory.pop("content")
importance = memory.pop("importance")
result = self.memory_tool.execute("add",
content=content,
memory_type="working",
importance=importance,
**memory)
print(f" {i+1}. {content[:40]}... (重要性: {importance})")
print(f"\n✅ 已添加 {len(working_memories)} 条工作记忆")
# 显示当前状态
stats = self.memory_tool.execute("stats")
print(f"\n📊 当前记忆统计:\n{stats}")
def demonstrate_consolidation_criteria(self):
"""演示整合标准和筛选过程"""
print("\n🎯 记忆整合标准演示")
print("-" * 50)
print("整合标准:")
print("• 重要性阈值筛选")
print("• 按重要性排序")
print("• 类型转换处理")
print("• 元数据更新")
# 获取当前工作记忆摘要
print("\n📋 整合前的工作记忆状态:")
summary = self.memory_tool.execute("summary", limit=10)
print(summary)
# 测试不同阈值的整合效果
thresholds = [0.5, 0.7, 0.8]
for threshold in thresholds:
print(f"\n🔍 测试重要性阈值 {threshold}:")
# 模拟整合过程(不实际执行,只是分析)
working_memories = []
# 这里应该从实际的工作记忆中获取,简化演示
print(f" 阈值 {threshold} 下符合整合条件的记忆:")
print(f" • 重要性 >= {threshold} 的记忆将被整合")
print(f" • 整合后类型: working → episodic")
print(f" • 重要性提升: importance × 1.1")
def demonstrate_consolidation_process(self):
"""演示实际的整合过程"""
print("\n🔄 记忆整合过程演示")
print("-" * 50)
print("整合过程步骤:")
print("1. 筛选符合条件的记忆")
print("2. 按重要性排序")
print("3. 创建新的记忆项")
print("4. 更新类型和元数据")
print("5. 添加整合标记")
# 执行不同阈值的整合
consolidation_tests = [
(0.6, "低阈值整合 - 整合更多记忆"),
(0.8, "高阈值整合 - 只整合最重要的记忆")
]
for threshold, description in consolidation_tests:
print(f"\n🔄 {description} (阈值: {threshold}):")
# 获取整合前状态
stats_before = self.memory_tool.execute("stats")
print(f"整合前状态: {stats_before}")
# 执行整合
start_time = time.time()
consolidation_result = self.memory_tool.execute("consolidate",
from_type="working",
to_type="episodic",
importance_threshold=threshold)
consolidation_time = time.time() - start_time
print(f"整合结果: {consolidation_result}")
print(f"整合耗时: {consolidation_time:.3f}")
# 获取整合后状态
stats_after = self.memory_tool.execute("stats")
print(f"整合后状态: {stats_after}")
# 查看整合后的情景记忆
print(f"\n📚 整合后的情景记忆:")
episodic_search = self.memory_tool.execute("search",
query="",
memory_type="episodic",
limit=5)
print(episodic_search)
def demonstrate_consolidation_metadata(self):
"""演示整合过程中的元数据处理"""
print("\n📋 整合元数据处理演示")
print("-" * 50)
print("元数据处理:")
print("• 保留原始元数据")
print("• 添加整合标记")
print("• 记录整合时间")
print("• 保存原始ID引用")
# 添加一个特殊的工作记忆用于演示
special_memory_result = self.memory_tool.execute("add",
content="这是一个用于演示整合元数据处理的特殊记忆",
memory_type="working",
importance=0.85,
special_tag="metadata_demo",
original_context="demonstration",
creation_purpose="show_consolidation_metadata"
)
print(f"添加特殊记忆: {special_memory_result}")
# 执行整合
print(f"\n🔄 执行整合...")
consolidation_result = self.memory_tool.execute("consolidate",
from_type="working",
to_type="episodic",
importance_threshold=0.8)
print(f"整合结果: {consolidation_result}")
# 搜索整合后的记忆查看元数据
print(f"\n🔍 查看整合后的记忆元数据:")
search_result = self.memory_tool.execute("search",
query="特殊记忆",
memory_type="episodic",
limit=1)
print(search_result)
def demonstrate_multi_type_consolidation(self):
"""演示多类型记忆整合"""
print("\n🔀 多类型记忆整合演示")
print("-" * 50)
print("多类型整合场景:")
print("• working → episodic (经历记录)")
print("• working → semantic (知识提取)")
print("• episodic → semantic (经验总结)")
# 添加一些适合不同整合路径的记忆
consolidation_candidates = [
{
"content": "学习了深度学习中的反向传播算法原理",
"memory_type": "working",
"importance": 0.9,
"learning_type": "concept",
"suitable_for": "semantic"
},
{
"content": "今天下午参加了AI技术分享会",
"memory_type": "working",
"importance": 0.8,
"event_type": "meeting",
"suitable_for": "episodic"
},
{
"content": "通过多次实践掌握了Transformer的实现技巧",
"memory_type": "episodic",
"importance": 0.85,
"experience_type": "skill",
"suitable_for": "semantic"
}
]
print(f"\n📝 添加整合候选记忆:")
for memory in consolidation_candidates:
content = memory.pop("content")
memory_type = memory.pop("memory_type")
importance = memory.pop("importance")
suitable_for = memory.pop("suitable_for")
result = self.memory_tool.execute("add",
content=content,
memory_type=memory_type,
importance=importance,
**memory)
print(f"{content[:50]}... → 适合整合为{suitable_for}")
# 执行不同类型的整合
consolidation_paths = [
("working", "episodic", 0.75, "经历记录整合"),
("working", "semantic", 0.85, "知识提取整合"),
("episodic", "semantic", 0.8, "经验总结整合")
]
for from_type, to_type, threshold, description in consolidation_paths:
print(f"\n🔄 {description} ({from_type}{to_type}):")
result = self.memory_tool.execute("consolidate",
from_type=from_type,
to_type=to_type,
importance_threshold=threshold)
print(f"整合结果: {result}")
def demonstrate_consolidation_benefits(self):
"""演示记忆整合的益处"""
print("\n✨ 记忆整合益处演示")
print("-" * 50)
print("整合益处:")
print("• 长期保存重要信息")
print("• 释放工作记忆空间")
print("• 形成知识体系")
print("• 提升检索效率")
# 获取最终的记忆系统状态
print(f"\n📊 最终记忆系统状态:")
final_stats = self.memory_tool.execute("stats")
print(final_stats)
# 获取各类型记忆的摘要
print(f"\n📋 各类型记忆摘要:")
memory_types = ["working", "episodic", "semantic"]
for memory_type in memory_types:
print(f"\n{memory_type.upper()}记忆:")
type_summary = self.memory_tool.execute("search",
query="",
memory_type=memory_type,
limit=3)
print(type_summary)
# 演示整合后的检索效果
print(f"\n🔍 整合后的检索效果测试:")
search_queries = [
("深度学习", "测试跨类型检索"),
("学习经历", "测试整合记忆检索"),
("重要概念", "测试语义记忆检索")
]
for query, description in search_queries:
print(f"\n查询: '{query}' ({description})")
result = self.memory_tool.execute("search",
query=query,
limit=3)
print(result)
def main():
"""主函数"""
print("🔄 记忆整合机制演示")
print("展示从短期记忆到长期记忆的智能转化过程")
print("=" * 60)
try:
demo = MemoryConsolidationDemo()
# 1. 设置初始记忆数据
demo.setup_initial_memories()
# 2. 演示整合标准
demo.demonstrate_consolidation_criteria()
# 3. 演示整合过程
demo.demonstrate_consolidation_process()
# 4. 演示元数据处理
demo.demonstrate_consolidation_metadata()
# 5. 演示多类型整合
demo.demonstrate_multi_type_consolidation()
# 6. 演示整合益处
demo.demonstrate_consolidation_benefits()
print("\n" + "=" * 60)
print("🎉 记忆整合机制演示完成!")
print("=" * 60)
print("\n✨ 记忆整合核心特性:")
print("1. 🎯 智能筛选 - 基于重要性阈值的自动筛选")
print("2. 🔄 类型转换 - 灵活的记忆类型转换机制")
print("3. 📋 元数据保持 - 完整保留原始上下文信息")
print("4. ⚡ 自动化处理 - 无需人工干预的自动整合")
print("5. 🔀 多路径支持 - 支持多种整合路径")
print("\n🎯 设计理念:")
print("• 仿生性 - 模拟人类大脑的记忆固化过程")
print("• 智能性 - 自动识别和处理重要信息")
print("• 灵活性 - 支持多种整合策略和路径")
print("• 完整性 - 保持记忆的完整性和可追溯性")
print("\n💡 应用价值:")
print("• 知识管理 - 将临时学习转化为长期知识")
print("• 经验积累 - 保存重要的实践经验")
print("• 系统优化 - 释放短期记忆空间")
print("• 智能决策 - 基于历史经验的决策支持")
except Exception as e:
print(f"\n❌ 演示过程中发生错误: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
main()