#!/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()