diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index f4e31e891f..6ee1f675b8 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -52,7 +52,14 @@ import VoyageAIProviderLogo from '@renderer/assets/images/providers/voyageai.png import XirangProviderLogo from '@renderer/assets/images/providers/xirang.png' import ZeroOneProviderLogo from '@renderer/assets/images/providers/zero-one.png' import ZhipuProviderLogo from '@renderer/assets/images/providers/zhipu.png' -import { AtLeast, OpenAIServiceTiers, Provider, SystemProvider, SystemProviderId } from '@renderer/types' +import { + AtLeast, + isSystemProvider, + OpenAIServiceTiers, + Provider, + SystemProvider, + SystemProviderId +} from '@renderer/types' import { TOKENFLUX_HOST } from './constant' import { SYSTEM_MODELS } from './models' @@ -1253,8 +1260,8 @@ const NOT_SUPPORT_DEVELOPER_ROLE_PROVIDERS = ['poe', 'qiniu'] as const satisfies */ export const isSupportDeveloperRoleProvider = (provider: Provider) => { return ( - provider.apiOptions?.isNotSupportDeveloperRole !== true && - !NOT_SUPPORT_DEVELOPER_ROLE_PROVIDERS.some((pid) => pid === provider.id) + provider.apiOptions?.isSupportDeveloperRole === true || + (isSystemProvider(provider) && !NOT_SUPPORT_DEVELOPER_ROLE_PROVIDERS.some((pid) => pid === provider.id)) ) } @@ -1289,7 +1296,7 @@ const NOT_SUPPORT_SERVICE_TIER_PROVIDERS = ['github', 'copilot'] as const satisf */ export const isSupportServiceTierProvider = (provider: Provider) => { return ( - provider.apiOptions?.isNotSupportServiceTier !== true && - !NOT_SUPPORT_SERVICE_TIER_PROVIDERS.some((pid) => pid === provider.id) + provider.apiOptions?.isSupportServiceTier === true || + (isSystemProvider(provider) && !NOT_SUPPORT_SERVICE_TIER_PROVIDERS.some((pid) => pid === provider.id)) ) } diff --git a/src/renderer/src/pages/settings/ProviderSettings/ApiOptionsSettings/ApiOptionsSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/ApiOptionsSettings/ApiOptionsSettings.tsx index d719c861a8..0df268980e 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ApiOptionsSettings/ApiOptionsSettings.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ApiOptionsSettings/ApiOptionsSettings.tsx @@ -39,10 +39,10 @@ const ApiOptionsSettings = ({ providerId }: Props) => { tip: t('settings.provider.api.options.developer_role.help'), onChange: (checked: boolean) => { updateProviderTransition({ - apiOptions: { ...provider.apiOptions, isNotSupportDeveloperRole: !checked } + apiOptions: { ...provider.apiOptions, isSupportDeveloperRole: checked } }) }, - checked: !provider.apiOptions?.isNotSupportDeveloperRole + checked: !!provider.apiOptions?.isSupportDeveloperRole }, { key: 'openai_stream_options', @@ -61,10 +61,10 @@ const ApiOptionsSettings = ({ providerId }: Props) => { tip: t('settings.provider.api.options.service_tier.help'), onChange: (checked: boolean) => { updateProviderTransition({ - apiOptions: { ...provider.apiOptions, isNotSupportServiceTier: !checked } + apiOptions: { ...provider.apiOptions, isSupportServiceTier: checked } }) }, - checked: !provider.apiOptions?.isNotSupportServiceTier + checked: !!provider.apiOptions?.isSupportServiceTier }, { key: 'openai_enable_thinking', diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts index 7cf350dafa..0f8e88cd3f 100644 --- a/src/renderer/src/store/index.ts +++ b/src/renderer/src/store/index.ts @@ -62,7 +62,7 @@ const persistedReducer = persistReducer( { key: 'cherry-studio', storage, - version: 131, + version: 132, blacklist: ['runtime', 'messages', 'messageBlocks', 'tabs'], migrate }, diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index 9c9133168a..6e351a3e4d 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -2103,6 +2103,23 @@ const migrateConfig = { logger.error('migrate 131 error', error as Error) return state } + }, + '132': (state: RootState) => { + try { + state.llm.providers.forEach((p) => { + // 如果原本是undefined则不做改动,静默从默认支持改为默认不支持 + if (p.apiOptions?.isNotSupportDeveloperRole) { + p.apiOptions.isSupportDeveloperRole = !p.apiOptions.isNotSupportDeveloperRole + } + if (p.apiOptions?.isNotSupportServiceTier) { + p.apiOptions.isSupportServiceTier = !p.apiOptions.isNotSupportServiceTier + } + }) + return state + } catch (error) { + logger.error('migrate 132 error', error as Error) + return state + } } } diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index f14dbd1d25..464701929e 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -192,10 +192,18 @@ export type ProviderApiOptions = { isNotSupportArrayContent?: boolean /** 是否不支持 stream_options 参数 */ isNotSupportStreamOptions?: boolean - /** 是否不支持 message 的 role 为 developer */ + /** + * @deprecated + * 是否不支持 message 的 role 为 developer */ isNotSupportDeveloperRole?: boolean - /** 是否不支持 service_tier 参数. Only for OpenAI Models. */ + /* 是否支持 message 的 role 为 developer */ + isSupportDeveloperRole?: boolean + /** + * @deprecated + * 是否不支持 service_tier 参数. Only for OpenAI Models. */ isNotSupportServiceTier?: boolean + /* 是否支持 service_tier 参数. Only for OpenAI Models. */ + isSupportServiceTier?: boolean /** 是否不支持 enable_thinking 参数 */ isNotSupportEnableThinking?: boolean }