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