SDK 是独立的程序接入方式,不依赖 ChatKit。通用服务端接入请参考 开发 SDK;本页保留 SDK 和 ChatKit UI 嵌入相关说明。
接入方式概览
如果你只是从自己的服务端调用 XpertAI API,不需要先换取
client_secret。client_secret 主要用于 ChatKit UI 或其他浏览器侧短期访问场景。
接入前准备
开始前请先准备以下信息:apiUrl- 公有云示例:
https://api.xpertai.cn/api/ai - 私有部署请替换成你自己的 XpertAI AI API 地址
- 公有云示例:
apiKey- 建议使用服务端安全保存的长期凭据
- 可通过
x-api-key或Authorization: Bearer <apiKey>传递
xpertId- 即目标已发布智能体的 ID,取自
client.assistants.search()/get()或对应 HTTP 接口返回的assistant_id字段。xpertId是示例中的本地变量名。
- 即目标已发布智能体的 ID,取自
organization-idx-principal-user-id
通过 SDK 接入
XpertAI SDK 仓库名是xpert-sdk-js,但实际安装包名为 @xpert-ai/xpert-sdk。
1. 安装 SDK
2. 初始化 Client
ClientConfig 支持常用参数包括:
apiUrlapiKeytimeoutMsdefaultHeadersonRequest
defaultHeaders 中统一注入:
3. 最小对话示例
下面的示例展示了完整主链路:- 使用
client.assistants查询 xpert - 使用
client.threads创建线程 - 使用
client.runs发起一次对话运行
assistantId,运行时使用同一个智能体 ID。如果创建成功但运行返回 403,请查看 SDK 接入指南中的权限排查说明。
4. 常用能力
SDK 中最常用的子客户端包括:client.assistants- 查询或读取 xpert 信息
client.threads- 创建和管理线程
client.runs- 使用
wait()获取最终结果,或使用stream()实时消费 SSE 流
- 使用
client.contexts- 上传上下文文件,例如
client.contexts.uploadFile()
- 上传上下文文件,例如
client.knowledges- 创建或管理知识库资源
通过 API 直接调用
以下
assistants、threads、runs 接口也是 SDK 使用的底层 HTTP 接口,并未废弃。一般程序接入推荐使用 官方 SDK。旧 AI/v1 OpenAPI 接入与这些接口不同;旧接口及其示例不再维护,不保证可用。1. 使用 apiKey 鉴权
你可以任选一种方式:
x-api-key: sk-x-...Authorization: Bearer sk-x-...
x-api-key。
2. 查询 xpert
如果你已经知道 xpert ID,可以直接调用GET /api/ai/assistants/{id}。如果你希望先按条件筛选 assistant,可以调用搜索接口:
assistant_id,填入后续创建线程和运行请求中的 <xpert-id>。如果已经拿到该 ID,可以进一步确认详情:
3. 创建 thread
thread_id。后续运行 xpert 时要继续使用这个线程 ID。
HTTP 字段名为 assistant_id,TypeScript SDK 参数名为 assistantId。接口允许创建未绑定的线程,但调用智能体时应在创建阶段绑定目标智能体,并在运行时使用同一个 ID。创建线程成功不代表具备运行权限;403 排查见 SDK 接入指南。
4. 调用 runs/stream
5. 可选:上传文件后再发起对话
如果你的 xpert 需要读取附件,可以先上传上下文文件:files。下例的 <file-id> 使用上传响应中的 id(FileAsset ID);storageFileId 标识底层存储文件,不要把它填为附件 ID:
鉴权与安全说明
apiKey 与 client_secret 的区别
apiKey- 长期凭据
- 适合服务端到服务端调用
- 不应该暴露给浏览器
client_secret- 短期凭据
- 适合 ChatKit UI 或前端侧短时访问
- 由
POST /api/ai/v1/chatkit/sessions签发
什么时候需要 client_secret
如果你是:
- 在自己的服务端使用 SDK 调用 XpertAI
- 在自己的服务端直接发起 REST 调用
apiKey。
如果你是:
- 在浏览器里嵌入 ChatKit UI
- 需要把一个短期凭据交给前端侧运行时
client_secret,再把它返回给前端。
chatkit/sessions 的正确调用方式
POST /api/ai/v1/chatkit/sessions 用于换取短期 client_secret。下面的示例使用服务端 API Key 鉴权;expires_after 是以秒为单位的可选正整数,省略时使用服务端默认值:
- 此 API Key 兑换方式无需传
assistant或user,资源范围由 API Key 决定 - 使用用户登录凭据而非 API Key 创建会话时,智能体委托模式需要传
assistant.id,属于另一种接入流程 - 如果需要固定组织或业务用户上下文,请通过请求头传递
organization-id和x-principal-user-id
安全建议
- 永远不要在浏览器中暴露长期
apiKey - 前端只持有短期
client_secret - 如果使用 xpert 专用 key,请确保它绑定的 xpert 与实际访问目标一致
- 需要审计终端用户身份时,在服务端换取
client_secret阶段传入x-principal-user-id
下一步
- 如果你要嵌入前端聊天 UI,请先阅读 💬 ChatKit SDK
- 如果你要继续自定义视觉与交互,请查看 主题和自定义、小部件、客户端工具