logo
当前页

AI短期记忆(智能体上下文)管理

在创建智能体实例并实现角色扮演等对话时,智能体能够记住最近一段时间互动聊天的具体内容(通常被称为短期记忆),其实现的原理为 LLM (大语言模型)的上下文。 在语音对话的过程中,其记忆有以下阶段:

  • 初始记忆:在创建实例时,是否需要聊天记录。
    • 可关联 ZIM 的会话历史记录,作为初始记忆;
    • 可自定义外部上下文,作为初始记忆。若置空,则不携带任何记忆。
  • 语音通话过程中记忆:语音通话过程中产生的对话历史,会缓存在 AI Agent 服务端。
  • 语音通话结束,记忆归档
注意
  • 上下文长度限制: 通常 LLM 有最大长度限制,超出这个限制则会报错。例如“doubao-1.5-pro-32k”,其上下文长度为 32k token 长度。

  • 上下文长度与推理耗时: 通常上下文越长,则 LLM 输出的速度越慢。

  • 上下文长度与价格: 通常 LLM 等计费根据上下文的长度进行输入计费,长度越长,价格越高。

使用步骤

设置初始记忆

创建智能体实例时可设置智能体实例的初始记忆(即智能体初始上下文)。记忆来源可分为“ZIM 的会话历史记录”和“自定义外部上下文”, 可通过创建智能体实例接口的 MessageHistory 参数控制。相关参数详细结构如下:

从 ZIM 的会话历史记录加载初始记忆

  1. 确保APP已开通 ZIM 服务
  2. 创建智能体实例时,将设置 SyncMode 为 0 ,并且填写对应的 ZIM 参数。示例如下:
说明
ZIM.RobotId即调用 ZIM 注册机器人接口对应的UserInfo.UserId
Untitled
 "MessageHistory": {
    "SyncMode": 0,
    "ZIM": {
        "RobotId": "@RBT#123",
        "LoadMessageCount": 10
    }
 }
1
Copied!

从自定义外部上下文加载初始记忆

  1. 业务需要自己存储上下文信息。
  2. 创建智能体实例时,将设置 SyncMode 为 1 ,并且填写对应的 Messages 参数。示例如下:
Untitled
 "MessageHistory":{
    "SyncMode": 1,
    "Messages": [
        {
            "Role": "user",
            "Content": "你叫什么名字?"
        },
        {
            "Role": "assistant",
            "Content": "我叫豆包呀。"
        },
        {
            "Role": "user",
            "Content": "给我讲故事。"
        },
        {
            "Role": "assistant",
            "Content": "好呀,我给你讲一个《三只小猪》的故事吧。"
        }
    ]
}
1
Copied!

管理语音通话过程中的记忆

管理语音通话过程中的记忆即管理智能体实例上下文。可以获取上下文列表也可以清空上下文。

获取智能体实例上下文列表

调用获取智能体实例上下文列表接口(GetAgentInstanceMsgList),传入创建智能体实例接口返回的 AgentInstanceId ,服务端将返回该实例的上下文列表,消息按照聊天的时间升序返回,示例如下:

Untitled
{
    "Code": 0,
    "Message": "success",
    "RequestId": "2537521374375652066",
    "Data": {
        "Total": 4,
        "MessageList": [
            {
                "Role": "user",
                "Content": "你叫什么名字?"
            },
            {
                "Role": "assistant",
                "Content": "我叫豆包呀。"
            },
            {
                "Role": "user",
                "Content": "给我讲故事。"
            },
            {
                "Role": "assistant",
                "Content": "好呀,我给你讲一个《三只小猪》的故事吧。"
            }
        ]
    }
}
1
Copied!

重置智能体实例上下文列表

调用重置智能体实例上下文列表接口(ResetAgentInstanceMsgList),传入创建智能体实例接口返回的 AgentInstanceId,服务端将重置当前实例的上下文列表。

语音通话结束后归档记忆

您只需要在创建智能体实例时,将 SyncMode 设置为 0ZIM.RobotId 为一个有效的 ZIM 机器人 ID,那么语音通话对话记录将存储到 ZIM 服务。这些已储存的历史聊天消息,可以用于后续对话的初始记忆。可参考从 ZIM 的会话历史记录加载初始记忆章节。您也可以按业务需求用其他方式自行维护历史记忆归档。

设置示例如下:

Untitled
 "MessageHistory": {
    "SyncMode": 0,
    "ZIM": {
        "RobotId": "@RBT#123"
    }
}
1
Copied!

Previous

语音识别断句

Next

角色扮演 System Prompt