diff --git a/.gitignore b/.gitignore index 1aca2ae4..150a4847 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,5 @@ /.mfsu .swc .DS_Store -.idea \ No newline at end of file +.idea +.claude \ No newline at end of file diff --git a/src/locales/en-US/models.ts b/src/locales/en-US/models.ts index 7cc8fdb3..5168028e 100644 --- a/src/locales/en-US/models.ts +++ b/src/locales/en-US/models.ts @@ -61,7 +61,8 @@ export default { 'models.table.layers': 'Layers', 'models.form.backend': 'Backend', 'models.form.backend_parameters': 'Backend Parameters', - 'models.form.backend_parameters.injected': 'Injected Backend Parameters', + 'models.instance.params.configured': 'User Configured', + 'models.instance.params.autoInjected': 'Auto-injected', 'models.search.gguf.tips': 'GGUF models use llama-box(supports Linux, macOS and Windows).', 'models.search.vllm.tips': diff --git a/src/locales/ja-JP/models.ts b/src/locales/ja-JP/models.ts index ca7e6955..6b243a8e 100644 --- a/src/locales/ja-JP/models.ts +++ b/src/locales/ja-JP/models.ts @@ -62,7 +62,8 @@ export default { 'models.table.layers': 'レイヤー', 'models.form.backend': 'バックエンド', 'models.form.backend_parameters': 'バックエンドパラメータ', - 'models.form.backend_parameters.injected': '注入されたバックエンドパラメータ', + 'models.instance.params.configured': 'User Configured', + 'models.instance.params.autoInjected': '自動注入', 'models.search.gguf.tips': 'GGUFモデルはllama-boxを使用します(Linux、macOS、Windowsをサポート)。', 'models.search.vllm.tips': diff --git a/src/locales/ru-RU/models.ts b/src/locales/ru-RU/models.ts index 1c123982..92c8ed3f 100644 --- a/src/locales/ru-RU/models.ts +++ b/src/locales/ru-RU/models.ts @@ -63,7 +63,8 @@ export default { 'models.table.layers': 'Слои', 'models.form.backend': 'Бэкенд', 'models.form.backend_parameters': 'Параметры бэкенда', - 'models.form.backend_parameters.injected': 'Внедрённые параметры бэкенда', + 'models.instance.params.configured': 'User Configured', + 'models.instance.params.autoInjected': 'Автовнедрённые', 'models.search.gguf.tips': 'GGUF-модели используют llama-box (поддерживает Linux, macOS и Windows).', 'models.search.vllm.tips': diff --git a/src/locales/tr-TR/models.ts b/src/locales/tr-TR/models.ts index 06d2399d..bdb3c47c 100644 --- a/src/locales/tr-TR/models.ts +++ b/src/locales/tr-TR/models.ts @@ -61,8 +61,8 @@ export default { 'models.table.layers': 'Katmanlar', 'models.form.backend': 'Altyapı', 'models.form.backend_parameters': 'Altyapı Parametreleri', - 'models.form.backend_parameters.injected': - 'Enjekte Edilen Altyapı Parametreleri', + 'models.instance.params.configured': 'User Configured', + 'models.instance.params.autoInjected': 'Otomatik Enjekte', 'models.search.gguf.tips': 'GGUF modelleri llama-box kullanır (Linux, macOS ve Windows destekler).', 'models.search.vllm.tips': diff --git a/src/locales/zh-CN/models.ts b/src/locales/zh-CN/models.ts index 8abbd2a9..ea85f6ea 100644 --- a/src/locales/zh-CN/models.ts +++ b/src/locales/zh-CN/models.ts @@ -61,7 +61,8 @@ export default { 'models.table.layers': '层', 'models.form.backend': '后端', 'models.form.backend_parameters': '后端参数', - 'models.form.backend_parameters.injected': '注入的后端参数', + 'models.instance.params.configured': '用户配置', + 'models.instance.params.autoInjected': '自动注入', 'models.search.gguf.tips': 'GGUF 模型用 llama-box(支持 Linux, macOS 和 Windows)。', 'models.search.vllm.tips': diff --git a/src/pages/benchmark/components/summary/instance.tsx b/src/pages/benchmark/components/summary/instance.tsx index 75b4d9ae..7ab843d5 100644 --- a/src/pages/benchmark/components/summary/instance.tsx +++ b/src/pages/benchmark/components/summary/instance.tsx @@ -79,13 +79,15 @@ const Instance: React.FC = () => { return [ { key: '1', - label: intl.formatMessage({ id: 'models.form.backend_parameters' }), + label: intl.formatMessage({ + id: 'models.instance.params.configured' + }), children: renderParams(instanceData?.backend_parameters || []) }, { key: '1-1', label: intl.formatMessage({ - id: 'models.form.backend_parameters.injected' + id: 'models.instance.params.autoInjected' }), children: renderParams(instanceData?.injected_backend_parameters || []) }, @@ -129,23 +131,6 @@ const Instance: React.FC = () => { ) }, - { - key: '2', - label: intl.formatMessage({ id: 'models.form.env' }), - children: ( - - {instanceData?.env - ? Object.entries(instanceData?.env || {}).map( - ([key, value], index: number) => ( - - {`${key}=${value}`} - - ) - ) - : '-'} - - ) - }, { key: '4', label: intl.formatMessage({ @@ -181,6 +166,23 @@ const Instance: React.FC = () => { )} ) + }, + { + key: '2', + label: intl.formatMessage({ id: 'models.form.env' }), + children: ( + + {instanceData?.env + ? Object.entries(instanceData?.env || {}).map( + ([key, value], index: number) => ( + + {`${key}=${value}`} + + ) + ) + : '-'} + + ) } ]; }, [detailData]); diff --git a/src/pages/llmodels/components/instance-cells/injected-params-cell.tsx b/src/pages/llmodels/components/instance-cells/injected-params-cell.tsx new file mode 100644 index 00000000..6e7cf2cc --- /dev/null +++ b/src/pages/llmodels/components/instance-cells/injected-params-cell.tsx @@ -0,0 +1,169 @@ +import { InfoCircleOutlined } from '@ant-design/icons'; +import { CopyButton, OverlayScroller, ThemeTag } from '@gpustack/core-ui'; +import { useIntl } from '@umijs/max'; +import { Divider, Flex, Tooltip } from 'antd'; +import React from 'react'; +import { ModelInstanceListItem } from '../../config/types'; + +interface InjectedParamsCellProps { + record: ModelInstanceListItem; + backendParameters?: string[]; +} + +const ParamsList: React.FC<{ items: string[] }> = ({ items }) => ( + + {items.map((param, index) => ( + + {param} + + ))} + +); + +interface TooltipContentProps { + backendParameters: string[]; + injectedBackendParameters: string[]; +} + +const TooltipContent: React.FC = ({ + backendParameters, + injectedBackendParameters +}) => { + const intl = useIntl(); + const showBackend = backendParameters.length > 0; + const showInjected = injectedBackendParameters.length > 0; + + return ( + + + {showBackend && ( + + + {intl.formatMessage({ id: 'models.instance.params.configured' })} + + + + )} + {showInjected && ( + + + {intl.formatMessage({ + id: 'models.instance.params.autoInjected' + })} + + + + )} + + + ); +}; + +const InjectedParamsCell: React.FC = ({ + record, + backendParameters +}) => { + const intl = useIntl(); + const injectedBackendParameters = record?.injected_backend_parameters || []; + console.log('InjectedParamsCell record:', record); + + if (!injectedBackendParameters.length) { + return null; + } + + return ( + + +
+ {intl.formatMessage({ + id: 'models.form.backend_parameters' + })} +
+ +
+ + + + } + > + + + + {intl.formatMessage({ + id: 'models.form.backend_parameters' + })} + + +
+ ); +}; + +export default InjectedParamsCell; diff --git a/src/pages/llmodels/components/instance/instance-item.tsx b/src/pages/llmodels/components/instance/instance-item.tsx index 7ebad176..1bc3ec7c 100644 --- a/src/pages/llmodels/components/instance/instance-item.tsx +++ b/src/pages/llmodels/components/instance/instance-item.tsx @@ -9,6 +9,7 @@ import ActionsCell from '../instance-cells/actions-cell'; import CPUOffloadingCell from '../instance-cells/cpu-offloading-cell'; import DistributeInfoCell from '../instance-cells/distribute-info-cell'; import DownloadingStatusCell from '../instance-cells/downloading-status-cell'; +import InjectedParamsCell from '../instance-cells/injected-params-cell'; import InstanceStatusCell from '../instance-cells/instance-status-cell'; import NameCell from '../instance-cells/name-cell'; interface InstanceItemProps { @@ -55,6 +56,10 @@ const InstanceItem: React.FC = ({ className="flex align-center" > + ( <> - + + + +