一、背景与目标
·短期记忆:接续 IM 文字聊天的近期话题,语音和文字无缝衔接
·长期记忆:记住用户跨越较长时间的偏好、习惯和重要信息
| 通道 | 交互方式 | 当前记忆状态 |
| IM-AI 通道 | 文字聊天 | 腾讯云 IM 原生支持 N 轮上下文,控制台可配置(最大 50 条) |
| TRTC-AI 通道 | 语音通话 | 每次通话独立,无跨 session 记忆 |
二、方案说明
腾讯云 IM 的 AI 聊天机器人原生支持多轮上下文,无需额外开发。
三、配置方式
在腾讯云 IM 控制台可直接调整 AI 机器人的上下文记忆长度,具体操作路径如下:
1. 登录 腾讯云 IM 控制台,选择目标应用。
2. 在左侧导航栏选择消息服务 Chat > AI 聊天机器人。
3. 在机器人列表中找到目标机器人,单击操作列的编辑。
4. 在编辑页的 AI 服务配置区域,修改历史消息数参数。
5. 保存后立即生效,无需重启服务或重新发布客户端。
注意:同时受 IM 套餐中漫游消息时长限制,超过漫游存储时长的消息无法作为上下文携带给 AI 大模型
四、效果
用户在文字聊天中,AI 始终能"记住"最近 N 轮的对话内容,实现连贯的多轮交互,无需任何客户端或服务端改动。
五、TRTC 语音通话的记忆能力(双层方案)
TRTC AI 对话通过 StartAIConversation 接口启动,其中 LLMConfig 支持以下关键字段:
| LLMConfig 字段 | 用途 |
| SystemPrompt | 注入长期记忆(人设 + 历史摘要) |
| UserMessages | 注入短期记忆(近期 IM 聊天记录) |
| History | TRTC 通话内的上下文轮次(最大 50 轮) |
两层记忆互补,形成完整的记忆体系:
| 记忆层级 | LLMConfig 字段 | 内容 | 特点 |
| 长期记忆 | SystemPrompt | 基础人设 + 用户长期偏好摘要 | 覆盖时间跨度长,精度相对低 |
| 短期记忆 | UserMessages | 最近 N 条 IM 聊天原文(用户可配置) | 精度高,直接接续文字聊天话题 |
| 通话内记忆 | History | 当前 TRTC 通话内的上下文轮次 | 自动管理,默认 0,最大 50 轮 |
六、原理
在每次语音通话启动时,服务端从腾讯云 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条 |
九、原理
基于用户与 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 903(EVENT_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 的降噪配置方法
十二、三种记忆能力对比总览
| 维度 | IM 文字记忆 | TRTC 短期记忆 | TRTC 长期记忆 |
| 技术方案 | 腾讯云 IM 原生 | LLMConfig.UserMessages 注入 IM 历史 | LLMConfig.SystemPrompt 注入 LLM 摘要 |
| 数据来源 | IM 后台自动管理 | IM REST API 拉取 | IM 聊天记录 + TRTC 903 回调语音记录 |
| 覆盖范围 | 最近 50 条 | 最近 N 条(用户配置) | 全量历史(压缩) |
| 精度 | 高(原文) | 高(原文) | 中(摘要) |
| 时间跨度 | 短期 | 短期 | 长期 |
| 额外基础设施 | 无 | 无 | 需要存储层 + 903 回调配置 |