百炼的智能体应用在和您进行对话时,能够记住一定长度的对话记录,但由于大模型注意力机制的限制,可能会忘记某些信息。为了解决这个问题,您可以将对话过程中的特定信息存储到长期记忆中,智能体应用将在后续对话中持续引用这些信息。
开启长期记忆功能后,智能体应用将在长期记忆中加入以下信息:
用户洞察信息:
百炼基于用户消息自动生成用户偏好信息,例如,您发送了消息“我喜欢吃辣的”,百炼将自动生成一条用户洞察信息“用户喜欢吃辣的食物”。
您也可以手动新增或删除用户洞察信息。
用户画像信息(键值对):
您需要手动新增用户画像字段。例如,有一条用户洞察信息是“用户喜欢吃辣的食物”,您新增了用户画像字段“饮食偏好”并设置为“通过模型推理”,百炼将自动生成字段值“辣的食物”。
新增用户画像字段后,需要发布应用才能生效。
您也可以手动设置用户画像字段的值。
用户画像的权重比用户洞察的权重更高。
场景示例
智能导购助手:收集并记住顾客的预算范围、品牌偏好、关注的具体功能等信息,提供个性化的购买建议。
健身教练助手:收集并记住用户的身体状况、健身目标和可用设备等信息,提供个性化的锻炼计划和饮食建议。
旅游规划助手:收集并记住用户的预算、兴趣爱好和旅行时间等信息,推荐合适的目的地、景点和行程安排。
学习辅导助手:收集并记住学生的年级、知识水平和薄弱科目等信息,提供有针对性的学习资料和练习题。
您也可以手动将特定信息添加到长期记忆中,例如添加“语言:中文”的键值对,这样智能体应用在后续对话中就会持续用中文回复。
操作介绍
创建应用时,打开长期记忆开关。
单击配置,在右侧用户画像配置面板中,单击添加字段,配置相关参数。
参数名称
参数说明
本示例中的取值
字段名称
用户画像的字段名称,自定义填写。
用户画像字段要语义化,即人能很方便地理解每个标签含义,并能够通过标签快速读出其中的信息,机器能方便地做标签提取、聚合分析。
饮食偏好
运动偏好
年龄
字段描述
对用户画像字段的自然语言描述,用于提示大模型该字段的作用。
自定义填写。
用户偏好什么食物
用户偏好什么运动
用户的年龄
是否通过模型推理
是否通过模型推理自动更新该字段的值。开关状态,不影响抽取到用户洞察中的内容。
开关打开:用户画像字段对应的值是大模型基于对话推理得出,并且,随着对话中用户信息的更新,这个值也会自动更新。
开关关闭:用户画像字段对应的值手动填写或通过API传入,不会自动更新。用户画像字段是年龄、性别等静态信息时,生成的答案中会以手动输入的值覆盖旧的信息。用户画像字段是偏好等动态信息时,生成的答案中会以手动输入的值替换旧的信息,相当于取并集。如果不填写或传入值,则基于用户洞察内容回答问题。
饮食偏好:
运动偏好:
年龄:
单击确定,完成配置。
单击发布,发布应用。
分别输入以下提问,等待1分钟左右,在页面右侧单击长期记忆,查看自动抽取的用户洞察内容和自动生成的用户画像。
用户洞察内容如下:
用户消息
自动抽取到用户洞察中的内容
我喜欢吃海鲜。
用户喜欢吃海鲜。
我爱吃面食,不吃米饭。
用户喜欢吃面食,不吃米饭。
川菜太辣了,我受不了。
用户不能吃太辣的食物。
我习惯每周末都去打羽毛球。
用户习惯每周末都去打羽毛球。
我今年20岁。
用户今年20岁。
今天下大雨了。
不是用户个性化数据,不抽取内容。
用户画像内容如下:
用户画像字段
从用户洞察中抽取的值
饮食偏好
“饮食偏好”字段打开了是否通过模型推理开关,可以自动抽取字段对应的值“饮食偏好: 海鲜, 喜欢面食, 不吃米饭, 不吃太辣的食物”。
运动偏好
“运动偏好”字段关闭了是否通过模型推理开关,不能自动抽取对应的值,显示为空。
可手动输入对应的值,比如“游泳”,后续回答时,运动偏好将以“游泳”替换“羽毛球”,取二者的并集。使用示例请参考步骤7。
年龄
“年龄”字段关闭了是否通过模型推理开关,不能自动抽取对应的值,显示为空。
可手动输入对应的值,比如“30”,后续回答时,将以“30”替换之前对话中输入的“20”,即以手动输入的值覆盖旧的信息。使用示例请参考步骤8。
用户输入新的提问时,基于用户画像结合Prompt来回答问题。
修改“运动偏好”对应的值。
“运动偏好”中不输入值,大模型回答时以用户洞察中的内容为准。
“运动偏好”中输入“游泳”,回答时运动偏好将以“游泳”替换“羽毛球”,取二者的并集。
修改“年龄”对应的值。
“年龄”中不输入值,大模型回答时以用户洞察中的内容为准。
“年龄”中输入“30”,将以“30”替换之前对话中输入的“20”,即以手动输入的值覆盖旧的信息。
整体流程如下图所示:
相关API
使用CreateMemory创建长期记忆体,获取memoryId。
通过API调用智能体应用时,传入memoryId。系统会根据对话记录,自动在memoryId下创建MemoryNode,即记忆体内容。
再次调用智能体应用时,系统会根据传入的memoryId,自动召回相关记忆体内容,然后将其与当前用户消息一起输入给模型。
您可以使用ListMemoryNodes、CreateMemoryNode、UpdateMemoryNode、DeleteMemoryNode等API来管理记忆体内容。