使用PolarDB Agent Memory

更新时间:
复制 MD 格式

PolarDB Agent Memory创建完成后,您可以通过控制台配置访问白名单、获取连接地址、自定义记忆抽取策略,并通过HTTP API进行添加、搜索、获取和删除记忆的操作。本文介绍PolarDB Agent Memory的日常使用方式,适用于标准版和企业版。

适用范围

本文操作步骤同时适用于标准版和企业版的PolarDB Agent Memory。企业版将向量数据存储在关联的PolarDB MySQL版集群中,客户端的连接方式与API调用方式与标准版一致。若您尚未创建PolarDB Agent Memory,请参见创建PolarDB Agent Memory。

获取连接地址与访问凭证

  • 获取连接地址:在PolarDB Agent Memory列表页面,单击目标应用ID/名称进入详情页,在基本信息页签中查看公网地址或私网地址。

    说明
    • 公网地址需单独申请,请单击申请按钮进行申请。

    • 公网地址仅提供IP地址和端口,不提供域名。如有需要,可自行绑定域名。

  • 获取配置信息:在详情页的配置页签中查看相关配置信息,例如API Key(secret.access.apikey)等。

配置白名单

在PolarDB Agent Memory列表页面,单击目标应用ID/名称进入详情页,切换至白名单页签,通过新增IP白名单分组、选择安全组或修改已有白名单分组。

说明
  • 应用白名单与集群白名单相互独立,需单独配置。

  • 如果ECS实例需要访问应用,可在ECS实例详情页面查看ECS的IP地址并添加到IP白名单:

    • 若ECS与应用位于同一VPC内,可填写ECS的私网IP或所在VPC网段。

    • 若ECS与应用不在同一VPC内,可填写ECS的公网IP,或添加ECS所在的安全组。

  • 如果本地服务器、电脑或其他云服务器需要访问应用,请将其公网IP添加到IP白名单。

(可选)自定义提取策略(Prompt)

PolarDB Agent Memory通过内置的Prompt模板(提取策略)指导大语言模型从对话中提取和总结记忆。您可以自定义这些Prompt,以适配不同业务场景。

策略类型

  • 当前支持对话摘要、记忆更新、问题回答、记忆摘要等多种策略类型,详细策略类型请在控制台查看。

  • 每种策略类型在同一时间只能启用一个策略。

操作说明

  1. 在PolarDB Agent Memory详情页的提取策略页签中管理策略。

  2. 您可编辑现有策略进行微调,或通过新增策略新增策略,然后通过修改策略将其设为当前启用的策略。

操作示例

添加记忆

curl -X POST http://my-endpoint:8080/v1/memories \
  -H "Content-Type: application/json" \
  -H "Authorization: Token <your-api-key>" \
  -d '{
        "messages": [
            {
              "role": "user",
              "content": "我喜欢吃辣,特别是川菜。"
            },
            {
              "role": "assistant",
              "content": "好的,已经记下您的口味偏好。"
            }
        ],
        "user_id": "user_002",
        "agent_id": "food-assistant",
        "run_id": "user_002_run_id",
        "enable_thinking": false
    }'

预期返回:

{
    "results": [
        {
            "id": "32155c0a-xxxx-xxxx-xxxx-804e119bb965",
            "event": "ADD",
            "data": {
                "memory": "喜欢吃辣"
            }
        },
        {
            "id": "9188deee-xxxx-xxxx-xxxx-3073ef826b42",
            "event": "ADD",
            "data": {
                "memory": "特别喜欢川菜"
            }
        }
    ]
}

搜索记忆

curl -X POST http://my-endpoint:8080/v2/memories/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Token <your-api-key>" \
  -d '{
        "query": "我喜欢什么菜",
        "agent_id": "food-assistant",
        "filters": {
            "user_id": "user_002",
            "run_id": "user_002_run_id"
        }
    }'

预期返回:

{
    "results": [
        {
            "id": "9188deee-xxxx-xxxx-xxxx-3073ef826b42",
            "memory": "特别喜欢川菜",
            "hash": "a826fbf3c3844024633e84d04875ee45",
            "metadata": {"additionalProp1": {}},
            "score": 0.681654033365126,
            "created_at": "2026-03-05T23:59:36.038217-08:00",
            "updated_at": null,
            "user_id": "user_002",
            "agent_id": "food-assistant",
            "run_id": "user_002_run_id"
        },
        {
            "id": "32155c0a-xxxx-xxxx-xxxx-804e119bb965",
            "memory": "喜欢吃辣",
            "hash": "b2882aaf96654a9e16f45f363022010a",
            "metadata": {"additionalProp1": {}},
            "score": 0.582298149788604,
            "created_at": "2026-03-05T23:59:36.023417-08:00",
            "updated_at": null,
            "user_id": "user_002",
            "agent_id": "food-assistant",
            "run_id": "user_002_run_id"
        }
    ]
}

获取记忆

curl -X POST http://my-endpoint:8080/v2/memories \
  -H "Content-Type: application/json" \
  -H "Authorization: Token <your-api-key>" \
  -d '{
        "filters": {
            "user_id": "user_002",
            "run_id": "user_002_run_id",
            "agent_id": "food-assistant"
        }
    }'

预期返回:

{
    "results": [
        {
            "id": "39b06e97-xxxx-xxx-xxxx-4223818bc04e",
            "memory": "喜欢吃辣",
            "hash": "b2882aaf96654a9e16f45f363022010a",
            "metadata": {"additionalProp1": {}},
            "created_at": "2026-03-06T00:12:45.109789-08:00",
            "updated_at": null,
            "user_id": "user_002",
            "agent_id": "food-assistant",
            "run_id": "user_002_run_id"
        },
        {
            "id": "482def46-xxxx-xxxx-xxxx-ff4886a1047c",
            "memory": "特别喜欢川菜",
            "hash": "a826fbf3c3844024633e84d04875ee45",
            "metadata": {"additionalProp1": {}},
            "created_at": "2026-03-06T00:12:45.121585-08:00",
            "updated_at": null,
            "user_id": "user_002",
            "agent_id": "food-assistant",
            "run_id": "user_002_run_id"
        }
    ]
}

释放Agent Memory

登录PolarDB控制台,单击左侧导航栏中的PolarDB Agent Memory,找到目标PolarDB Agent Memory,单击操作列的释放应用。

警告

释放后,该PolarDB Agent Memory及其存储的记忆数据将无法恢复,请谨慎操作。

附录:API参考

PolarDB Agent Memory基于开源框架mem0(V1.0.1)提供托管服务。您可以通过访问http://<your-endpoint>:8080/docs查看实时更新的API文档。

请求头

所有API请求都需要在HTTP Header中包含Authorization: Token <your-api-key>进行认证。

请求示例

此处仅列举部分API参考。

创建记忆(Create Memories)

存储新的记忆。服务会自动对messages内容进行分析,生成会话摘要和语义记忆。

  • 请求地址:POST /v1/memories

  • 请求体:

    messages array(必选)

    对话消息列表,遵循OpenAI格式。

    属性

    role String(必选)

    消息发送者角色,如user或assistant。

    content String(必选)

    消息内容。

    curl

    curl -X POST http://my-endpoint:8080/v1/memories \
      -H "Content-Type: application/json" \
      -H "Authorization: Token <your-api-key>" \
      -d '{
            "messages": [
                {
                  "role": "user",
                  "content": "我喜欢吃辣,特别是川菜。"
                },
                {
                  "role": "assistant",
                  "content": "好的,已经记下您的口味偏好。"
                }
            ],
            "user_id": "user_002",
            "agent_id": "food-assistant",
            "run_id": "user_002_run_id",
            "enable_thinking": false
        }'

    Python

    import requests
    import json
    
    payload = {
        "messages": [
            {"role": "user", "content": "我喜欢吃辣,特别是川菜。"},
            {"role": "assistant", "content": "好的,已经记下您的口味偏好。"}
        ],
        "user_id": "user-002",
        "agent_id": "food-assistant",
        "run_id": "user_002_run_id",
        "enable_thinking": false
    }
    
    response = requests.post(
        "http://<your-endpoint>:8080/v1/memories",
        headers={"Authorization": "Token <your-api-key>", "Content-Type": "application/json"},
        data=json.dumps(payload)
    )
    
    print(response.json())
    

    user_id String(必选)

    用户的唯一标识符。

    agent_id String(可选)

    智能体的唯一标识符,用于在同一用户下隔离不同应用的记忆。

    run_id String(可选)

    单次执行或会话的唯一标识符。

    metadata Object(可选)

    附加的元数据,会与记忆一同存储。

搜索记忆(Search Memories)

根据查询字符串,搜索最相关的记忆。

  • 请求地址:POST /v2/memories/search

  • 请求体:

    query String(必选)

    用于搜索的查询文本,例如用户的新问题。

    curl

    curl -X POST http://my-endpoint:8080/v2/memories/search \
      -H "Content-Type: application/json" \
      -H "Authorization: Token <your-api-key>" \
      -d '{
            "query": "我喜欢什么菜",
            "agent_id": "food-assistant",
            "filters": {
                "user_id": "user_002",
                "run_id": "user_002_run_id"
            }
        }'
    

    Python

    import requests
    import json
    
    payload = {
        "query": "我喜欢什么菜",
        "agent_id": "food-assistant",
        "filters": {
              "user_id": "user_002",                                                                                                                                                                            
              "run_id": "user_002_run_id"                       
          }
    }
    
    response = requests.post(
        "http://<your-endpoint>:8080/v2/memories/search",
        headers={"Authorization": "Token <your-api-key>", "Content-Type": "application/json"},
        data=json.dumps(payload)
    )
    
    print(json.dumps(response.json(), indent=2, ensure_ascii=False))
    

    agent_id String(可选)

    限定在指定智能体下搜索。

    filters String(必选)

    基于元数据的过滤条件。

    属性

    user_id String(必选)

    用户的唯一标识符。

    run_id String(可选)

    限定在指定会话下搜索。

获取记忆(Get Memories)

获取指定范围内的所有原始记忆。

  • 请求地址:POST /v2/memories

  • 请求体:

    filters String(必选)

    基于元数据的过滤条件。

    属性

    user_id String(必选)

    用户的唯一标识符。

    agent_id String(可选)

    限定获取指定智能体的记忆。

    run_id String(可选)

    限定在指定会话下搜索。

    curl

      curl -X POST http://my-endpoint:8080/v2/memories \
      -H "Content-Type: application/json" \
      -H "Authorization: Token <your-api-key>" \
      -d '{
            "filters": {
                "user_id": "user_002",
                "run_id": "user_002_run_id",
                "agent_id": "food-assistant"
            }
        }'

    Python

    import requests
    import json
    
    payload = {
        "filters": {
              "user_id": "user_002",                                                                                                                                                   
              "run_id": "user_002_run_id",
              "agent_id": "food-assistant",                     
          }
    }
    
    response = requests.post(
        "http://<your-endpoint>:8080/v2/memories",
        headers={"Authorization": "Token <your-api-key>", "Content-Type": "application/json"},
        data=json.dumps(payload)
    )
    
    print(json.dumps(response.json(), indent=2, ensure_ascii=False))
    

删除记忆(Delete Memories)

删除指定范围内的所有记忆。

  • 请求地址:DELETE /v1/memories

  • 请求体:

    user_id String(必选)

    用户的唯一标识符。

    curl

    curl -X DELETE 'http://<your-endpoint>:8080/v1/memories?user_id=user_002&agent_id=food-assistant' \
      -H 'accept: application/json' \
      -H 'Authorization: Token <your-api-key>'

    Python

    import requests
    import json
    
    # 限制搜索范围
    current_user_id = "user_002"
    current_agent_id = "food-assistant"
    
    # 准备API请求的URL和数据
    api_url = f"http://<your-endpoint>:8080/v1/memories?user_id={current_user_id}&agent_id={current_agent_id}"
    
    response = requests.delete(
        api_url,
        headers={"Authorization": "Token <your-api-key>"},
    )
    
    print(json.dumps(response.json(), indent=2, ensure_ascii=False))
    

    agent_id String(可选)

    如果提供,则仅删除该智能体的记忆。

    run_id String(可选)

    如果提供,则仅删除该会话的记忆。