From 9b28ad7191eb2d359b5948fe3214219bde84fc57 Mon Sep 17 00:00:00 2001 From: icarus Date: Wed, 6 Aug 2025 14:52:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(types):=20=E6=B7=BB=E5=8A=A0=E5=AF=B9?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=B1=82=E5=8F=82=E6=95=B0=E7=9A=84=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=B9=B6=E5=AE=8C=E5=96=84Provider=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为Provider类型添加isSupportServiceTier和serviceTier字段以支持服务层参数 添加isOpenAIServiceTier类型守卫函数验证服务层类型 扩展SystemProviderId枚举类型并添加ProviderSupportedServiceTier类型 --- src/renderer/src/types/index.ts | 81 ++++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 808d34416b..960943f0fd 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -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 } -// 后面会重构成更严格的类型 +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