You need to enable JavaScript to run this app.
导航
添加会话-AddSession
最近更新时间:2025.11.18 15:59:36首次发布时间:2025.11.07 14:07:18
复制全文
我的收藏
有用
有用
无用
无用

接口概述

向指定的记忆库中添加一批消息(通常是多轮对话),系统将根据记忆库的记忆抽取配置对这些消息进行处理和存储,形成结构化的记忆事件,并可能更新关联的画像。

请求接口

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

要添加的多轮对话消息列表。

  • role

String

发言人角色,可选值为 "user", "assistant", "system"。

  • content

String

发言内容。

  • role_id

String

群聊场景下的发言人 ID。若该发言人与 default_user_id 或 default_assistant_id 相同,则无需传入。

  • role_name

String

群聊场景下的发言人名称。若该发言人与 default_user_name 或 default_assistant_name 相同,则无需传入。

  • time

Integer

发言时间,毫秒级时间戳。

metadata

Object

用于设定这批消息的元数据信息。

  • default_user_id

String

消息列表中 'user' 角色的默认ID。如果消息中未指定role_id,则使用此值。

  • default_user_name

String

消息列表中 'user' 角色的默认名称。

  • default_assistant_id

String

消息列表中 'assistant' 角色的默认ID。如果消息中未指定role_id,则使用此值。

  • default_assistant_name

String

消息列表中 'assistant' 角色的默认名称。

  • time

Integer

这批消息的统一发生时间,毫秒级时间戳。(如果单条消息中也包含time,则单条消息的 time 优先。)

  • group_id

String

群组ID,用于标记消息所属的业务群组。

profiles

Array of Object

需要特别关注或更新的画像信息列表。系统会尝试将处理后的事件与这些画像关联。

  • profile_type

String

画像类型名称,必须是记忆库中已定义的画像类型。

  • profile_scope

Array of Object

具体的画像实例列表。每个对象包含用于唯一标识和定义该画像实例的属性,例如: {"id": 1, "knowledge_point_name": "taco"}

注意

  • 调用 add_session 接口时,若使用相同的 session_id,会覆盖该对话之前生成的事件版本,并从画像中撤回之前生成的事件。建议使用 UUID 动态生成 session_id,确保每次会话独立;只有在确实需要覆盖时才重复使用。
  • 只有在 messages 中同时传入 user 和 assistant 的消息时,画像和事件才会正确归属用户和助手。接口不会仅依赖 metadata 中的 ID 进行关联;如果只传 user 消息,事件不会关联到 metadata 中的 assistant。
  • 记忆的隔离机制:
    • 事件:不同assistant、group相关的 message 生成的事件,会带上对应的标识,检索时可使用对应的参数进行过滤。
    • 画像:画像的隔离分为两层:
      • group:不同group生成的画像是完全隔离的(注意,group不代表群聊,只有在需要做画像隔离时,才建议使用group)
      • assistant:同一group下,不同 assistant 和用户的消息生成的画像是完全隔离的;如果原始消息中没有传入 assistant,那么就会生成不关联 assistant 的画像。

响应消息

字段

类型

描述

code

Integer

状态码,0表示成功,其他表示错误。

message

String

返回信息,成功时通常为 "success"。

data

Object

返回的详细数据,成功添加消息时此字段通常为空。

request_id

String

标识每个请求的唯一ID。

示例代码

Python请求

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()