客户端介绍
SkillClient 是 V3 Skill 管理面的 Python 客户端,用于 Skill 的全生命周期管理,包括检索和发现可用 Skill、创建与修改 Skill、管理资源文件、以及从对话中自动提取 Skill。Skill 一经创建即处于可用状态,Agent 可通过 listing 和 search 方法检索和发现 Skill,无需额外的部署或启用操作。导入
from tencentdb_agent_memory.v3 import SkillClient, AsyncSkillClientfrom tencentdb_agent_memory.v3.skill_client import encode_utf8, encode_base64
构造
from tencentdb_agent_memory.v3 import SkillClientclient = SkillClient(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",task_id="task-2026q3",timeout=30,verify=False,)
构造参数
参数名 | 类型 | 必填 | 描述说明 |
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,可在各方法中按需覆盖 |
task_id | str | 否 | Task ID,可在各方法中按需覆盖 |
timeout | float | 否 | 请求超时时间(秒),默认 30 |
verify | bool | 否 | 是否验证 SSL 证书,默认 False |
stub | Stub | 否 | 自定义网络传输通道,用于测试场景(如注入 mock) |
说明:
team_id、agent_id、user_id 和 task_id 在构造时均为可选参数,可在各方法中按需传入。请注意 conversation_add 例外——该方法的 team_id、user_id、agent_id 为服务端必填,SDK 不会自动填入构造时的默认值,调用时需显式传入。部分方法提供
space_id 参数(如 conversation_add、extract),其含义等同于构造时的 service_id(实例 ID),不传则自动使用构造时的 service_id 值。辅助方法
SkillClient 提供两个静态方法用于构建资源文件:方法 | 用途 | 参数 |
encode_utf8(path, content, mime_type) | 编码文本文件 | path 文件路径;content 文本内容(str);mime_type MIME 类型 |
encode_base64(path, content, mime_type) | 编码二进制文件 | path 文件路径;content 二进制内容(bytes);mime_type MIME 类型 |
切换上下文(with_defaults)
当需要用不同的团队或用户身份调用 Skill 接口时,可通过
with_defaults 生成一个共享同一网络连接的客户端副本:client_b = client.with_defaults(team_id="team-b", user_id="usr-two")result = client_b.search(query="Python best practices", top_k=5)
上下文管理器
with SkillClient(endpoint="https://memory.tdai.tencentyun.com",api_key="sk-xxxxxxxxxxxxxxxx",service_id="tdai-mem-xxxxxxxx",) as client:resp = client.search(query="Python tips", top_k=5)
异步版本
AsyncSkillClient 的方法签名与 SkillClient 完全一致,所有方法均为 async:import asynciofrom tencentdb_agent_memory.v3 import AsyncSkillClientasync def main():async with AsyncSkillClient(endpoint="https://memory.tdai.tencentyun.com",api_key="sk-...",service_id="tdai-mem-xxxxxxxx",) as client:result = await client.search(query="Python tips", top_k=5)for hit in result["items"]:print(f"[{hit['score']:.2f}] {hit['name']}")asyncio.run(main())
方法总览
查询与发现
创建与写入
方法 | 说明 | 文档 |
create | 创建 Skill | |
extract | 从对话提取 Skill | |
conversation_add | 向缓冲区追加对话 |
修改与更新
方法 | 说明 | 文档 |
update | 全量更新 Skill 内容 | |
patch | 局部文本替换 | |
write_files | 写入资源文件 | |
remove_files | 删除资源文件 |
删除
方法 | 说明 | 文档 |
delete | 删除 Skill |