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