连接模型 API 与自有网关
把你正在使用的模型接入 Intent Runtime。先确认服务提供哪一种协议,再选下面的接法;JavaScript 和 TypeScript 使用同一套运行时 API。第一次调用可直接按快速开始运行。
“OpenAI 兼容”不一定表示兼容 Responses,请以服务实际提供的接口为准。INTENT_MODEL 与 INTENT_API_KEY 是应用示例读取的变量;库不会自动读取这些固定名称。
OpenAI / xAI Responses API
model和apiKey必须事先配置为非空字符串。将executor传给new Intent。完整调用见快速开始;xAI改provider='xai'并使用对应凭据和模型。
连接自有网关
网关提供 /v1/chat/completions 时,将 API 根地址填到 baseURL,不要再附上 /chat/completions:
把域名、Key 和模型名替换为你已有服务的真实值。兼容 Responses 的网关将 protocol 改为 responses 即可。两者都将 executor 传入 new Intent({executor}),调用方式不变。provider: 'openai' 表示使用该兼容接口的供应商预设,配置 baseURL 后请求发往你的网关。
默认请求 JSON Schema 结构化输出;服务只支持普通文本时显式设置 format: 'text',仍须返回符合任务要求的候选 JSON,由核心校验。format 不会切换接口协议,也不会自动重试另一种格式。
模型参数
Responses 请求 /responses;Chat Completions 请求 /chat/completions。两者 store=false、stream=false,只发送本次识别材料,不发送业务工具或隐式历史,不重试、不切换模型。401/403为认证失败,429为限流;拒绝与输出未完成分别返回对应错误。具体错误恢复见错误与恢复。
成功与失败body都按Response.body可见字节读取,gzip解压后计,不依赖Content-Length;恰好上限允许,超限终止读取并报RESOURCE_LIMIT/model。重定向不转发凭据。具体模型是否接受Schema和额度需在你的供应商环境确认,见兼容范围。
自定义 ModelExecutor
ModelExecutor 就是你提供的“调用模型”适配对象。你可以直接沿用现有 SDK 或 HTTP 调用,不用另建一个网关服务。
一次识别的流程:用户文本 → Intent 整理任务 → 你的 generate 调用模型 → 返回候选 JSON 文本 → Intent 校验并生成最终结果。
成功返回 {outcome: 'complete', text: '模型生成的候选JSON'};模型拒绝或截断时返回 refusal / incomplete。text 不是最终 IntentResult,不用自己拼装结果。完整类型见接口参考。
下面用真实 Chat Completions 协议演示:在已有模型请求中增加应用请求头,再把 choices[0].message.content 转成 ModelReply。普通兼容网关优先用上面的内置适配器;需要其他协议时,修改请求和取回文本的部分。
完整 TypeScript 示例:自定义请求头与回复映射
保存为ESM项目中的custom-executor.ts,设置INTENT_GATEWAY_URL、INTENT_MODEL、INTENT_API_KEY。已有TypeScript环境可直接编译;否则:
INTENT_GATEWAY_URL 填完整调用地址,例如 https://gateway.example.com/v1/chat/completions;该示例使用 fetch(url),不会自动追加路径。项目 package.json 需有 "type":"module"。示例将 signal 传给本地 fetch,并限制响应大小;远端服务的取消机制按你已有协议处理。自行适配时保持候选输出格式,勿把业务执行混入识别调用。