向指定的记忆库中添加一批消息(通常是多轮对话),系统将根据记忆库的记忆抽取配置对这些消息进行处理和存储,形成结构化的记忆事件,并可能更新关联的画像。
URL | /api/memory/session/add | 统一资源标识符 |
|---|---|---|
请求方法 | POST | 客户端对记忆库服务器请求的操作类型 |
请求头 | Content-Type: application/json | 请求消息类型 |
Authorization: HMAC-SHA256 *** | 基于AK/SK生成的签名信息 |
参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
collection_name | String | 否 | 目标记忆库的名称。 |
project_name | String | 否 | 记忆库所属项目。 |
resource_id | String | 否 | 记忆库唯一的资源 id。可选择直接传 resource_id,或同时传 collection_name 和 project_name 作为记忆库的唯一标识。 |
session_id | String | 是 | 当前对话或消息批次的会话 ID。长度要求:[1, 128],只能使用英文字母、数字、下划线,并以英文字母开头。未填写则由服务端自动生成。 |
messages | Array of Object | 是 | 要添加的多轮对话消息列表。 |
| String | 是 | 发言人角色,可选值为 "user", "assistant", "system"。 |
| String | 是 | 发言内容。 |
| String | 否 | 群聊场景下的发言人 ID。若该发言人与 default_user_id 或 default_assistant_id 相同,则无需传入。 |
| String | 否 | 群聊场景下的发言人名称。若该发言人与 default_user_name 或 default_assistant_name 相同,则无需传入。 |
| Integer | 否 | 发言时间,毫秒级时间戳。 |
metadata | Object | 否 | 用于设定这批消息的元数据信息。 |
| String | 是 | 消息列表中 'user' 角色的默认ID。如果消息中未指定role_id,则使用此值。 |
| String | 否 | 消息列表中 'user' 角色的默认名称。 |
| String | 是 | 消息列表中 'assistant' 角色的默认ID。如果消息中未指定role_id,则使用此值。 |
| String | 否 | 消息列表中 'assistant' 角色的默认名称。 |
| Integer | 是 | 这批消息的统一发生时间,毫秒级时间戳。(如果单条消息中也包含time,则单条消息的 time 优先。) |
| String | 否 | 群组ID,用于标记消息所属的业务群组。 |
profiles | Array of Object | 否 | 需要特别关注或更新的画像信息列表。系统会尝试将处理后的事件与这些画像关联。 |
| String | 是 | 画像类型名称,必须是记忆库中已定义的画像类型。 |
| Array of Object | 是 | 具体的画像实例列表。每个对象包含用于唯一标识和定义该画像实例的属性,例如: {"id": 1, "knowledge_point_name": "taco"} |
注意:
字段 | 类型 | 描述 |
|---|---|---|
code | Integer | 状态码,0表示成功,其他表示错误。 |
message | String | 返回信息,成功时通常为 "success"。 |
data | Object | 返回的详细数据,成功添加消息时此字段通常为空。 |
request_id | String | 标识每个请求的唯一ID。 |
import os import time from vikingdb.memory import VikingMem from vikingdb import APIKey API_KEY = os.getenv("MEMORY_API_KEY", "your_key") client = VikingMem( host = "api-knowledgebase.mlp.cn-beijing.volces.com", region = "cn-beijing", auth= APIKey(api_key=API_KEY), scheme = "http", ) collection = client.get_collection( collection_name="my_first_memory_collection", # 替换为你的记忆库名称 project_name="default" ) def add_session(): now_ts = int(time.time() * 1000) result = collection.add_session( session_id="session_001", messages=[ { "role": "user", "content": "今天天气怎么样?" }, { "role": "assistant", "content": "今天天气晴朗,气温22度,非常适合外出。" } ], metadata = { "default_user_id": "user_01", "default_user_name": "XiaoMing", "default_assistant_id": "assistant_01", "default_assistant_name": "Robot", "time": now_ts, } ) return result if __name__ == "__main__": print("Viking Memory Add Session Messages Example") add_session()