介绍如何在阿里云百炼平台的工作流应用和高代码应用中集成记忆库,通过 API 调用赋予应用跨会话的长期记忆能力。
概述
记忆库提供独立的 API 接口,可集成到阿里云百炼平台的应用中。集成后,应用能够跨会话积累和引用用户的历史信息,提供个性化的对话体验。
阿里云百炼平台提供三种应用类型,其中工作流应用和高代码应用支持集成记忆库:
| 应用类型 | 是否支持记忆库 | 集成方式 |
|---|---|---|
| 智能体应用 | 不支持 | 智能体应用暂不支持集成记忆库 |
| 工作流应用 | 支持 | 在工作流编辑器中使用 API 组件调用记忆库 API |
| 高代码应用 | 支持 | 在上传的代码包中直接编写 API 调用代码 |
前提条件
在开始集成前,请确保满足以下条件:
- 已创建记忆库:在阿里云百炼控制台创建一个记忆库。详细步骤请参见创建记忆库。
- 已获取 API Key:在阿里云百炼控制台获取 DashScope API Key,用于调用记忆库 API 时进行身份验证。
- 已获取业务空间 ID:在业务空间管理页面查看,详见获取 Workspace ID。API Key 须属于同一业务空间。
{workspaceId} 替换为真实的业务空间 ID。完整的 API 接口说明请参见长期记忆 API 参考。
在工作流应用中使用记忆库
工作流应用通过可视化编辑器构建流程。您可以使用编辑器中的 API 组件调用记忆库 API,无需编写代码即可为工作流添加长期记忆能力。
典型的带记忆工作流结构为:
- 开始节点接收用户输入
- API 组件(SearchMemory):检索该用户的相关历史记忆
- 大模型节点:将记忆注入 System Prompt,结合用户提问生成回复
- API 组件(AddMemory):将本轮对话写入记忆库
- 结束节点输出回复
步骤一:配置开始节点并添加 API 组件
首先,在开始节点中确认输入变量。默认的 user_input 变量用于接收用户的对话消息。此外,您需要添加一个 user_id 变量(类型为 String),用于标识不同用户的记忆。如果您通过 API 方式调用该工作流,user_id 可以在调用时作为输入参数传入。
然后,在工作流编辑器左侧的节点库中,找到工具分类下的 API,将其拖拽到画布中。API 组件支持通过 POST 或 GET 方式调用自定义 API 服务。
您需要添加两个 API 组件:一个用于检索记忆(SearchMemory),一个用于写入记忆(AddMemory)。
步骤二:配置 SearchMemory 节点
点击画布中的第一个 API 组件,在右侧配置面板中填写以下信息:
| 配置项 | 值 |
|---|---|
| API 地址 | 选择 POST |
| URL 地址 | https://{workspaceId}.cn-beijing.maas.aliyuncs.com/api/v2/apps/memory/search |
| Header 设置 | Authorization:值为 Bearer YOUR_API_KEY(替换为您的 API Key) |
| Body 设置 | 选择 JSON 格式,填写 JSON 请求体(见下方示例) |
{{user_id}} 和 {{user_input}} 为工作流变量,引用开始节点中的用户标识和用户输入。您可以在输入框中输入 / 来插入变量。
在 API 组件底部的输出区域,配置一个输出变量(如 result,类型选择 Object),用于接收 SearchMemory 的返回结果。后续大模型节点将引用该变量中的记忆内容。
步骤三:配置大模型节点
在画布中添加一个大模型节点,连接在 SearchMemory API 组件之后。在大模型节点的 System Prompt 中,引用 SearchMemory 的输出变量来注入记忆内容。
System Prompt 示例:
步骤四:配置 AddMemory 节点
在大模型节点之后再添加一个 API 组件,用于将本轮对话写入记忆库。配置方式与 SearchMemory 类似:
| 配置项 | 值 |
|---|---|
| API 地址 | 选择 POST |
| URL 地址 | https://{workspaceId}.cn-beijing.maas.aliyuncs.com/api/v2/apps/memory/add |
| Header 设置 | 与 SearchMemory 节点相同 |
| Body 设置 | 选择 JSON 格式 |
步骤五:连接节点并测试
将各节点按以下顺序连接:
开始 → SearchMemory(API) → 大模型 → AddMemory(API) → 结束
连接完成后,点击右上角的测试按钮。在测试面板中填写 user_id(如 test_user_001)和 user_input(如"你好"),点击运行验证工作流是否正常。首次对话时 SearchMemory 返回结果为空属于正常情况,多轮对话后即可检索到之前存储的记忆。
在高代码应用中使用记忆库
高代码应用支持上传自定义代码包来实现业务逻辑。您可以在代码中直接通过 HTTP 请求调用记忆库 API,实现记忆的检索和写入。
核心流程与工作流应用相同:检索记忆 → 注入 Prompt → 生成回复 → 写入记忆。区别在于所有步骤都通过代码实现。
代码示例:带记忆的完整对话流程
cURL
Python
进阶优化
完成基础集成后,您可以通过以下方式进一步提升记忆效果。以下优化方法同时适用于工作流应用和高代码应用。
优化检索效果
SearchMemory 支持以下参数来提升检索质量:
| 参数 | 说明 | 适用场景 |
|---|---|---|
| rewrite | 对用户提问进行改写优化,提升检索召回率 | 用户表述模糊或口语化时 |
| rerank | 对检索结果重新排序,将最相关的记忆排在前面 | 记忆量大、需要精准匹配时 |
| similarity_threshold | 设置相似度阈值,过滤低相关性的结果 | 需要减少不相关记忆干扰时 |
| max_results | 限制返回的记忆条数 | 需要控制注入 Prompt 长度时 |
结合用户画像
用户画像记录用户的稳定属性(如偏好、角色、习惯),与记忆片段互补。将两者分层注入 Prompt,可以同时提供"全局背景"和"当前相关细节"。
实现方式:在检索记忆前,额外调用 GetUserProfile API 获取用户画像,然后在 System Prompt 中分层注入。
- 工作流应用:添加一个额外的 API 组件调用 GET
https://{workspaceId}.cn-beijing.maas.aliyuncs.com/api/v2/apps/memory/profile_schemas/{schema_id}/user_profile?user_id={user_id},将画像输出与记忆输出一起注入大模型节点。 - 高代码应用:在代码中增加 GetUserProfile 的 HTTP 请求,组装分层 System Prompt。
写入策略
AddMemory 支持两种写入方式:
| 参数 | 说明 | 适用场景 |
|---|---|---|
| messages | 传入完整的对话消息数组,系统自动提取关键信息并存储 | 标准对话场景,推荐优先使用 |
| custom_content | 直接传入已整理好的文本内容,系统原样存储 | 需要存储结构化摘要、外部数据或自定义格式 |
写入建议:推荐写入用户的偏好表达、关键决策、待办事项、重要事实等有长期价值的内容。避免写入一次性查询(如"今天天气")、敏感信息(如密码、密钥)、系统内部指令。