记忆导出
内存导出
相关源文件
以下文件为本 Wiki 页面的生成提供了上下文:
docs/api-reference/entities/delete-user.mdxdocs/api-reference/entities/get-users.mdxdocs/api-reference/events/get-event.mdxdocs/api-reference/events/get-events.mdxdocs/cookbooks/essentials/building-ai-companion.mdxdocs/cookbooks/essentials/controlling-memory-ingestion.mdxdocs/cookbooks/essentials/entity-partitioning-playbook.mdxdocs/cookbooks/essentials/exporting-memories.mdxdocs/cookbooks/integrations/healthcare-google-adk.mdxdocs/cookbooks/integrations/openai-tool-calls.mdxdocs/cookbooks/overview.mdxdocs/docs.jsondocs/llms.txtdocs/open-source/python-quickstart.mdxdocs/openapi.jsondocs/platform/features/contextual-add.mdxdocs/platform/features/entity-scoped-memory.mdxdocs/platform/features/v2-memory-filters.mdxdocs/platform/quickstart.mdxmem0/client/main.py
内存导出是一个结构化数据提取系统,可以将非结构化内存转换为类型化、符合模式的数据结构。该功能允许应用程序以 JSON 模式(通常由 Pydantic 生成)定义的格式检索内存,从而实现与下游系统的类型安全集成和数据可移植性。
概述
内存导出系统作为一个基于异步任务的服务运行,其工作流程如下:
- 接收 JSON 模式定义。
- 检索符合可选过滤条件的内存。
- 使用大语言模型(LLM)进行提取,将数据转换并结构化为符合模式的形式。
- 通过基于轮询的检索机制返回类型化结果。
这使得应用程序能够将对话式内存数据转换为结构化格式,例如客户画像、专业简历或特定领域的实体。
来源:docs/docs.json:95-95,mem0/client/main.py:563-606
导出工作流
下图展示了在导出生命周期中,SDK 与平台 API 之间的交互过程。
图示:内存导出的请求与检索生命周期,展示了异步处理过程。
来源:mem0/client/main.py:563-606,docs/openapi.json:24-210
创建导出
端点:POST /v1/memories/导出/
创建导出的端点接收模式、过滤条件和可选指令。
请求结构:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
schema | object | 是 | 定义导出结构的 JSON 模式(兼容 Pydantic)。 |
filters | object | 否 | 实体过滤条件(user_id、agent_id、app_id、run_id)。 |
export_instructions | string | 否 | 用于提取过程的自定义自然语言指令。 |
客户端方法:create_memory_export
MemoryClient.create_memory_export() 方法封装了导出创建的 API。
# 使用示例
filters = {"user_id": "alice"}
export_instructions = "创建一份全面的画像。优先使用最近的信息。"
response = client.create_memory_export(
schema=json_schema,
filters=filters,
export_instructions=export_instructions
)
print(response["id"])
实现细节:
- 位于
mem0/client/main.py:563-587。 - 接收
schema(字典类型)和可选的export_instructions。 - 使用
_prepare_params()将org_id和project_id注入到请求上下文中mem0/client/main.py:143-154。 - 捕获遥测事件
client.create_memory_exportmem0/client/main.py:587。
来源:mem0/client/main.py:563-587,mem0/client/main.py:143-154
模式与指令
模式定义
模式决定了输出的结构。它支持嵌套对象、枚举和基本类型。常见的结构包括 ProfessionalProfile(专业画像)或 UserPreferences(用户偏好)。
导出指令
用户可以提供 export_instructions 来指导大语言模型(LLM)进行提取。常见的使用场景包括:
- 冲突解决:优先使用最近的信息而非历史记录。
- 详细程度:指定特定字段的提取深度。
- 事实性:区分已确认的事实和用户推测性的陈述。
来源:mem0/client/main.py:563-568,docs/platform/features/v2-memory-filters.mdx:6-16
检索导出结果
端点:GET /v1/memories/导出/{id}/
创建导出任务后,可以通过导出 ID 检索结果。
客户端方法:get_memory_export
# 使用导出 ID 进行检索
response = client.get_memory_export(memory_export_id="550e8400-e29b-41d4-a716-446655440000")
备选方案:按过滤条件检索 SDK 还允许获取与特定过滤条件关联的最新导出。
filters = {"user_id": "alex"}
response = client.get_memory_export(filters=filters)
实现细节:
- 位于
mem0/client/main.py:590-606。 - 如果提供了
memory_export_id,则调用指定 ID 的端点。 - 如果提供了
filters,则调用基于过滤条件的检索端点。 - 捕获遥测事件
client.get_memory_exportmem0/client/main.py:606。
来源:mem0/client/main.py:590-606
代码实体映射
下图将 SDK 方法映射到对应的 API 端点和内部工具函数。
图示:SDK 方法与 API 端点及内部逻辑的关联关系。
来源:mem0/client/main.py:563-622,mem0/client/utils.py:1-20
导出过滤
导出可以使用与标准内存搜索相同的过滤逻辑来限定范围。
| 过滤条件 | 用途 | 示例 |
|---|---|---|
user_id | 隔离特定用户的内存。 | {"user_id": "user_123"} |
agent_id | 按特定智能体角色进行过滤。 | {"agent_id": "agent_456"} |
app_id | 限定到特定应用实例。 | {"app_id": "app_789"} |
run_id | 限定到特定会话或线程。 | {"run_id": "run_000"} |
created_at | 基于时间的导出,支持运算符。 | {"created_at": {"gte": "2024-01-01"}} |
来源:docs/platform/features/v2-memory-filters.mdx:32-60,mem0/client/main.py:32-34
摘要与元数据
平台 API 提供了 /v1/summary/ 端点,用于获取内存的高级概览,而无需执行完整的结构化导出。
客户端方法:get_summary
# mem0/client/main.py:609-622
def get_summary(self, filters: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
"""获取内存导出的摘要。"""
params = self._prepare_params({"filters": filters})
response = self.client.post("/v1/summary/", json=params)
return response.json()
来源:mem0/client/main.py:609-622
错误处理
| 状态码 | 原因 | 解决方法 |
|---|---|---|
401 | 未授权 | 确认 MEM0_API_KEY 已正确设置。 |
404 | 未找到 | 导出 ID 不存在或已过期。 |
422 | 校验错误 | 提供的 JSON 模式或过滤条件无效。 |
SDK 使用 @api_error_handler 装饰器将这些 HTTP 错误转换为 Python 异常,例如 ValidationError(校验错误)或 AuthenticationError(认证错误)。
来源:mem0/client/main.py:163-163,mem0/client/utils.py:1-20