From e520db6949c45e77162048c2f9a19c893fb8747a Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Mon, 3 Feb 2025 13:09:36 +0800 Subject: [PATCH] feat: add azure provider type #931 --- src/renderer/src/i18n/locales/zh-cn.json | 2 +- .../pages/settings/ProviderSettings/AddProviderPopup.tsx | 3 ++- .../pages/settings/ProviderSettings/ProviderSetting.tsx | 4 +++- src/renderer/src/providers/OpenAIProvider.ts | 2 +- src/renderer/src/store/index.ts | 2 +- src/renderer/src/store/migrate.ts | 8 ++++++++ src/renderer/src/types/index.ts | 2 +- 7 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 21f1df4e..424d6d1f 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -630,7 +630,7 @@ }, "all": "全部", "vision": "视觉模型", - "websearch": "网络搜索模型", + "websearch": "联网模型", "free": "免费模型", "embedding": "嵌入模型", "embedding_model": "嵌入模型", diff --git a/src/renderer/src/pages/settings/ProviderSettings/AddProviderPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/AddProviderPopup.tsx index 1712222c..07fc8c5f 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/AddProviderPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/AddProviderPopup.tsx @@ -60,7 +60,8 @@ const PopupContainer: React.FC = ({ provider, resolve }) => { options={[ { label: 'OpenAI', value: 'openai' }, { label: 'Gemini', value: 'gemini' }, - { label: 'Anthropic', value: 'anthropic' } + { label: 'Anthropic', value: 'anthropic' }, + { label: 'Azure OpenAI', value: 'azure-openai' } ]} /> diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx index fd84a547..3615b9f1 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx @@ -201,6 +201,8 @@ const ProviderSetting: FC = ({ provider: _provider }) => { return value.replaceAll(',', ',').replaceAll(' ', ',').replaceAll(' ', '').replaceAll('\n', ',') } + const isAzureOpenAI = provider.id === 'azure-openai' || provider.type === 'azure-openai' + return ( @@ -264,7 +266,7 @@ const ProviderSetting: FC = ({ provider: _provider }) => { {t('settings.provider.api.url.tip')} )} - {provider.id === 'azure-openai' && ( + {isAzureOpenAI && ( <> {t('settings.provider.api_version')} diff --git a/src/renderer/src/providers/OpenAIProvider.ts b/src/renderer/src/providers/OpenAIProvider.ts index 03d878fd..9f0da4f1 100644 --- a/src/renderer/src/providers/OpenAIProvider.ts +++ b/src/renderer/src/providers/OpenAIProvider.ts @@ -23,7 +23,7 @@ export default class OpenAIProvider extends BaseProvider { constructor(provider: Provider) { super(provider) - if (provider.id === 'azure-openai') { + if (provider.id === 'azure-openai' || provider.type === 'azure-openai') { this.sdk = new AzureOpenAI({ dangerouslyAllowBrowser: true, apiKey: this.apiKey, diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts index 68fb6533..1f822493 100644 --- a/src/renderer/src/store/index.ts +++ b/src/renderer/src/store/index.ts @@ -30,7 +30,7 @@ const persistedReducer = persistReducer( { key: 'cherry-studio', storage, - version: 61, + version: 62, blacklist: ['runtime'], migrate }, diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index d8aa53a2..5e68d115 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -889,6 +889,14 @@ const migrateConfig = { } }) return state + }, + '62': (state: RootState) => { + state.llm.providers.forEach((provider) => { + if (provider.id === 'azure-openai') { + provider.type = 'azure-openai' + } + }) + return state } } diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 70e1d367..54e7289f 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -105,7 +105,7 @@ export type Provider = { isSystem?: boolean } -export type ProviderType = 'openai' | 'anthropic' | 'gemini' | 'qwenlm' +export type ProviderType = 'openai' | 'anthropic' | 'gemini' | 'qwenlm' | 'azure-openai' export type ModelType = 'text' | 'vision' | 'embedding'