From 69bb661b5a339b93006f80fadf72daedd030f8bc Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Fri, 21 Feb 2025 13:49:36 +0800 Subject: [PATCH] feat: Add API host formatting utility function --- .../settings/ProviderSettings/ProviderSetting.tsx | 3 ++- src/renderer/src/providers/BaseProvider.ts | 3 ++- src/renderer/src/utils/api.ts | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 src/renderer/src/utils/api.ts diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx index acacf19d..8cc42ca5 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx @@ -22,6 +22,7 @@ import { isProviderSupportAuth, isProviderSupportCharge } from '@renderer/servic import { useAppDispatch } from '@renderer/store' import { setModel } from '@renderer/store/assistants' import { Model, ModelType, Provider } from '@renderer/types' +import { formatApiHost } from '@renderer/utils/api' import { providerCharge } from '@renderer/utils/oauth' import { Avatar, Button, Card, Checkbox, Divider, Flex, Input, Popover, Space, Switch } from 'antd' import Link from 'antd/es/typography/Link' @@ -160,7 +161,7 @@ const ProviderSetting: FC = ({ provider: _provider }) => { return apiHost.replace('#', '') } - return (apiHost.endsWith('/') ? apiHost : `${apiHost}/v1/`) + 'chat/completions' + return formatApiHost(apiHost) + 'chat/completions' } const onUpdateModelTypes = (model: Model, types: ModelType[]) => { diff --git a/src/renderer/src/providers/BaseProvider.ts b/src/renderer/src/providers/BaseProvider.ts index 8618286f..13582103 100644 --- a/src/renderer/src/providers/BaseProvider.ts +++ b/src/renderer/src/providers/BaseProvider.ts @@ -6,6 +6,7 @@ import store from '@renderer/store' import type { Assistant, GenerateImageParams, Message, Model, Provider, Suggestion } from '@renderer/types' import { delay, isJSON, parseJSON } from '@renderer/utils' import { addAbortController, removeAbortController } from '@renderer/utils/abortController' +import { formatApiHost } from '@renderer/utils/api' import { t } from 'i18next' import type OpenAI from 'openai' @@ -34,7 +35,7 @@ export default abstract class BaseProvider { public getBaseURL(): string { const host = this.provider.apiHost - return host.endsWith('/') ? host : `${host}/v1/` + return formatApiHost(host) } public getApiKey() { diff --git a/src/renderer/src/utils/api.ts b/src/renderer/src/utils/api.ts new file mode 100644 index 00000000..66000242 --- /dev/null +++ b/src/renderer/src/utils/api.ts @@ -0,0 +1,15 @@ +export function formatApiHost(host: string) { + const forceUseOriginalHost = () => { + if (host.endsWith('/')) { + return true + } + + if (host.endsWith('volces.com/api/v3')) { + return true + } + + return false + } + + return forceUseOriginalHost() ? host : `${host}/v1/` +}