AI 记忆能力方案

最近更新时间:2026-04-21 16:24:41

我的收藏

背景与目标

为了让 AI 陪伴具备记忆能力(短期记忆和长期记忆),需要两条 AI 交互通道。
短期记忆:接续 IM 文字聊天的近期话题,语音和文字无缝衔接
长期记忆:记住用户跨越较长时间的偏好、习惯和重要信息
通道
交互方式
当前记忆状态
IM-AI 通道
文字聊天
腾讯云 IM 原生支持 N 轮上下文,控制台可配置(最大 50 条)
TRTC-AI 通道
语音通话
每次通话独立,无跨 session 记忆

IM 文字聊天的记忆能力(腾讯云原生支持)

方案说明

腾讯云 IM 的 AI 聊天机器人原生支持多轮上下文,无需额外开发。

配置方式

在腾讯云 IM 控制台可直接调整 AI 机器人的上下文记忆长度,具体操作路径如下:
1. 登录 腾讯云 IM 控制台,选择目标应用。
2. 在左侧导航栏选择消息服务 Chat > AI 聊天机器人
3. 在机器人列表中找到目标机器人,单击操作列的编辑
4. 在编辑页的 AI 服务配置区域,修改历史消息数参数。
5. 保存后立即生效,无需重启服务或重新发布客户端。
注意:
历史消息数参数表示每次请求传递给大模型的历史消息条数。最大支持50条。
每次用户发送消息时,IM 后台自动将历史上下文一并送入 LLM。
同时受 IM 套餐中漫游消息时长限制,超过漫游存储时长的消息无法作为上下文携带给 AI 大模型

效果

用户在文字聊天中,AI 始终能"记住"最近 N 轮的对话内容,实现连贯的多轮交互,无需任何客户端或服务端改动。

TRTC 语音通话的记忆能力(双层方案)

TRTC AI 对话通过 StartAIConversation 接口启动,其中 LLMConfig 支持以下关键字段:
LLMConfig 字段
用途
SystemPrompt
注入长期记忆(人设 + 历史摘要)
UserMessages
注入短期记忆(近期 IM 聊天记录)
History
TRTC 通话内的上下文轮次(最大 50 轮)
注意:
SystemPromptUserMessages 均为 LLMConfig 的字段,而非 AgentConfig 的字段。AgentConfig 负责机器人进房配置(UserId / UserSig / WelcomeMessage 等),不承载 LLM 上下文。
UserMessages 是通话前注入的外部历史(来自 IM),History 是通话过程中 TRTC 自动管理的上下文轮次,两者互不冲突,可同时使用。
两层记忆互补,形成完整的记忆体系:
记忆层级
LLMConfig 字段
内容
特点
长期记忆
SystemPrompt
基础人设 + 用户长期偏好摘要
覆盖时间跨度长,精度相对低
短期记忆
UserMessages
最近 N 条 IM 聊天原文(用户可配置)
精度高,直接接续文字聊天话题
通话内记忆
History
当前 TRTC 通话内的上下文轮次
自动管理,默认 0,最大 50 轮

短期记忆:注入 IM 聊天历史

原理

在每次语音通话启动时,服务端从腾讯云 IM 拉取该用户与机器人的最近 N 条聊天记录,转换格式后通过 LLMConfig.UserMessages 注入给 TRTC AI。

流程图



LLMConfig 注入示例

{
"LLMType": "openai",
"Model": "deepseek-chat",
"APIKey": "...",
"APIUrl": "https://api.deepseek.com/chat/completions",
"Streaming": true,
"SystemPrompt": "你化身为人工智能助手贾维斯...",
"History": 10,
"Timeout": 10,
"UserMessages": [
{ "Role": "user", "Content": "你好,我是小明" },
{ "Role": "assistant", "Content": "你好小明!很高兴认识你。" },
{ "Role": "user", "Content": "帮我推荐一本Python的书" },
{ "Role": "assistant", "Content": "推荐《流畅的Python》,适合有一定基础的开发者。" }
]
}

用户可配置项

配置项
说明
建议默认值
注入条数 N
拉取最近 N 条 IM 消息作为短期记忆
10条
最大上限
受 LLM token 窗口限制
建议不超过30条
注意:
Token 消耗:注入的 UserMessages 条数越多,每次 LLM 调用的 token 消耗越大,需结合实际成本合理配置默认值。
IM 消息格式解析:AI 在 IM 通道的回复以 customElem(chunks 数组)形式存储,注入前需还原为完整文本,否则 LLM 上下文理解会出现异常。

长期记忆:SystemPrompt 历史摘要

原理

基于用户与 AI 的完整交互历史(包括 IM 文字聊天 + TRTC 语音通话),定期通过 LLM 生成精简摘要,存储在服务端。每次启动语音通话时,将摘要拼接到 LLMConfig.SystemPrompt,使 AI 具备对该用户的长期了解。

数据来源

长期记忆的输入数据来自两个通道,合并后可构建更完整的用户画像:
数据来源
获取方式
内容
IM 文字聊天记录
调用 IM REST API v4/openim/admin_getroammsg 拉取
用户文本消息 + AI 回复(customElem chunks 拼接)
TRTC 语音对话记录
通过 903 服务端回调 实时接收并存储
ASR 识别的用户语音文本 + LLM 生成的 AI 回复文本
903 回调说明
TRTC AI 对话服务支持 EventType 903EVENT_TYPE_AI_SERVICE_MSG)服务端回调,每当 ASR 识别出完整一句话或 LLM 返回完整回复时,TRTC 后台会主动推送到开发者配置的回调地址。
回调包体格式:
{
"EventGroupId": 9,
"EventType": 903,
"CallbackTs": 1687770730166,
"EventInfo": {
"EventMsTs": 1622186275757,
"TaskId": "xx",
"RoomId": "1234",
"RoomIdType": 0,
"Payload": {
"UserId": "user_123",
"Text": "我最近在学习 Python",
"StartTimeMs": 1234,
"EndTimeMs": 1269,
"RoundId": "xxxxxx"
}
}
}
关键字段:
字段
说明
Payload.UserId
发送者 ID,通过判断是否为机器人 UserId 来区分用户发言和 AI 回复
Payload.Text
对话文本内容(ASR 识别结果或 LLM 完整回复)
Payload.RoundId
一轮对话的唯一 ID,可用于关联同一轮的用户提问和 AI 回答
说明:
配置方式:在 TRTC 控制台 的"回调配置"中设置回调地址,勾选 AI 实时对话回调即可。

摘要内容示例

以下是您与该用户的历史对话摘要,请在本次对话中记住这些信息:

- 用户名叫小明,偏好简洁直接的回答风格
- 用户从事软件开发工作,熟悉 Python 和移动端开发
- 上次讨论了 AI 产品设计方案,用户对语音交互体验很感兴趣
- 用户在语音通话中提到希望 AI 能记住自己的偏好,不用每次重复说明
- 用户通过语音通话询问过 TRTC 的降噪配置方法

流程图




注意:
摘要更新时机:长期摘要建议在每次对话结束后异步更新,避免影响通话启动速度。
隐私合规:长期记忆摘要仅存储关键事实性信息,不保留原始对话全文,并应在用户协议中明确告知。
摘要长度控制:注入 LLMConfig.SystemPrompt 的摘要建议控制在300 token 以内,避免挤占对话上下文窗口,影响 AI 实时响应质量。

三种记忆能力对比总览

维度
IM 文字记忆
TRTC 短期记忆
TRTC 长期记忆
技术方案
腾讯云 IM 原生
LLMConfig.UserMessages 注入 IM 历史
LLMConfig.SystemPrompt 注入 LLM 摘要
数据来源
IM 后台自动管理
IM REST API 拉取
IM 聊天记录 + TRTC 903 回调语音记录
覆盖范围
最近 50 条
最近 N 条(用户配置)
全量历史(压缩)
精度
高(原文)
高(原文)
中(摘要)
时间跨度
短期
短期
长期
额外基础设施
需要存储层 + 903 回调配置