mem0_pratice.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. """
  2. Mem0 实战:多用户持久记忆聊天机器人
  3. 运行前:export OPENAI_API_KEY="sk-xxx"
  4. 运行:python mem0_practice.py
  5. """
  6. import os
  7. from mem0 import Memory
  8. from dotenv import load_dotenv
  9. load_dotenv()
  10. memory = Memory() # 数据位置、模型调用与密钥传输必须按配置逐项确认
  11. # 模拟两个用户的对话
  12. conversations = {
  13. "alice": [
  14. {"role": "user", "content": "我是全栈开发,后端用 Python FastAPI,前端用 React"},
  15. {"role": "assistant", "content": "好的,记住了你的技术栈偏好。"},
  16. {"role": "user", "content": "我最近在做一个电商项目,数据库选的 PostgreSQL"},
  17. {"role": "assistant", "content": "PostgreSQL 很适合电商场景,记下来了。"},
  18. {"role": "user", "content": "对了,我之前说前端用 React,现在改成 Vue 3 了"},
  19. {"role": "assistant", "content": "已更新,前端技术栈改为 Vue 3。"},
  20. ],
  21. "bob": [
  22. {"role": "user", "content": "我是后端开发,只用 Java Spring Boot"},
  23. {"role": "assistant", "content": "了解,Java 技术栈。"},
  24. {"role": "user", "content": "我在做一个支付系统,用 MySQL 存交易数据"},
  25. {"role": "assistant", "content": "好的,支付系统 + MySQL,记住了。"},
  26. ],
  27. }
  28. # 写入记忆
  29. for user_id, messages in conversations.items():
  30. result = memory.add(messages, user_id=user_id)
  31. print(f"[{user_id}] 提取到的记忆:")
  32. for mem in result.get("results", []):
  33. print(f" {mem.get('event')}: {mem.get('memory')}")
  34. # 检索记忆
  35. queries = [
  36. ("alice", "我的前端技术栈是什么?"), # 核验最终状态、来源与有效期
  37. ("alice", "我的数据库选型?"), # → PostgreSQL
  38. ("bob", "你用什么语言开发?"), # → Java
  39. ]
  40. for user_id, query in queries:
  41. results = memory.search(query, user_id=user_id, top_k=3)
  42. print(f"[{user_id}] 查询:{query}")
  43. for item in results.get("results", []):
  44. print(f" → {item['memory']}")