From 624230411a9e492518749cac61d902af6c5c3f0f Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 15 Oct 2024 21:14:19 +0800 Subject: [PATCH] feat: added new translations and api url handling features - Added new translation strings for API URL actions and hints. - Updated Chinese translations and added new provider API URL descriptions. - Added new translations for API URL preview and reset tip. - Added support for Open AI API settings preview and hint. - Added a new isOpenAIProvider function to handle specific provider type checks. - Added a new function to validate if a given URL has a valid non-root path. --- src/renderer/src/i18n/en-us.json | 2 ++ src/renderer/src/i18n/zh-cn.json | 2 ++ src/renderer/src/i18n/zh-tw.json | 2 ++ .../settings/ProviderSettings/ProviderSetting.tsx | 9 +++++++++ src/renderer/src/providers/ProviderFactory.ts | 4 ++++ src/renderer/src/utils/index.ts | 10 ++++++++++ 6 files changed, 29 insertions(+) diff --git a/src/renderer/src/i18n/en-us.json b/src/renderer/src/i18n/en-us.json index e382f527..77c1159b 100644 --- a/src/renderer/src/i18n/en-us.json +++ b/src/renderer/src/i18n/en-us.json @@ -235,6 +235,8 @@ "provider.docs_more_details": "for more details", "provider.search_placeholder": "Search model id or name", "provider.api.url.reset": "Reset", + "provider.api.url.preview": "Preview: {{url}}", + "provider.api.url.tip": "Add / at the end to force using the input address", "models.default_assistant_model": "Default Assistant Model", "models.topic_naming_model": "Topic Naming Model", "models.translate_model": "Translate Model", diff --git a/src/renderer/src/i18n/zh-cn.json b/src/renderer/src/i18n/zh-cn.json index 090c7980..26507c6a 100644 --- a/src/renderer/src/i18n/zh-cn.json +++ b/src/renderer/src/i18n/zh-cn.json @@ -235,6 +235,8 @@ "provider.docs_more_details": "获取更多详情", "provider.search_placeholder": "搜索模型 ID 或名称", "provider.api.url.reset": "重置", + "provider.api.url.preview": "预览: {{url}}", + "provider.api.url.tip": "结尾添加 / 强制使用输入地址", "models.default_assistant_model": "默认助手模型", "models.topic_naming_model": "话题命名模型", "models.translate_model": "翻译模型", diff --git a/src/renderer/src/i18n/zh-tw.json b/src/renderer/src/i18n/zh-tw.json index 69084a53..1a332115 100644 --- a/src/renderer/src/i18n/zh-tw.json +++ b/src/renderer/src/i18n/zh-tw.json @@ -235,6 +235,8 @@ "provider.docs_more_details": "查看更多細節", "provider.search_placeholder": "搜尋模型 ID 或名稱", "provider.api.url.reset": "重置", + "provider.api.url.preview": "預覽: {{url}}", + "provider.api.url.tip": "結尾新增 / 強制使用輸入地址", "models.default_assistant_model": "預設助手模型", "models.topic_naming_model": "話題命名模型", "models.translate_model": "翻譯模型", diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx index 9b7ad9e4..2631a56b 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx @@ -11,6 +11,7 @@ import { getModelLogo, isVisionModel } from '@renderer/config/models' import { PROVIDER_CONFIG } from '@renderer/config/providers' import { useTheme } from '@renderer/context/ThemeProvider' import { useProvider } from '@renderer/hooks/useProvider' +import { isOpenAIProvider } from '@renderer/providers/ProviderFactory' import { checkApi } from '@renderer/services/api' import { Provider } from '@renderer/types' import { Avatar, Button, Card, Divider, Flex, Input, Space, Switch } from 'antd' @@ -81,6 +82,8 @@ const ProviderSetting: FC = ({ provider: _provider }) => { updateProvider({ ...provider, apiHost: configedApiHost }) } + const hostPreview = (apiHost.endsWith('/') ? apiHost : `${apiHost}/v1/`) + 'chat/completions' + return ( = ({ provider: _provider }) => { )} + {isOpenAIProvider(provider) && ( + + {hostPreview} + {t('settings.provider.api.url.tip')} + + )} {provider.id === 'azure-openai' && ( <> {t('settings.provider.api_version')} diff --git a/src/renderer/src/providers/ProviderFactory.ts b/src/renderer/src/providers/ProviderFactory.ts index 53e50fdb..6a02aee0 100644 --- a/src/renderer/src/providers/ProviderFactory.ts +++ b/src/renderer/src/providers/ProviderFactory.ts @@ -17,3 +17,7 @@ export default class ProviderFactory { } } } + +export function isOpenAIProvider(provider: Provider) { + return !['anthropic', 'gemini'].includes(provider.id) +} diff --git a/src/renderer/src/utils/index.ts b/src/renderer/src/utils/index.ts index 8808798c..a1c515de 100644 --- a/src/renderer/src/utils/index.ts +++ b/src/renderer/src/utils/index.ts @@ -305,3 +305,13 @@ export const captureScrollableDiv = async (divRef: React.RefObject