适配器是什么
这一页说明适配器做什么、不做什么,以及接一个后端时各方要写什么。
结论
- 适配器只做协议翻译:把输入编成协议规定的请求内容,把后端的响应解析成界面能显示的消息。
- 请求由接入方发。每项能力写一个函数,函数里决定请求发到哪、带什么凭据、用哪个模型或应用。
- 函数决定可用能力;入口还受组件是否挂载、features 配置和当前轮次状态约束。停止已派发的运行需要后端提供 abort 能力。
- 运行时在浏览器内存中保留消息;SDK 不把会话和历史写入浏览器持久存储。页面重建后的历史来自 history。
各方管什么
最小的接入
下面展示只提供 run 的接入。示例使用浏览器环境变量中的开发凭据;生产环境应改用自己的代理,长期服务密钥保留在服务端:
adapter.ts
chat.tsx
联网适配器使用相同的能力名称,协议请求体、历史格式和错误回调仍有差异。DSH、Codex、OpenCode、Hermes Dashboard 的适配器自带连接(createDshConnection 等),能力函数不用接入方写,地址与鉴权经连接的选项给出:
本地开发和演示可以使用内置的 Mock 适配器(入口 @volcengine/chatkit/adapters/mock),它不连接后端、按脚本回放对话,不用于生产环境,见 Mock 适配器。
一次发送的过程
能力函数的共同点
四个联网适配器和 createAdapter 的能力函数有以下共同约定(Mock 适配器不发请求,选项另见其页面):
每个函数收到什么、要返回什么,见能力一览和各协议的页面。
为什么地址、鉴权、部署参数不在适配器里
适配器的创建选项因此很少:
个别适配器另有少数和协议行为有关的选项,见各自的页面。
适配器实例
接下来看什么
独立接收与新协议
后端把发送和接收分开,或需要接收其他端触发的回答时,使用 run + subscribe。新协议使用 createAdapter,能力函数的名字保持一致。