API 接入
更新时间:2026-06-18
在 REST API 模式下,您可以在自己的流程中主动决定什么时候读记忆、什么时候写记忆,以及如何使用记忆结果。所有接口通过 HTTPS 调用,使用 HTTP Bearer Token 认证。
API Base URL:
https://cloud.memory.bj.baidubce.com/api(已包含/api,不要再额外拼接)。以下示例使用环境变量$MEMORY_API_BASE_URL代替。接口路径中$MEMORY_BANK_ID为目标记忆库 ID。
认证方式
在请求头中携带 API Key:
Plain Text
1Authorization: Bearer <your-api-key>
2Content-Type: application/json
文件上传接口使用 multipart/form-data。
核心接口
1. Bank 管理
| 方法 | 接口路径 | 用途 |
|---|---|---|
| GET | /v1/default/banks |
列出当前 API Key 可访问的 Bank |
| POST | /v1/default/banks/{bankId} |
创建或初始化 Bank,请求体为 { bank_id } |
2. Retain 存储记忆
| 方法 | 接口路径 | 用途 |
|---|---|---|
| POST | /v1/default/banks/{bankId}/memories |
写入文本内容(同步或异步,由 async 字段控制) |
| POST | /v1/default/banks/{bankId}/files/retain |
上传一个或多个文件并异步写入记忆,表单字段 files 为文件列表,request 为 JSON 字符串 |
Retain 请求字段
| 字段 | 类型 | 说明 |
|---|---|---|
items |
array | 要写入的内容列表,每项至少包含 content |
items[].content |
string | 自然语言文本,建议保留完整上下文 |
items[].timestamp |
string | 事件发生时间,建议使用 ISO 8601 格式;传 "unset" 表示无时间信息 |
items[].context |
string | 内容来源或场景,如 support chat、code review、meeting notes |
items[].document_id |
string | 稳定文档 ID,便于更新而非重复写入 |
items[].tags |
string[] | 范围标签,用于后续检索和多租户隔离 |
items[].strategy |
string | 写入策略 |
items[].metadata |
object | 来源系统、外部 ID 等附加信息 |
items[].update_mode |
string | 同名 document_id 的处理方式:replace(默认,删除旧内容后重新处理)或 append(追加新内容到已有文档) |
async |
boolean | 是否异步处理,默认 false |
文件上传字段
| 字段 | 类型 | 说明 |
|---|---|---|
files |
file[] | 一个或多个上传文件,字段名必须是 files |
request |
string | JSON 字符串,可包含 document_id、tags、context 等信息 |
3. Recall 检索记忆
| 方法 | 接口路径 | 用途 |
|---|---|---|
| POST | /v1/default/banks/{bankId}/memories/recall |
按自然语言查询检索相关记忆,适合 Agent 回复前注入上下文 |
Recall 请求字段
| 字段 | 类型 | 说明 |
|---|---|---|
query |
string | 自然语言查询(必填,最多 500 tokens) |
budget |
string | 检索强度:low(快速查找)、mid(日常推荐)、high(深度检索),默认 mid |
max_tokens |
number | 限制返回上下文大小,默认 4096 |
types |
string[] | 按事实类型过滤:world(客观事实)、experience(经验事实)、observation(观察) |
tags |
string[] | 只检索匹配标签的记忆 |
tags_match |
string | 标签匹配方式:any(默认,含无标签)、any_strict(排除无标签)、all、all_strict |
tag_groups |
array | 多组标签条件,每组可独立指定 tags 和 tags_match |
query_timestamp |
string | 把查询锚定到指定时间点,ISO 8601 格式 |
include |
object | 可包含 entities(默认开启)、chunks(返回原始分块)、source_facts(返回观察的来源事实)等扩展信息 |
trace |
boolean | 返回检索追踪信息,便于调试 |
Recall 响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
results |
array | 按相关性排序的记忆列表,每项包含 id、text、type、context、tags、entities、occurred_start、occurred_end、mentioned_at、document_id 等 |
entities |
object | 关联实体,以实体 ID 为键的字典 |
source_facts |
object | 仅当 include.source_facts 开启时返回,以事实 ID 为键的来源事实字典 |
chunks |
object | 仅当 include.chunks 开启时返回,以分块 ID 为键的原始文本字典 |
trace |
object | 仅当 trace: true 时返回,包含每阶段的耗时和检索细节 |
4. Reflect 智能推理
| 方法 | 接口路径 | 用途 |
|---|---|---|
| POST | /v1/default/banks/{bankId}/reflect |
基于记忆生成综合回答,适合总结、判断、画像和状态分析 |
Reflect 请求字段
| 字段 | 类型 | 说明 |
|---|---|---|
query |
string | 需要推理回答的问题(必填) |
budget |
string | 推理搜索强度:low(默认,浅层快速)、mid(多源核查)、high(深度探索),默认 low |
context |
string | 为推理提供情境信息,影响推理方向 |
max_tokens |
number | 限制回答长度,默认 4096 |
include |
object | 控制返回内容,可包含 facts(返回引用依据)、tool_calls(返回推理步骤)等 |
response_schema |
object | JSON Schema 对象,传入后返回结构化输出(structured_output 字段),适用于程序化处理 |
tags |
string[] | 限定 Reflect 可访问的记忆范围 |
tags_match |
string | 标签匹配方式,与 Recall 一致 |
tag_groups |
array | 多组标签条件,每组可独立指定 tags 和 tags_match |
fact_types |
string[] | 限制事实类型:world、experience、observation |
exclude_mental_models |
boolean | 跳过全部心智模型,强制从事实和观察推理 |
exclude_mental_model_ids |
string[] | 指定要排除的心智模型 ID,比 exclude_mental_models 更细粒度 |
Reflect 响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
text |
string | 综合回答文本(Markdown 格式);使用 response_schema 时为空 |
structured_output |
object | 仅当传入 response_schema 时返回,按 Schema 解析的结构化结果 |
based_on |
object | 仅当 include.facts 开启时返回,包含 memories、mental_models、directives 三个列表 |
usage |
object | 本次推理的 Token 用量:input_tokens、output_tokens、total_tokens |
trace |
object | 仅当 include.tool_calls 开启时返回,包含完整的推理步骤日志 |
5. 查询与管理数据
| 方法 | 接口路径 | 用途 |
|---|---|---|
| GET | /v1/default/banks/{bankId}/memories/list |
分页列出记忆,可按 type、q、limit、offset 过滤 |
| GET | /v1/default/banks/{bankId}/documents |
列出导入文档 |
| GET | /v1/default/banks/{bankId}/entities |
列出实体 |
| GET | /v1/default/banks/{bankId}/entities/graph |
获取实体共现图 |
| GET | /v1/default/banks/{bankId}/operations |
查看异步任务,支持 status、type、limit、offset |
| DELETE | /v1/default/banks/{bankId}/operations/{operationId} |
取消待处理任务 |
请求示例
Retain 存储文本记忆
Bash
1curl "$MEMORY_API_BASE_URL/v1/default/banks/$MEMORY_BANK_ID/memories" \
2 -H "Authorization: Bearer $MEMORY_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "items": [
6 {
7 "content": "用户偏好使用 TypeScript、React 和 Tailwind 构建前端页面。",
8 "context": "project onboarding",
9 "document_id": "onboarding-session-001",
10 "timestamp": "2026-05-12T10:00:00+08:00",
11 "tags": ["user:demo", "project:frontend"]
12 }
13 ]
14 }'
Retain 追加内容到已有文档
Bash
1curl "$MEMORY_API_BASE_URL/v1/default/banks/$MEMORY_BANK_ID/memories" \
2 -H "Authorization: Bearer $MEMORY_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "items": [
6 {
7 "content": "新增讨论:团队决定将状态管理从 Redux 迁移到 Zustand。",
8 "document_id": "onboarding-session-001",
9 "update_mode": "append",
10 "tags": ["user:demo", "project:frontend"]
11 }
12 ]
13 }'
Retain 上传文件写入记忆
Bash
1curl "$MEMORY_API_BASE_URL/v1/default/banks/$MEMORY_BANK_ID/files/retain" \
2 -H "Authorization: Bearer $MEMORY_API_KEY" \
3 -F 'request={
4 "document_id":"product-guide-001",
5 "tags":["project:docs"]
6 }' \
7 -F "files=@./product-guide.md;type=text/markdown"
Recall 检索相关记忆
Bash
1curl "$MEMORY_API_BASE_URL/v1/default/banks/$MEMORY_BANK_ID/memories/recall" \
2 -H "Authorization: Bearer $MEMORY_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "query": "这个用户偏好的前端技术栈是什么?",
6 "budget": "mid",
7 "tags": ["user:demo"],
8 "tags_match": "all_strict",
9 "max_tokens": 1200,
10 "trace": true
11 }'
Recall JavaScript 示例
Javascript
1const apiBaseUrl = process.env.MEMORY_API_BASE_URL;
2const memoryKey = process.env.MEMORY_API_KEY;
3const bankId = process.env.MEMORY_BANK_ID;
4
5async function recallUserContext(userMessage) {
6 const response = await fetch(`${apiBaseUrl}/v1/default/banks/${bankId}/memories/recall`, {
7 method: "POST",
8 headers: {
9 "Authorization": `Bearer ${memoryKey}`,
10 "Content-Type": "application/json",
11 },
12 body: JSON.stringify({
13 query: userMessage,
14 budget: "mid",
15 tags: ["user:demo"],
16 tags_match: "all_strict",
17 }),
18 });
19
20 if (!response.ok) {
21 throw new Error(`Recall failed: ${response.status}`);
22 }
23
24 return response.json();
25}
Recall Python 示例
Python
1import os
2import requests
3
4api_base_url = os.environ["MEMORY_API_BASE_URL"]
5api_key = os.environ["MEMORY_API_KEY"]
6bank_id = os.environ["MEMORY_BANK_ID"]
7
8resp = requests.post(
9 f"{api_base_url}/v1/default/banks/{bank_id}/memories/recall",
10 headers={
11 "Authorization": f"Bearer {api_key}",
12 "Content-Type": "application/json",
13 },
14 json={
15 "query": "这个用户最近在做什么项目?",
16 "budget": "mid",
17 "tags": ["user:demo"],
18 "tags_match": "all_strict",
19 },
20 timeout=30,
21)
22
23resp.raise_for_status()
24print(resp.json())
Reflect 智能推理
Bash
1curl "$MEMORY_API_BASE_URL/v1/default/banks/$MEMORY_BANK_ID/reflect" \
2 -H "Authorization: Bearer $MEMORY_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "query": "请总结这个用户的工程偏好,并给出接下来生成代码时应遵循的建议。",
6 "budget": "mid",
7 "include": {"facts": true},
8 "tags": ["user:demo"],
9 "tags_match": "all_strict"
10 }'
Reflect 结构化输出
Bash
1curl "$MEMORY_API_BASE_URL/v1/default/banks/$MEMORY_BANK_ID/reflect" \
2 -H "Authorization: Bearer $MEMORY_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "query": "这个用户适合使用什么前端框架?",
6 "budget": "low",
7 "response_schema": {
8 "type": "object",
9 "properties": {
10 "recommendation": {"type": "string"},
11 "confidence": {"type": "string", "enum": ["low", "medium", "high"]},
12 "reasons": {"type": "array", "items": {"type": "string"}}
13 },
14 "required": ["recommendation", "confidence", "reasons"]
15 }
16 }'
评价此篇文章
