feat(types): 添加对服务层参数的支持并完善Provider类型

为Provider类型添加isSupportServiceTier和serviceTier字段以支持服务层参数
添加isOpenAIServiceTier类型守卫函数验证服务层类型
扩展SystemProviderId枚举类型并添加ProviderSupportedServiceTier类型
This commit is contained in:
icarus 2025-08-06 14:52:47 +08:00
parent 9e0aa1f3fa
commit 9b28ad7191

View File

@ -173,21 +173,94 @@ export type Provider = {
isAuthed?: boolean
rateLimit?: number
// undefined 视为支持
// API options
// undefined 视为支持,默认支持
/** 是否不支持 message 的 content 为数组类型 */
isNotSupportArrayContent?: boolean
/** 是否不支持 stream_options 参数 */
isNotSupportStreamOptions?: boolean
/** 是否不支持 message 的 role 为 developer */
isNotSupportDeveloperRole?: boolean
// undefined 视为不支持,默认不支持
/** 是否支持 service_tier 参数 */
isSupportServiceTier?: boolean
serviceTier?: OpenAIServiceTier
isVertex?: boolean
notes?: string
extra_headers?: Record<string, string>
}
// 后面会重构成更严格的类型
export type SystemProviderId =
| 'silicon'
| 'aihubmix'
| 'ocoolai'
| 'deepseek'
| 'ppio'
| 'alayanew'
| 'qiniu'
| 'dmxapi'
| 'burncloud'
| 'tokenflux'
| '302ai'
| 'cephalon'
| 'lanyun'
| 'ph8'
| 'openrouter'
| 'ollama'
| 'new-api'
| 'lmstudio'
| 'anthropic'
| 'openai'
| 'azure-openai'
| 'gemini'
| 'vertexai'
| 'github'
| 'copilot'
| 'zhipu'
| 'yi'
| 'moonshot'
| 'baichuan'
| 'dashscope'
| 'stepfun'
| 'doubao'
| 'infini'
| 'minimax'
| 'groq'
| 'together'
| 'fireworks'
| 'nvidia'
| 'grok'
| 'hyperbolic'
| 'mistral'
| 'jina'
| 'perplexity'
| 'modelscope'
| 'xirang'
| 'hunyuan'
| 'tencent-cloud-ti'
| 'baidu-cloud'
| 'gpustack'
| 'voyageai'
| 'aws-bedrock'
| 'poe'
export type SystemProvider = Provider & {
id: SystemProviderId
isSystem: true
}
export type ProviderSupportedServiceTier = Provider & {
isSupportServiceTier: true
serviceTier: OpenAIServiceTier
}
export function isProviderSupportedServiceTier(provider: Provider): provider is ProviderSupportedServiceTier {
const p = provider as ProviderSupportedServiceTier
return p.isSupportServiceTier && isOpenAIServiceTier(p.serviceTier || '')
}
export type ProviderType =
| 'openai'
| 'openai-response'
@ -825,6 +898,10 @@ export interface StoreSyncAction {
export type OpenAISummaryText = 'auto' | 'concise' | 'detailed' | 'off'
export type OpenAIServiceTier = 'auto' | 'default' | 'flex'
export function isOpenAIServiceTier(tier: string): tier is OpenAIServiceTier {
return ['auto', 'default', 'flex'].includes(tier)
}
export type S3Config = {
endpoint: string
region: string