MemOS 获取消息接口(POST /product/get/message)完全指南:原始对话历史拉取、参数详解与实战场景
人工智能大模型Agent 记忆AI AgentRAG知识图谱dsh-plugin【免费下载链接】MemOSSelf-evolving memory OS for LLM AI Agents: ultra-persistent memory, hybrid-retrieval, and cross-task skill reuse, with 35.24% token savings and DeepSeek Harness support.项目地址https://gitcode.com/gh_mirrors/memos/MemOS点击查看免费下载MemOS 开源版提供了一组基于 FastAPI 的 REST API 服务架构与鉴权总览见 open_source_api 概述其中POST /product/get/message用于拉取指定会话中用户与助手的原始对话记录是与返回事实摘要的“记忆”接口互补的核心数据通道。本文从接口定位、参数语义、底层工作机理出发结合仓库源码 client.py 与 product_models.py 中的实现细节给出可直接运行的调用示例与聊天历史回溯、上下文注入等实战方案。1. 接口速览项目内容接口路径POST /product/get/message功能描述获取指定会话中用户与助手的原始对话文本未经摘要加工的 message 记录是构建聊天历史回溯功能的核心接口鉴权方式请求 Header 携带Authorization: Token API_KEY开源环境本地自定义 API Key对应 SDK 方法MemOSClient.get_message()client.py响应模型MemOSGetMessagesResponseproduct_models.py说明本文聚焦开源项目的功能说明。云端版本的完整接口字段与配额限制请以对应平台的 API 文档为准。2. 记忆Memory与消息Message的区分在开发过程中务必区分系统返回的两类数据二者在语义、加工深度与用途上完全不同维度获取记忆/get/memory获取消息/get/message返回内容系统处理后的事实与偏好摘要原始对话文本示例“用户喜欢 R 语言进行可视化”“我最近在自学 R 语言推荐个可视化包”加工程度经过抽取、归纳、去噪的结构化结果未经加工、逐条保留的会话原文典型用途长期记忆检索、用户画像、偏好注入聊天 UI 历史加载、模型上下文拼接、消息回溯分析从源码看两者的响应模型也做了严格区分MemOSGetMemoryResponse 承载memory_detail_list等记忆视图而MemOSGetMessagesResponse的 data 是 GetMessagesData其内部仅包含message_detail_list消息详情列表每条消息通过MessageDetail模型extraallow即对额外字段宽松兼容承载 role、content 等原始字段。开发者不应将两者混用。3. 关键接口参数详解本接口支持的请求参数如下表对应 client.py 中get_message()的 payload 构造逻辑参数名类型必填默认值说明user_idstr是-与获取消息关联的用户唯一标识符贯穿请求上下文用于归属校验conversation_idstr是*None指定会话的唯一标识符客户端会强制校验其非空见下文message_limit_numberint否6限制返回的消息条数最大建议值为 50conversation_limit_numberint否6限制返回的会话历史条数sourcestr否None标识消息的来源渠道可用于区分不同入口写入的数据关于conversation_id的源码级说明虽然参数表标记为“否”但客户端实现中get_message()会调用_validate_required_params(user_iduser_id, conversation_idconversation_id)client.py即一旦该参数被显式传入为空值就会抛出ValueError。仓库测试 test_get_message_requires_conversation_id 明确断言了这一点不传conversation_id调用client.get_message(user_iduser-1)会直接抛出conversation_id is required且不会发出任何 HTTP 请求。因此在实际使用中请始终为get_message提供会话 ID。关于默认限额的源码级说明get_message()中message_limit_number与conversation_limit_number的默认值为None由服务端兜底为文档所述默认值 6测试 test_get_message_uses_playground_default_limits 验证了不传限额参数时 payload 中这两个字段为None的行为。同时可参照/get/memory的做法client.py 中size超过 50 会直接抛错将 50 作为单次拉取条数的安全上限。4. 工作原理从文档描述与仓库实现中间件 request_context.py、客户端 client.py可以归纳出该接口的完整工作链路4.1 定位会话系统根据请求提供的conversation_id在底层存储中检索属于该用户及会话的消息记录user_id作为归属标识贯穿检索过程。客户端在构造请求时会将这些参数组装为 JSON payload通过requests.post发送到{base_url}/get/messageclient.py。4.2 切片处理根据message_limit_number参数系统从最新消息开始倒序截取指定条数确保返回的是最近的对话conversation_limit_number则限制一次可取回的会话历史条数。二者配合可实现“按会话粒度 按消息粒度”的双层截取避免单次响应体过大。4.3 安全隔离所有请求均通过RequestContextMiddleware中间件request_context.py每个请求会提取或生成trace_id支持g-trace-id、x-trace-id、trace-id三个 Header 的优先级探测并注入RequestContext含api_path、env、user_type、user_name、source等字段严格校验user_id的归属权防止越权访问。开源环境生产部署时官方建议在此中间件基础上扩展 OAuth2 或更高级的身份校验逻辑见 overview.md 的鉴权章节。4.4 网络重试与超时客户端内置最多 3 次重试MAX_RETRY_COUNT单次请求超时时间为 30 秒失败时打印Failed to get messages (retry x/3)日志重试耗尽后向上抛出异常client.py保障了消息拉取的稳定性。5. 快速上手示例5.1 使用开源版内置的MemOSClientfrom memos.api.client import MemOSClient # 初始化客户端base_url 指向开源版本地服务 client MemOSClient( api_keyYOUR_LOCAL_API_KEY, base_urlhttp://localhost:8000/product ) # 获取指定会话的最近 10 条对话记录 res client.get_message( user_idmemos_user_123, conversation_idconv_r_study_001, message_limit_number10 ) if res and res.code 200: # 响应 data 为 GetMessagesData内部含 message_detail_list for msg in res.data.message_detail_list: print(f[{msg[role]}]: {msg[content]})说明MemOSClient的初始化支持base_url、api_key参数也支持从环境变量MEMOS_BASE_URL、MEMOS_API_KEY读取未显式指定时默认指向云端地址MEMOS_IS_GLOBAL为真时使用https://api.memt.ai/platform/api/openmem/v1否则使用https://memos.memtensor.cn/api/openmem/v1见 client.py。开源部署请务必传入本地http://localhost:8000/product。请求头自动携带Content-Type: application/json与Authorization: Token api_keyclient.py。响应体为MemOSGetMessagesResponse包含code、message与data三段product_models.pydata.message_detail_list中每条MessageDetail的 role / content 字段即原始对话。5.2 使用原生 HTTP 请求不依赖 SDK 时可以直接构造 HTTP POSTimport requests import json res requests.post( http://localhost:8000/product/get/message, headers{ Content-Type: application/json, Authorization: Token YOUR_LOCAL_API_KEY, }, datajson.dumps({ user_id: memos_user_123, conversation_id: conv_r_study_001, conversation_limit_number: 6, message_limit_number: 10, source: web_chat, }), timeout30, ) res.raise_for_status() data res.json() for msg in data[data][message_detail_list]: print(f[{msg[role]}]: {msg[content]})6. 典型使用场景6.1 聊天 UI 历史加载当用户点击进入某个历史会话时调用此接口可恢复对话现场。建议首次进入时设置一个适中的message_limit_number如 2050快速渲染最近对话配合“加载更多”按钮以消息条数为游标实现分页加载降低单次响应体与前端渲染压力结合conversation_limit_number在会话列表中展示多个会话的最近消息摘要。6.2 外部模型上下文注入如果您正在使用自定义的大模型逻辑非 MemOS 内置 chat 接口可以通过此接口获取原始对话历史并将其手动拼接至模型的messages数组中history client.get_message( user_idmemos_user_123, conversation_idconv_r_study_001, message_limit_number12, ) messages [{role: system, content: 你是一个乐于助人的助手。}] for msg in history.data.message_detail_list: messages.append({role: msg[role], content: msg[content]}) # messages 即可直接作为 LLM 的上下文传入6.3 消息回溯分析可以定期导出原始对话记录用于评估 AI 的回复质量对照用户提问与模型回答分析用户的潜在意图与高频话题作为离线数据集的构建原料配合 MemOS 评价体系 中的相关脚本进行效果度量。7. 异常与错误排查当调用失败时可对照 错误码参考 定位问题错误码含义与本接口相关的排查建议40000 / 40002 / 40003请求参数错误 / 必填参数为空 / 参数为空检查user_id、conversation_id是否完整非空参数类型是否正确40010用户 ID 过长user_id长度不能超过 100 字符40011会话 ID 过长conversation_id长度不能超过 100 字符40100 / 40130 / 40132API Key 缺失或无效检查 Header 中的Authorization: Token API_KEY50004记忆服务暂时不可用稍后重试消息获取操作客户端本身会重试 3 次50144保存聊天历史记录失败若历史写不进去读取自然为空先检查写入链路/add/message8. 关联源码与文档索引SDK 方法实现src/memos/api/client.pyget_message含参数校验、payload 构造、重试逻辑响应模型定义src/memos/api/product_models.pyMessageDetail、GetMessagesData与 src/memos/api/product_models.pyMemOSGetMessagesResponse请求上下文中间件src/memos/api/middleware/request_context.py客户端测试tests/api/test_client.py必填校验与默认限额行为接口总览与鉴权说明docs/cn/open_source/open_source_api/start/overview.md对比阅读记忆获取接口 get_memory.md、建议问题接口 get_suggestion_queries.md、反馈接口 feedback.md赞分享人工智能大模型Agent 记忆AI AgentRAG知识图谱dsh-plugin【免费下载链接】MemOSSelf-evolving memory OS for LLM AI Agents: ultra-persistent memory, hybrid-retrieval, and cross-task skill reuse, with 35.24% token savings and DeepSeek Harness support.项目地址https://gitcode.com/gh_mirrors/memos/MemOS点击查看免费下载相关推荐ViMax 实操多智能体 AI 视频生成从一句话到成片的完整路径ViMax 实操多智能体 AI 视频生成从一句话到成片的完整路径 想让一句灵感变成一段完整短片或者让一份剧本直接变成带分镜的视频但又不想从零学编剧、分镜人工智能大模型Agent 记忆AI AgentRAG知识图谱dsh-plugin如何用chat4cj分页拉取历史消息channels.history的6个可选参数实战指南如何用chat4cj分页拉取历史消息channels.history的6个可选参数实战指南 chat4cj 是一个用 Cangjie 语言 编写的 Rocke后端即时通讯Zulip API 创建定时消息Scheduled Message完整指南POST /scheduled_messages 接口实战Zulip API 创建定时消息Scheduled Message完整指南POST /scheduled_messages 接口实战 Zulip 的 定时即时通讯后端前端WebSocket创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Python装饰器自学全解

Python装饰器自学全解

1. 关于装饰器这一概念的基本知识, 其中的第一小节内容探讨了这样一个问题, 即究竟什么是装饰器?装饰器属于一种设计模式, 这种设计模式允许在不修改原始函数代码的前提情况下, 往函数内部添加全新的功能内容, 它属于语法糖的一种范畴, 是基于闭包机制以及高阶函数来实现相关效…

2026/9/24 17:57:47 阅读更多 →
复杂工业园区选型指南:主流服务商融合定位方案多维对比

复杂工业园区选型指南:主流服务商融合定位方案多维对比

在大型综合制造与高危工业领域的数字化进程中,人员与车辆的安全定位管控是底层的关键环节。当企业为广域复杂的厂区寻找室内外融合定位方案时,常常会遭遇现实挑战:不少标榜全场景覆盖的产品,在真实的金属密集遮挡环境下会出现信号…

2026/9/24 17:57:47 阅读更多 →
C语言常见概念(续)

C语言常见概念(续)

本文承接《C语言常见概念》,整理 Git/Gitee 基础操作,以及 C 语言的结构化程序设计、语句和注释。五、Git、Gitee 与 TortoiseGit5.1 GitGit 是一种开源的分布式版本控制系统,主要用于记录文件的历史变化、管理不同版本,并支持多人…

2026/9/24 17:56:47 阅读更多 →

最新新闻

Nginx 403错误排查全攻略:从权限到SELinux的根因分析

Nginx 403错误排查全攻略:从权限到SELinux的根因分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 6:42:13 阅读更多 →
ESP32上WASM为何不能直接调用硬件?沙箱隔离与宿主桥接原理

ESP32上WASM为何不能直接调用硬件?沙箱隔离与宿主桥接原理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 6:42:13 阅读更多 →
Atlas 300V 24G推理加速卡上部署YOLO模型完整实战指南

Atlas 300V 24G推理加速卡上部署YOLO模型完整实战指南

最近问我 Atlas 300V 24G 的人特别多,上来基本就是两个问题:这卡到底是不是运算加速卡?能不能拿来跑 YOLO?我直接说结论:它是,而且就是干这个用的。Atlas 300V 24G 是华为昇腾系列里面向 AI 推理场景的 PCI…

2026/9/25 6:42:12 阅读更多 →
dnSpy 反编译 Unity 程序集:Mono 与 IL2CPP 后端解析实战

dnSpy 反编译 Unity 程序集:Mono 与 IL2CPP 后端解析实战

简介:这份资源是面向 Unity 游戏开发与逆向分析学习者的 dnSpy 反编译工具包,主要用于查看、调试和修改 Unity 项目编译后的程序集代码,适合需要分析第三方 DLL、排查运行时逻辑或研究 .NET 程序结构的中高级开发者。压缩包共收录 1736 个文件…

2026/9/25 6:42:12 阅读更多 →
Atlas 300V 24G推理卡上部署YOLO:从ONNX到OM的完整实践

Atlas 300V 24G推理卡上部署YOLO:从ONNX到OM的完整实践

如果你刚拿到一块 Atlas 300V 24G 加速卡,想在服务器上把 YOLO 目标检测跑起来,你大概率会经历和我一样的迷茫。插上卡、装好驱动之后,面对的不是熟悉的 PyTorch 或 CUDA 生态,而是一整套名为昇腾的软件栈。不少人问“atlas 300v …

2026/9/25 6:42:11 阅读更多 →
STM32驱动DHT11温湿度传感器:单总线时序与HAL库实现

STM32驱动DHT11温湿度传感器:单总线时序与HAL库实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 6:41:11 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →