帮你快速理解、总结文档立即下载

MemoryClient

最近更新时间:2026-08-27 17:42:03
我的收藏

客户端介绍

MemoryClient 是 V3 数据面同步客户端,用于初始化与 Memory 服务的连接并绑定身份归属信息,提供 L0–L3 四层记忆数据的完整读写能力。

导入

from tencentdb_agent_memory.v3 import MemoryClient

构造参数

参数名
类型
必填
描述说明
endpoint
str
Memory 服务接入地址
api_key
str
API Key,格式 sk-...
service_id
str
实例 ID,如 tdai-mem-xxxxxxxx。使用自定义传输通道构造时可省略
team_id
str
团队 ID
agent_id
str
Agent ID(全局唯一)
user_id
str
用户 ID
session_id
str
默认会话 ID,传入后在 L0/L1 调用中按此 session 收敛;不传则跨 session 聚合
task_id
str
默认 Task ID
timeout
float
请求超时时间(秒),默认 30
verify
bool
是否验证 SSL 证书,默认 False
stub
Stub
自定义网络传输通道,用于测试场景(如注入 mock)

使用示例

from tencentdb_agent_memory.v3 import MemoryClient

client = MemoryClient(
endpoint="https://memory.tdai.tencentyun.com",
api_key="sk-xxxxxxxxxxxxxxxx",
service_id="tdai-mem-xxxxxxxx",
team_id="team-abc123",
agent_id="agt-xyz789",
user_id="usr-456",
session_id="agent-main:sess-001",
task_id="task-2026q3",
timeout=30,
verify=False,
)

# 写入对话
result = client.add_conversation(
messages=[
{"role": "user", "content": "帮我查一下上周的会议纪要"},
{"role": "assistant", "content": "好的,根据记忆..."},
],
)
print(result) # {'accepted_ids': [...], 'accepted_versions': [...], 'total_count': 2}

# 查询记忆
memories = client.query_conversation(limit=20)
print(f"共 {memories['total']} 条消息")
for msg in memories['messages']:
print(f"[{msg['role']}] {msg['content']}")

# 使用完毕后关闭
client.close()

上下文管理器(推荐)

使用 with 语句自动管理连接的创建和销毁:
with MemoryClient(
endpoint="https://memory.tdai.tencentyun.com",
api_key="sk-xxxxxxxxxxxxxxxx",
service_id="tdai-mem-xxxxxxxx",
team_id="team-abc123",
agent_id="agt-xyz789",
user_id="usr-456",
) as client:
result = client.query_conversation(limit=20)
# 退出 with 块时自动调用 close()

with_isolation 动态切会话

SDK 提供 with_isolation() 方法返回共享同一网络连接的新客户端副本,可在运行时动态调整隔离参数,适用于"跨 Agent / 跨 session"调用场景:
# 切换到另一个 session 或 agent
alt_client = client.with_isolation(
session_id="agent-main:sess-002",
# agent_id="agt-another", # 也可切换 agent
)
result = alt_client.query_conversation(limit=20)

# 跨全部 session 聚合查询
global_client = client.with_isolation(session_id=None)
all_messages = global_client.query_conversation(limit=1)
print(f"全部会话共 {all_messages['total']} 条消息")
说明:
调用时传 None 不会清除构造值,跨 session 查询请使用 with_isolation(session_id=None)

close 销毁

client.close()
关闭客户端连接,释放底层 httpx.Client 资源。建议在程序退出前调用,或使用上下文管理器自动管理。

异常处理

SDK 提供两种异常类型:
异常类
说明
TDAMError
服务端返回的业务错误(code != 0),包含 codemessagerequest_iddetails 属性
ParamError
客户端参数校验失败
from tencentdb_agent_memory.v3 import MemoryClient
from tencentdb_agent_memory import TDAMError, ParamError

try:
result = client.query_conversation(limit=9999)
except TDAMError as e:
print(f"业务错误: code={e.code}, message={e.message}, request_id={e.request_id}")
except ParamError as e:
print(f"参数错误: {e}")

响应格式

所有方法均返回 Dict[str, Any],为 ApiResponseEnvelopedata 字段内容。
code == 0 时直接返回 data 字典;当 code != 0 时抛出 TDAMError 异常。
额外字段 trace_id:如果服务端响应头中包含 x-trace-id,会追加到返回字典中,方便问题排查。