diff --git a/src/renderer/src/aiCore/clients/openai/OpenAIResponseAPIClient.ts b/src/renderer/src/aiCore/clients/openai/OpenAIResponseAPIClient.ts index 0705321396..d6f2d693d9 100644 --- a/src/renderer/src/aiCore/clients/openai/OpenAIResponseAPIClient.ts +++ b/src/renderer/src/aiCore/clients/openai/OpenAIResponseAPIClient.ts @@ -61,13 +61,31 @@ export class OpenAIResponseAPIClient extends OpenAIBaseClient< this.client = new OpenAIAPIClient(provider) } + private formatApiHost() { + const host = this.provider.apiHost + if (host.endsWith('/openai/v1')) { + return host + } else { + if (host.endsWith('/')) { + return host + 'openai/v1' + } else { + return host + '/openai/v1' + } + } + } + /** * 根据模型特征选择合适的客户端 */ public getClient(model: Model) { if (isOpenAILLMModel(model) && !isOpenAIChatCompletionOnlyModel(model)) { if (this.provider.id === 'azure-openai' || this.provider.type === 'azure-openai') { - this.provider = { ...this.provider, apiVersion: 'preview' } + this.provider = { ...this.provider, apiHost: this.formatApiHost() } + if (this.provider.apiVersion === 'preview') { + return this + } else { + return this.client + } } return this } else { @@ -81,7 +99,6 @@ export class OpenAIResponseAPIClient extends OpenAIBaseClient< } if (this.provider.id === 'azure-openai' || this.provider.type === 'azure-openai') { - this.provider = { ...this.provider, apiHost: `${this.provider.apiHost}/openai/v1` } return new AzureOpenAI({ dangerouslyAllowBrowser: true, apiKey: this.apiKey, diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index a8587f09e8..4f54b2ad34 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -2115,6 +2115,7 @@ "api_key": "API Key", "api_key.tip": "Multiple keys separated by commas or spaces", "api_version": "API Version", + "azure.apiversion.tip": "The API version of Azure OpenAI, if you want to use Response API, please enter the preview version", "basic_auth": "HTTP authentication", "basic_auth.password": "Password", "basic_auth.password.tip": "", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index 927002ace8..8e468ab8e7 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -2211,7 +2211,8 @@ "private_key_placeholder": "サービスアカウントの秘密鍵を入力してください", "title": "サービスアカウント設定" } - } + }, + "azure.apiversion.tip": "Azure OpenAIのAPIバージョン。Response APIを使用する場合は、previewバージョンを入力してください" }, "proxy": { "mode": { diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index 1c2307b828..43c6510987 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -2211,7 +2211,8 @@ "private_key_placeholder": "Введите приватный ключ Service Account", "title": "Конфигурация Service Account" } - } + }, + "azure.apiversion.tip": "Версия API Azure OpenAI. Если вы хотите использовать Response API, введите версию preview" }, "proxy": { "mode": { diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 3e18390eb7..1ebd03ce64 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -2115,6 +2115,7 @@ "api_key": "API 密钥", "api_key.tip": "多个密钥使用逗号或空格分隔", "api_version": "API 版本", + "azure.apiversion.tip": "Azure OpenAI 的 API 版本,如果想要使用 Response API,请输入 preview 版本", "basic_auth": "HTTP 认证", "basic_auth.password": "密码", "basic_auth.password.tip": "", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 9de94e3ff8..37626e7cea 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -2211,7 +2211,8 @@ "private_key_placeholder": "輸入服務帳戶私密金鑰", "title": "服務帳戶設定" } - } + }, + "azure.apiversion.tip": "Azure OpenAI 的 API 版本,如果想要使用 Response API,請輸入 preview 版本" }, "proxy": { "mode": { diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx index 214646f70d..d2d1f9b136 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx @@ -286,6 +286,10 @@ const ProviderSetting: FC = ({ providerId }) => { if (provider.type === 'openai') { return formatApiHost(apiHost) + 'chat/completions' } + + if (provider.type === 'azure-openai') { + return formatApiHost(apiHost) + 'openai/v1' + } return formatApiHost(apiHost) + 'responses' } @@ -446,6 +450,11 @@ const ProviderSetting: FC = ({ providerId }) => { onBlur={onUpdateApiVersion} /> + + + {t('settings.provider.azure.apiversion.tip')} + + )} {provider.id === 'lmstudio' && }