文档导航

TypeScript SDK 设计

TypeScript SDK 设计

laya-client 是一个无依赖的 HTTP 客户端,用于自托管的 laya-serve 服务器。它使用 POST /v1/systemone 端点,不引入任何 Python 生产代码或服务器依赖。这个 npm 包从版本 0.1.0 起步,与 Python 的发布相互独立。

边界

组件 职责
sdk/typescript 问题/答案类型、预设、校验、原生 fetch、错误与取消
laya/serve.py 既有的 HTTP 端点、Bearer 认证、健康检查和请求上限
laya/router.py checkpoint 选择、加载和推理路由
laya/agent.py 分词、PyTorch 推理和校准后的答案格式化
laya/presets.py 五套生成的 TypeScript 问题预设的来源
flowchart LR
    A[JavaScript or TypeScript application] --> B[laya-client]
    B -->|POST /v1/systemone| C[Existing Laya server]
    C --> E[Router and local checkpoint]

SDK 导出 predict 和一个 Laya 专用的 health 探针。它提供 ESM、CommonJS 和声明文件,并保留 推断出的 question ID 和 choice 标签。当 JavaScript 或 TypeScript 应用通过 HTTP 与自托管的 Python laya-serve 通信时,用 laya-client。当推理必须在 JavaScript 内部通过它本地的 ONNX 运行时直接跑、不需要 Python 服务器时,用 laya-ts。

共享契约

请求包含 state 和 questions。除非为一次预测另外配置或提供,laya-client 会省略 model, 让 laya-serve 自动选择一个本地 checkpoint。客户端级或逐调用的 model 可以选择一个本地 checkpoint。choice 标签数组在传输之前会被规范化成带 null 描述的映射。

响应保留 model、answers 和 token usage。Laya 的 routing 和答案 action 字段是可选 扩展;Noul 的置信度也是可选的。Choice 和 Score 的置信度、分布,以及 Score 的档位说明仍是必需的。 可选扩展在场时会被校验。

/v1/systemone 不暴露 Python 的独立路由方法,也不暴露 task 和 lang 覆盖。SDK 会拒绝这些 遗留选项,而不是静默忽略它们。Laya 公开的 /health 返回 status、loaded 和 device。预测 从不先探测健康。

FastAPI 的 detail 字符串和校验数组会保留为 LayaAPIError 的 messages/details。来自兼容后端的 结构化错误信封也会被接受。请求有可配置的截止时间和调用方取消,且从不自动重试。

验证与发布

单元测试覆盖请求构建、所有答案形状、Laya 扩展、FastAPI 错误、JSON 校验、截止时间和取消。类型 检查覆盖可选元数据、被拒绝的遗留方法/选项、推断出的答案类型,以及 ESM/CommonJS 消费者。实时 集成测试用一个小型离线 checkpoint 启动未改动的 laya.serve 应用,把 SDK 的预测与直接 Python 推理对比,并演练路由、预设、认证和请求上限。CI 在 Node.js 22 和 24 上跑 SDK 检查。

极小的随机权重验证的是传输和数值一致性,不是预训练质量或性能。

设置、示例和 npm 发布见 SDK 指南。 这个包会以 laya-client 这个名字发布。Python 的发布工作流不变。