From e1b28b01df5f67dd240e283997da276075e5f590 Mon Sep 17 00:00:00 2001 From: jialin Date: Thu, 7 May 2026 16:01:09 +0800 Subject: [PATCH] chore: backend placeholder --- src/locales/en-US/models.ts | 1 + src/locales/ja-JP/models.ts | 1 + src/locales/ru-RU/models.ts | 1 + src/locales/tr-TR/models.ts | 1 + src/locales/zh-CN/models.ts | 1 + src/pages/backends/forms/versions-config.tsx | 56 ++++++++++++++++--- .../components/usage-charts/shared.tsx | 2 +- .../llmodels/components/api-access-info.tsx | 40 ++++++------- 8 files changed, 75 insertions(+), 28 deletions(-) diff --git a/src/locales/en-US/models.ts b/src/locales/en-US/models.ts index 5168028e..78327395 100644 --- a/src/locales/en-US/models.ts +++ b/src/locales/en-US/models.ts @@ -156,6 +156,7 @@ export default { 'models.table.apiAccessInfo.modelName': 'Model Name', 'models.table.apiAccessInfo.apikey': 'API Key', 'models.table.apiAccessInfo.openaiCompatible': 'OpenAI Compatible', + 'models.table.apiAccessInfo.anthropicCompatible': 'Anthropic Compatible', 'models.table.apiAccessInfo.jinaCompatible': 'Jina Compatible', 'models.table.apiAccessInfo.gotoCreate': 'Go to Create', 'models.search.parts': '{n} parts', diff --git a/src/locales/ja-JP/models.ts b/src/locales/ja-JP/models.ts index 6b243a8e..5b2f5bf8 100644 --- a/src/locales/ja-JP/models.ts +++ b/src/locales/ja-JP/models.ts @@ -156,6 +156,7 @@ export default { 'models.table.apiAccessInfo.modelName': 'モデル名', 'models.table.apiAccessInfo.apikey': 'APIキー', 'models.table.apiAccessInfo.openaiCompatible': 'OpenAI互換', + 'models.table.apiAccessInfo.anthropicCompatible': 'Anthropic互換', 'models.table.apiAccessInfo.jinaCompatible': 'Jina互換', 'models.table.apiAccessInfo.gotoCreate': '作成に移動', 'models.search.parts': '{n} 部分', diff --git a/src/locales/ru-RU/models.ts b/src/locales/ru-RU/models.ts index 92c8ed3f..72daca25 100644 --- a/src/locales/ru-RU/models.ts +++ b/src/locales/ru-RU/models.ts @@ -158,6 +158,7 @@ export default { 'models.table.apiAccessInfo.modelName': 'Имя модели', 'models.table.apiAccessInfo.apikey': 'Ключ API', 'models.table.apiAccessInfo.openaiCompatible': 'Совместимо с OpenAI', + 'models.table.apiAccessInfo.anthropicCompatible': 'Совместимо с Anthropic', 'models.table.apiAccessInfo.jinaCompatible': 'Совместимо с Jina', 'models.table.apiAccessInfo.gotoCreate': 'Перейти к созданию', 'models.search.parts': '{n} частей', diff --git a/src/locales/tr-TR/models.ts b/src/locales/tr-TR/models.ts index bdb3c47c..b4c98761 100644 --- a/src/locales/tr-TR/models.ts +++ b/src/locales/tr-TR/models.ts @@ -155,6 +155,7 @@ export default { 'models.table.apiAccessInfo.modelName': 'Model Adı', 'models.table.apiAccessInfo.apikey': 'API Anahtarı', 'models.table.apiAccessInfo.openaiCompatible': 'OpenAI Uyumlu', + 'models.table.apiAccessInfo.anthropicCompatible': 'Anthropic Uyumlu', 'models.table.apiAccessInfo.jinaCompatible': 'Jina Uyumlu', 'models.table.apiAccessInfo.gotoCreate': 'Oluşturmaya Git', 'models.search.parts': '{n} parça', diff --git a/src/locales/zh-CN/models.ts b/src/locales/zh-CN/models.ts index ea85f6ea..aed088b1 100644 --- a/src/locales/zh-CN/models.ts +++ b/src/locales/zh-CN/models.ts @@ -148,6 +148,7 @@ export default { 'models.table.apiAccessInfo.modelName': '模型名称', 'models.table.apiAccessInfo.apikey': 'API 密钥', 'models.table.apiAccessInfo.openaiCompatible': 'OpenAI 兼容', + 'models.table.apiAccessInfo.anthropicCompatible': 'Anthropic 兼容', 'models.table.apiAccessInfo.jinaCompatible': 'Jina 兼容', 'models.table.apiAccessInfo.gotoCreate': '去创建', 'models.search.parts': '{n} 个文件', diff --git a/src/pages/backends/forms/versions-config.tsx b/src/pages/backends/forms/versions-config.tsx index 45746c23..27683788 100644 --- a/src/pages/backends/forms/versions-config.tsx +++ b/src/pages/backends/forms/versions-config.tsx @@ -1,4 +1,5 @@ import { PageActionType } from '@/config/types'; +import { backendOptionsMap } from '@/pages/llmodels/constants/backend-parameters'; import { MinusOutlined, PlusOutlined } from '@ant-design/icons'; import { BaseSelect, @@ -50,6 +51,19 @@ const Title = styled.div` padding-bottom: 8px; `; +const backendHolder = { + [backendOptionsMap.SGLang]: { + defaultEntry: 'sglang serve', + defaultCommand: + '--model-path {{model_path}} --host {{worker_ip}} --port {{port}}' + }, + [backendOptionsMap.vllm]: { + defaultEntry: 'vllm serve', + defaultCommand: + '{{model_path}} --host {{worker_ip}} --port {{port}} --served-model-name {{model_name}}' + } +}; + type AddModalProps = { action: PageActionType; currentData?: ListItem; @@ -142,6 +156,16 @@ const VersionsForm: React.FC = ({ setDefaultVersion(value); }; + const getDefaultHolder = (content: string) => { + if (!content) return ''; + return intl.formatMessage( + { id: 'common.help.default' }, + { + content: content + } + ); + }; + useEffect(() => { const versions = form.getFieldValue('version_configs') || []; @@ -184,6 +208,7 @@ const VersionsForm: React.FC = ({ const isBuiltin = backendSource === BackendSourceValueMap.BUILTIN; const isCommunity = backendSource === BackendSourceValueMap.COMMUNITY; + const backend = currentData?.backend_name; return ( <> @@ -358,12 +383,24 @@ const VersionsForm: React.FC = ({ @@ -373,13 +410,18 @@ const VersionsForm: React.FC = ({ description={intl.formatMessage({ id: 'backend.form.defaultExecuteCommand.tips' })} - placeholder={intl.formatMessage( - { id: 'common.help.eg' }, - { - content: - '{{model_path}} --port {{port}} --host {{worker_ip}} --served-model-name {{model_name}}' - } - )} + placeholder={ + getDefaultHolder( + backendHolder[backend as string]?.defaultCommand + ) || + intl.formatMessage( + { id: 'common.help.eg' }, + { + content: + '{{model_path}} --port {{port}} --host {{worker_ip}} --served-model-name {{model_name}}' + } + ) + } label={intl.formatMessage({ id: 'backend.runCommand' })} > diff --git a/src/pages/dashboard/components/usage-charts/shared.tsx b/src/pages/dashboard/components/usage-charts/shared.tsx index 3b27b39b..a55cd0e0 100644 --- a/src/pages/dashboard/components/usage-charts/shared.tsx +++ b/src/pages/dashboard/components/usage-charts/shared.tsx @@ -5,7 +5,7 @@ import styled from 'styled-components'; import { usageChartCardHeight, usageChartHeight } from '../../config'; export const ChartTitle = styled.div` - font-weight: var(--font-weight-bold); + font-weight: 500; margin-bottom: 12px; `; diff --git a/src/pages/llmodels/components/api-access-info.tsx b/src/pages/llmodels/components/api-access-info.tsx index b7f5170d..67e36aab 100644 --- a/src/pages/llmodels/components/api-access-info.tsx +++ b/src/pages/llmodels/components/api-access-info.tsx @@ -8,7 +8,6 @@ import { MODEL_PROXY, RERANKER_API } from '@/pages/playground/apis'; -import { BulbOutlined } from '@ant-design/icons'; import { AutoTooltip, CopyButton, @@ -117,18 +116,11 @@ const ApiAccessInfo = ({ open, data, onClose }: ApiAccessInfoProps) => { return (
-
- -
@@ -163,6 +155,7 @@ const ApiAccessInfo = ({ open, data, onClose }: ApiAccessInfoProps) => { onCancel={handleClose} footer={null} > + {renderTips()} {intl.formatMessage({ id: 'models.table.apiAccessInfo.endpoint' })} @@ -172,15 +165,22 @@ const ApiAccessInfo = ({ open, data, onClose }: ApiAccessInfoProps) => { {endPoint} {!data.generic_proxy && ( - - {isRanker - ? intl.formatMessage({ - id: 'models.table.apiAccessInfo.jinaCompatible' - }) - : intl.formatMessage({ - id: 'models.table.apiAccessInfo.openaiCompatible' - })} - + <> + + {isRanker + ? intl.formatMessage({ + id: 'models.table.apiAccessInfo.jinaCompatible' + }) + : intl.formatMessage({ + id: 'models.table.apiAccessInfo.openaiCompatible' + })} + + + {intl.formatMessage({ + id: 'models.table.apiAccessInfo.anthropicCompatible' + })} + + )}