跳到主要内容

核心契约参考

使用方和提供方插件通过 @dsh-ai-providers/core 共用类型。该软件包只包含契约,不会选择提供方、注册 DSH 插件或发起网络请求。

导入该包以加载上下文类型扩展,并使用公共类型:

import type {} from '@dsh-ai-providers/core'
import type {AiError, EmbedOptions} from '@dsh-ai-providers/core'

不要为了调用所选能力而导入运行时内部模块或具体厂商包。

上下文服务​

上下文成员契约可用条件
ctx.embeddingsEmbeddingService已选择并加载嵌入提供方
ctx.rerankersRerankService已选择并加载重排提供方
ctx.textToSpeechTtsService已选择并加载 TTS 提供方
ctx.apiSpeechToTextSttService已选择并加载 STT 提供方
ctx.streamingSpeechToTextStreamingSttService所选 STT 提供方还支持实时会话
ctx.imageGenerationImageGenerationService已选择并加载图像提供方
ctx.aiProvidersAiProviderRegistry已加载运行时插件

语言模型继续使用 DSH 现有的 ctx.llm 服务。提供方包通过运行时适配器加入路由,不会再公开一个只能选择单个提供方的上下文服务。

能力被禁用时,不会公开可用的服务值。如果缺少服务后插件无法工作,应声明必需的 Cordis 注入;只有功能确实有替代路径时,才使用可选注入。

服务身份与调用选项​

每项能力服务都公开 provider、model 和 capability。provider 与 model 用于诊断,不应成为使用方代码转向厂商 API 的分支条件。

大多数调用接受以下公共选项:

选项含义
priority默认为 foreground;可以将允许等待的工作标记为 background
signal在传输层支持时取消排队中及执行中的工作

完整录音 STT 把 AbortSignal 作为单独的必需参数;实时 STT 则在会话选项中接收它。使用方拥有每个返回的流或实时会话,必须负责完成、取消、关闭或中止。

提供方请求选项​

AiProvider 可以通过 requestOptions 描述属于单次调用、而不是配置档案连接的设置。每个 RequestOption 包含键名、标量类型、本地化标签,以及可选的说明、默认值和数值范围。

atStart: true 表示使用方创建持久状态前必须确定该值。当前的例子是向量维度:保存向量后再改变维度会使集合不一致。这些元数据用于向使用方描述选项,不会把字段自动加入与提供方无关的 TypeScript 接口。

失败契约​

能力调用以 AiError 报告失败。分支判断应使用 code,不要解析消息文本:

错误码含义
not-configured因选择或配置问题无法解析服务
invalid-input调用方提供的数据无法处理
unsupported所选实现无法执行请求的功能
rejected提供方拒绝请求、模型、凭据、配额或策略
unavailable传输、超时、服务器、队列或异常响应故障
cancelled所属生命周期中止了调用

语言模型实现使用 LlmRequestError,其中还包含 DSH 失败分类,以及可选的 HTTP 状态、重试延迟和请求 ID。运行时适配器会把它转换为 DSH 的模型错误类型,因此原有的重试与压缩行为仍然生效。

稳定性边界​

核心包导出的名称、方法签名、结果结构、服务名称和错误码构成使用方边界。除非其他公共页面明确说明,提供方配置、运行时内部实现、浏览器 API 路由和传输辅助工具都属于实现细节。

集成模式请参阅在其他插件中使用服务,注册侧契约请参阅创建或扩展提供方。