该接口用于获取指定会话的用户与助手历史对话记录,可按数量限制返回结果。如本章示例所示,您可以将返回的最近消息作为大模型生成回答的参考,以保持对话的连贯性和上下文理解;同时,也可在用户刷新或重新打开应用时恢复聊天上下文,确保用户体验连续一致,并为个性化交互提供支持。
import os
import requests
import json
# 替换成你的 API Key
os.environ["MEMOS_API_KEY"] = "YOUR_API_KEY"
os.environ["MEMOS_BASE_URL"] = "https://memos.memtensor.cn/api/openmem/v1"
data = {
"user_id": "memos_user_123",
"conversation_id": "0610"
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Token {os.environ['MEMOS_API_KEY']}"
}
url = f"{os.environ['MEMOS_BASE_URL']}/get/message"
res = requests.post(url=url, headers=headers, data=json.dumps(data))
print(f"result: {res.json()}")
# 请确保已安装MemoS (pip install MemoryOS -U)
from memos.api.client import MemOSClient
# 使用 API Key 初始化客户端
client = MemOSClient(api_key="YOUR_API_KEY")
user_id = "memos_user_123"
conversation_id = "0610"
res = client.get_message(user_id=user_id, conversation_id=conversation_id)
print(f"result: {res}")
curl --request POST \
--url https://memos.memtensor.cn/api/openmem/v1/get/message \
--header 'Authorization: Token YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"user_id": "memos_user_123",
"conversation_id": "0610"
}'
Token API_key,可在 API 控制台>接口密钥 中查看
与获取消息关联的用户的唯一标识符。
与获取消息关联的会话的唯一标识符。
限定返回的消息条数,用于控制消息列表的长度,不传时使用系统默认值6,最大值为50
Successful Response
如果你认为在大模型回复时需要参考用户最近的对话内容,可以调用 MemOS 获取会话的历史消息,将返回的最近若干条消息拼接进提示词。这样可以在模型无状态的情况下,保持对话的连续性和上下文理解。
如下示例所示,如果你已经参考 添加消息 > 导入历史对话,添加过用户memos_user_345 的历史对话消息,你可以一键复制该示例获取该会话的历史消息。
import os
import json
import requests
os.environ["MEMOS_API_KEY"] = "YOUR_API_KEY"
os.environ["MEMOS_BASE_URL"] = "https://memos.memtensor.cn/api/openmem/v1"
# headers 和 base URL
headers = {
"Authorization": f"Token {os.environ['MEMOS_API_KEY']}",
"Content-Type": "application/json"
}
BASE_URL = os.environ["MEMOS_BASE_URL"]
def get_message(user_id: str, conversation_id: str, limit: int):
data = {
"user_id": user_id,
"conversation_id": conversation_id,
"message_limit_number": limit
}
res = requests.post(f"{BASE_URL}/get/message", headers=headers, data=json.dumps(data))
result = res.json()
if result.get("code") == 0:
return result.get("data", {}).get("message_detail_list", [])
else:
print(f"❌ 获取消息失败: {result.get('message')}")
return []
# ---------------------------
# 获取历史消息
model_context = get_message("memos_user_345", "memos_conversation_345", 4)
# 去掉 chat_time,直接生成大模型可用格式,并打印
model_context_simple = [{"role": m["role"], "content": m["content"]} for m in model_context]
print(json.dumps(model_context_simple, ensure_ascii=False, indent=2))
# ---------------------------
# 示例输出:
# [
# {"role": "user", "content": "我喜欢吃辣的食物"},
# {"role": "assistant", "content": "明白啦,我记住了,你喜欢辣味的食物。"}
# {"role": "user", "content": "但我又不太喜欢重油的,比如麻辣火锅、毛血旺之类的"},
# {"role": "assistant", "content": "你更偏好清爽又带辣味的菜。我可以帮你推荐一些适合你的辣味美食哦~ "}
# ]
如果你正在初步搭建 AI 应用,暂时还没有设计本地或数据库存储用户聊天记录,可以在用户刷新页面或重新打开应用时,调用 MemOS 接口获取该用户最近一次活跃会话的历史消息,并恢复到对话窗口中。
如下示例所示,如果你已经参考 添加消息 > 导入历史对话,添加过用户memos_user_345 的历史对话消息,你可以一键复制该示例获取该会话的历史消息,并输出为你需要的聊天对话页面结构。
import os
import json
import requests
os.environ["MEMOS_API_KEY"] = "YOUR_API_KEY"
os.environ["MEMOS_BASE_URL"] = "https://memos.memtensor.cn/api/openmem/v1"
# headers 和 base URL
headers = {
"Authorization": f"Token {os.environ['MEMOS_API_KEY']}",
"Content-Type": "application/json"
}
BASE_URL = os.environ["MEMOS_BASE_URL"]
def get_messages(user_id: str, conversation_id: str):
data = {
"user_id": user_id,
"conversation_id": conversation_id,
}
res = requests.post(f"{BASE_URL}/get/message", headers=headers, data=json.dumps(data))
result = res.json()
if result.get("code") == 0:
return result.get("data", {}).get("message_detail_list", [])
else:
print(f"❌ 获取消息失败: {result.get('message')}")
return []
# 假设:用户打开 app 时
user_id = "memos_user_345"
conversation_id = "memos_conversation_345"
messages = get_messages(user_id, conversation_id)
# 打印角色、内容和时间
for m in messages:
print(f"[{m['role']}] {m['content']} (time={m.get('chat_time', '未知')})")
# 📌 示例输出:
# [user] 我喜欢吃辣的食物 (time=2025-09-12 08:00:00)
# [assistant] 明白啦,我记住了,你喜欢辣味的食物。 (time=2025-09-12 08:01:00)
# [user] 但我又不太喜欢重油的,比如麻辣火锅、毛血旺之类的 (time=2025-09-25 12:00:00)
# [assistant] 你更偏好清爽又带辣味的菜。我可以帮你推荐一些适合你的辣味美食哦~ (time=2025-09-25 12:01:00)
添加消息
该接口用于向指定会话添加一条或多条消息。如本章的使用示例所示,您既可以在用户与助手的对话进行时实时写入,也可批量导入已有的历史记录,或补充用户的偏好和行为信息。所有添加的消息内容都会被 MemOS 转化为记忆,用于后续对话的召回与参考,从而支持对话历史管理、用户行为记录以及个性化交互。
查询记忆
该接口用于查询指定用户的记忆,返回与输入查询内容最相关的记忆片段。您可以调用这些记忆片段作为参考,供大模型生成回答时使用。如本章示例所示,您可以在用户与 AI 对话过程中实时检索用户记忆,也可以对用户整体记忆进行全局检索,用于生成用户画像或支持个性化推荐,从而提升对话的连贯性与用户的个性化体验。<br><br>在最近的更新中,召回的记忆片段除了原有的“事实记忆”,新增了对“偏好记忆”的支持,使模型回答时“更懂用户”。
import os
import requests
import json
# 替换成你的 API Key
os.environ["MEMOS_API_KEY"] = "YOUR_API_KEY"
os.environ["MEMOS_BASE_URL"] = "https://memos.memtensor.cn/api/openmem/v1"
data = {
"user_id": "memos_user_123",
"conversation_id": "0610"
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Token {os.environ['MEMOS_API_KEY']}"
}
url = f"{os.environ['MEMOS_BASE_URL']}/get/message"
res = requests.post(url=url, headers=headers, data=json.dumps(data))
print(f"result: {res.json()}")
# 请确保已安装MemoS (pip install MemoryOS -U)
from memos.api.client import MemOSClient
# 使用 API Key 初始化客户端
client = MemOSClient(api_key="YOUR_API_KEY")
user_id = "memos_user_123"
conversation_id = "0610"
res = client.get_message(user_id=user_id, conversation_id=conversation_id)
print(f"result: {res}")
curl --request POST \
--url https://memos.memtensor.cn/api/openmem/v1/get/message \
--header 'Authorization: Token YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"user_id": "memos_user_123",
"conversation_id": "0610"
}'