|
| 1 | +# MemOS 记忆添加工具 |
| 2 | + |
| 3 | +基于 MemOS 记忆存储系统 API 封装的记忆添加工具,将会话消息写入 MemOS,系统会自动解析消息并生成记忆,让 AI 拥有持续记忆与成长能力。 |
| 4 | + |
| 5 | +## 一、功能说明 |
| 6 | + |
| 7 | +- 将对话消息批量写入 MemOS 记忆存储 |
| 8 | +- 支持多角色消息(user / assistant) |
| 9 | +- MemOS 会自动解析消息内容并生成事实记忆、偏好记忆 |
| 10 | + |
| 11 | +## 二、参数说明 |
| 12 | + |
| 13 | +### 2.1 启动参数 |
| 14 | + |
| 15 | +| 参数 | 组件类型 | 必填 | 说明 | |
| 16 | +| :--- | :--- | :--- | :--- | |
| 17 | +| `access_key` | 密码框 | 是 | MemOS API Key,在 API 控制台 > 接口密钥中获取 | |
| 18 | + |
| 19 | +### 2.2 输入参数 |
| 20 | + |
| 21 | +| 参数名 | 数据类型 | 必填 | 来源 | 说明 | |
| 22 | +| :--- | :--- | :--- | :--- | :--- | |
| 23 | +| `user_id` | string | 是 | 引用参数 | 消息关联的用户唯一标识符 | |
| 24 | +| `conversation_id` | string | 是 | 引用参数 | 消息关联的会话唯一标识符 | |
| 25 | +| `user_message` | string | 是 | 引用参数 | 用户发送的消息内容 | |
| 26 | +| `assistant_message` | string | 是 | 引用参数 | AI 助手回复的消息内容 | |
| 27 | + |
| 28 | +> **参数获取说明**: |
| 29 | +> - `user_id`:MaxKB 中使用系统变量 `{{user_id}}`,建议添加前缀如 `maxkb_{{user_id}}` |
| 30 | +> - `conversation_id`:MaxKB 中使用系统变量 `{{chat_id}}` |
| 31 | +
|
| 32 | +--- |
| 33 | + |
| 34 | +## 三、工具内容(Python) |
| 35 | + |
| 36 | +```python |
| 37 | +import requests |
| 38 | + |
| 39 | + |
| 40 | +def add_message(user_id: str, conversation_id: str, user_message: str, assistant_message: str, access_key: str = ""): |
| 41 | + """ |
| 42 | + MemOS 消息添加 |
| 43 | +
|
| 44 | + 参数类型(根据官方API文档): |
| 45 | + - user_id: string, 必填, 消息关联的用户唯一标识符 |
| 46 | + - conversation_id: string, 必填, 消息关联的会话唯一标识符 |
| 47 | + - user_message: string, 必填, 用户消息内容(对应 messages[].content) |
| 48 | + - assistant_message: string, 必填, 助手消息内容(对应 messages[].content) |
| 49 | + - access_key: string, 必填, API密钥 |
| 50 | +
|
| 51 | + 原始API messages数组字段: |
| 52 | + - role: string, 必填, 消息角色(user/assistant/system/tool) |
| 53 | + - content: string, 必填, 消息内容文本 |
| 54 | + - chat_time: string, 可选, 对话时间 |
| 55 | + """ |
| 56 | + http_session = requests.Session() |
| 57 | + try: |
| 58 | + messages = [] |
| 59 | + if user_message: |
| 60 | + messages.append({"role": "user", "content": user_message}) |
| 61 | + if assistant_message: |
| 62 | + messages.append({"role": "assistant", "content": assistant_message}) |
| 63 | + |
| 64 | + if not messages: |
| 65 | + return "错误:消息内容不能为空" |
| 66 | + |
| 67 | + data = { |
| 68 | + "user_id": user_id, |
| 69 | + "conversation_id": conversation_id, |
| 70 | + "messages": messages |
| 71 | + } |
| 72 | + |
| 73 | + rep = http_session.post( |
| 74 | + url="https://memos.memtensor.cn/api/openmem/v1/add/message", |
| 75 | + headers={ |
| 76 | + "Content-Type": "application/json", |
| 77 | + "Authorization": f"Token {access_key}" |
| 78 | + }, |
| 79 | + json=data |
| 80 | + ).json() |
| 81 | + |
| 82 | + if rep.get("code") == 0: |
| 83 | + task_id = rep.get("data", {}).get("task_id", "") |
| 84 | + return f"信息:消息添加成功,任务ID: {task_id}" |
| 85 | + else: |
| 86 | + return f"错误:消息添加失败:{rep.get('message', '未知错误')}" |
| 87 | + except requests.exceptions.RequestException as e: |
| 88 | + return f"错误:添加消息时发生网络错误: {e}" |
| 89 | + except Exception as e: |
| 90 | + return f"错误:处理消息添加响应时发生错误: {e}" |
| 91 | +``` |
| 92 | + |
| 93 | +--- |
0 commit comments