长期记忆

百炼的智能体应用在和您进行对话时,能够记住一定长度的对话记录,但由于大模型注意力机制的限制,可能会忘记某些信息。为了解决这个问题,您可以将对话过程中的特定信息存储到长期记忆中,智能体应用将在后续对话中持续引用这些信息。

开启长期记忆功能后,智能体应用将在长期记忆中加入以下信息:

  • 用户洞察信息:

    • 百炼基于用户消息自动生成用户偏好信息,例如,您发送了消息“我喜欢吃辣的”,百炼将自动生成一条用户洞察信息“用户喜欢吃辣的食物”。

    • 您也可以手动新增或删除用户洞察信息。

  • 用户画像信息(键值对):

    • 您需要手动新增用户画像字段。例如,有一条用户洞察信息是“用户喜欢吃辣的食物”,您新增了用户画像字段“饮食偏好”并设置为“通过模型推理”,百炼将自动生成字段值“辣的食物”。

      新增用户画像字段后,需要发布应用才能生效。
    • 您也可以手动设置用户画像字段的值。

用户画像的权重比用户洞察的权重更高。

场景示例

  • 智能导购助手:收集并记住顾客的预算范围、品牌偏好、关注的具体功能等信息,提供个性化的购买建议。

  • 健身教练助手:收集并记住用户的身体状况、健身目标和可用设备等信息,提供个性化的锻炼计划和饮食建议。

  • 旅游规划助手:收集并记住用户的预算、兴趣爱好和旅行时间等信息,推荐合适的目的地、景点和行程安排。

  • 学习辅导助手:收集并记住学生的年级、知识水平和薄弱科目等信息,提供有针对性的学习资料和练习题。

您也可以手动将特定信息添加到长期记忆中,例如添加“语言:中文”的键值对,这样智能体应用在后续对话中就会持续用中文回复。

操作介绍

  1. 创建应用时,打开长期记忆开关。

  2. 单击配置,在右侧用户画像配置面板中,单击添加字段,配置相关参数。

    image

    参数名称

    参数说明

    本示例中的取值

    字段名称

    用户画像的字段名称,自定义填写。

    用户画像字段要语义化,即人能很方便地理解每个标签含义,并能够通过标签快速读出其中的信息,机器能方便地做标签提取、聚合分析。

    • 饮食偏好

    • 运动偏好

    • 年龄

    字段描述

    对用户画像字段的自然语言描述,用于提示大模型该字段的作用。

    自定义填写。

    • 用户偏好什么食物

    • 用户偏好什么运动

    • 用户的年龄

    是否通过模型推理

    是否通过模型推理自动更新该字段的值。开关状态,不影响抽取到用户洞察中的内容。

    • 开关打开image:用户画像字段对应的值是大模型基于对话推理得出,并且,随着对话中用户信息的更新,这个值也会自动更新。

    • 开关关闭image:用户画像字段对应的值手动填写或通过API传入,不会自动更新。用户画像字段是年龄、性别等静态信息时,生成的答案中会以手动输入的值覆盖旧的信息。用户画像字段是偏好等动态信息时,生成的答案中会以手动输入的值替换旧的信息,相当于取并集。如果不填写或传入值,则基于用户洞察内容回答问题。

    • 饮食偏好:image

    • 运动偏好:image

    • 年龄:image

  3. 单击确定,完成配置。

  4. 单击发布,发布应用。

  5. 分别输入以下提问,等待1分钟左右,在页面右侧单击长期记忆,查看自动抽取的用户洞察内容和自动生成的用户画像。

    image

    用户洞察内容如下:

    用户消息

    自动抽取到用户洞察中的内容

    我喜欢吃海鲜。

    用户喜欢吃海鲜。

    image

    我爱吃面食,不吃米饭。

    用户喜欢吃面食,不吃米饭。

    川菜太辣了,我受不了。

    用户不能吃太辣的食物。

    我习惯每周末都去打羽毛球。

    用户习惯每周末都去打羽毛球。

    我今年20岁。

    用户今年20岁。

    今天下大雨了。

    不是用户个性化数据,不抽取内容。

    用户画像内容如下:

    用户画像字段

    从用户洞察中抽取的值

    饮食偏好

    “饮食偏好”字段打开了是否通过模型推理开关,可以自动抽取字段对应的值“饮食偏好: 海鲜, 喜欢面食, 不吃米饭, 不吃太辣的食物”。

    image

    运动偏好

    “运动偏好”字段关闭了是否通过模型推理开关,不能自动抽取对应的值,显示为空。

    可手动输入对应的值,比如“游泳”,后续回答时,运动偏好将以“游泳”替换“羽毛球”,取二者的并集。使用示例请参考步骤7。

    年龄

    “年龄”字段关闭了是否通过模型推理开关,不能自动抽取对应的值,显示为空。

    可手动输入对应的值,比如“30”,后续回答时,将以“30”替换之前对话中输入的“20”,即以手动输入的值覆盖旧的信息。使用示例请参考步骤8。

  6. 用户输入新的提问时,基于用户画像结合Prompt来回答问题。

    image

  7. 修改“运动偏好”对应的值。

    image

    “运动偏好”中不输入值,大模型回答时以用户洞察中的内容为准。

    “运动偏好”中输入“游泳”,回答时运动偏好将以“游泳”替换“羽毛球”,取二者的并集。

    image

    image

  8. 修改“年龄”对应的值。

    image

    “年龄”中不输入值,大模型回答时以用户洞察中的内容为准。

    “年龄”中输入“30”,将以“30”替换之前对话中输入的“20”,即以手动输入的值覆盖旧的信息。

    image

    image

    整体流程如下图所示:

    image

相关API

  1. 使用CreateMemory创建长期记忆体,获取memoryId。

  2. 通过API调用智能体应用时,传入memoryId。系统会根据对话记录,自动在memoryId下创建MemoryNode,即记忆体内容。

  3. 再次调用智能体应用时,系统会根据传入的memoryId,自动召回相关记忆体内容,然后将其与当前用户消息一起输入给模型。

您可以使用ListMemoryNodesCreateMemoryNodeUpdateMemoryNodeDeleteMemoryNodeAPI来管理记忆体内容。