From 507b0e44d58d9b99fac045b34c575e994511834f Mon Sep 17 00:00:00 2001 From: jialin Date: Fri, 30 Jan 2026 19:52:11 +0800 Subject: [PATCH] fix: init envs --- .../backends/community/backend-detail.tsx | 22 ----- .../backends/components/backend-card.tsx | 90 +------------------ src/pages/backends/config/index.ts | 2 +- .../llmodels/components/deploy-modal.tsx | 31 +++++-- src/pages/llmodels/components/separator.tsx | 6 +- src/pages/llmodels/config/types.ts | 7 +- src/pages/llmodels/forms/backend.tsx | 20 ++--- src/pages/llmodels/hooks/index.ts | 15 +++- .../llmodels/hooks/use-query-backends.ts | 6 +- 9 files changed, 59 insertions(+), 140 deletions(-) diff --git a/src/pages/backends/community/backend-detail.tsx b/src/pages/backends/community/backend-detail.tsx index 194bfc36..c640af1a 100644 --- a/src/pages/backends/community/backend-detail.tsx +++ b/src/pages/backends/community/backend-detail.tsx @@ -91,13 +91,6 @@ const BackendDetail: React.FC<{ return (
  • {_.upperCase(key)}
    - {/* - {value?.map?.((v: string, index: number) => ( - - {v} - - ))} - */}
  • ); } @@ -141,21 +134,6 @@ const BackendDetail: React.FC<{ {renderSupportedFrameworks()} )} - {/*
    - - - - {intl.formatMessage({ - id: 'backend.form.defaultExecuteCommand' - })} - - - - - -
    */} {currentData?.description && (
    diff --git a/src/pages/backends/components/backend-card.tsx b/src/pages/backends/components/backend-card.tsx index f52bceaf..8f9c0e37 100644 --- a/src/pages/backends/components/backend-card.tsx +++ b/src/pages/backends/components/backend-card.tsx @@ -5,7 +5,7 @@ import TagWrapper from '@/components/tags-wrapper'; import ThemeTag from '@/components/tags-wrapper/theme-tag'; import Card from '@/components/templates/card'; import { useIntl } from '@umijs/max'; -import { Button, Flex, Tag, Tooltip } from 'antd'; +import { Button, Tag } from 'antd'; import _ from 'lodash'; import { useMemo } from 'react'; import semverCoerce from 'semver/functions/coerce'; @@ -32,23 +32,6 @@ const StyledCard = styled(Card)` } `; -const SourceWrapper = styled.div` - display: grid; - width: 100%; - grid-template-columns: max-content 1fr; - align-items: center; - - gap: 0px; - .dot { - display: flex; - height: 4px; - width: 4px; - background-color: var(--ant-color-text-quaternary); - border-radius: 50%; - margin-inline: 8px; - } -`; - // add height props const TagInner = styled(Tag)<{ height?: number }>` display: flex; @@ -237,16 +220,6 @@ const BackendCard: React.FC = ({ ); }; - const renderModel = (item: any) => { - return ( - - - {item} - - - ); - }; - const renderFrameworks = () => { const frameworks = _.keys(data.framework_index_map || {}); @@ -267,35 +240,6 @@ const BackendCard: React.FC = ({ ); }; - const renderRecommendModels = () => { - const recommendedModels = data.recommend_models || []; - if (recommendedModels.length === 0) { - return null; - } - return ( -
    - - - {recommendedModels.map((item) => ( - - {item} - - ))} - - } - > - - - {intl.formatMessage({ id: 'backend.recommendModels' })} - - - -
    - ); - }; - const renderSource = () => { if (layout === 'community') { return null; @@ -330,28 +274,6 @@ const BackendCard: React.FC = ({ ); }; - const renderEnabledTag = () => { - if (data.backend_source !== BackendSourceValueMap.COMMUNITY) { - return null; - } - return ( - - {data.enabled - ? `${intl.formatMessage({ id: 'common.status.enabled' })}` - : `${intl.formatMessage({ id: 'common.status.disabled' })}`} - - ); - }; - const renderActions = () => { return actionsRenderer ? ( actionsRenderer(data) @@ -398,16 +320,6 @@ const BackendCard: React.FC = ({ {renderSource()} - {/* - - - - {intl.formatMessage({ id: 'models.form.source' })}: - - {renderEnabledTag()} - - {renderRecommendModels()} - */} {renderFrameworks()} diff --git a/src/pages/backends/config/index.ts b/src/pages/backends/config/index.ts index 230fe6a5..571c2a66 100644 --- a/src/pages/backends/config/index.ts +++ b/src/pages/backends/config/index.ts @@ -31,7 +31,7 @@ export const builtInBackendLogos: Record = { export const BackendSourceValueMap = { CUSTOM: 'custom', - BUILTIN: 'built-in', + BUILTIN: 'built_in', COMMUNITY: 'community', USER_DEFINED: 'user_defined' }; diff --git a/src/pages/llmodels/components/deploy-modal.tsx b/src/pages/llmodels/components/deploy-modal.tsx index 1238bd11..bd15a63b 100644 --- a/src/pages/llmodels/components/deploy-modal.tsx +++ b/src/pages/llmodels/components/deploy-modal.tsx @@ -135,6 +135,7 @@ const AddModal: FC = (props) => { }); const requestModelIdRef = useRef(0); const currentSelectedModel = useRef({}); + const flatBackendOptionsRef = useRef([]); const { run: fetchModelFiles } = useDeferredRequest( () => modelFileRef.current?.fetchModelFiles?.(), @@ -259,7 +260,8 @@ const AddModal: FC = (props) => { const modelInfo = onSelectModel(selectedModel, { source: props.source, - defaultBackend: form.current?.getFieldValue?.('backend') + defaultBackend: form.current?.getFieldValue?.('backend'), + flatBackendOptions: flatBackendOptionsRef.current }); form.current?.setFieldsValue?.({ @@ -269,7 +271,9 @@ const AddModal: FC = (props) => { backend_parameters: [], backend_version: '', backend: modelInfo.backend, - env: {}, + env: { + ...modelInfo.env + }, categories: getCategory(item) }); @@ -326,11 +330,16 @@ const AddModal: FC = (props) => { // TODO form.current?.resetFields(resetFields); const modelInfo = onSelectModel(item, { - source: props.source + source: props.source, + flatBackendOptions: flatBackendOptionsRef.current }); form.current?.setFieldsValue?.({ ...defaultFormValues, ...modelInfo, + env: { + ...modelInfo.env + }, + name: generateNameValue(item, modelInfo.name, manual), categories: getCategory(item) }); @@ -366,21 +375,27 @@ const AddModal: FC = (props) => { }); handleCancelFiles(); const modelInfo = onSelectModel(item, { - source: props.source + source: props.source, + flatBackendOptions: flatBackendOptionsRef.current }); if ( evaluateStateRef.current.state === EvaluateProccess.model && item.evaluated ) { + const defaultSpec = getDefaultSpec(item); const newFormValues = { ...(manual ? { ...defaultFormValues } : _.omit(form.current?.form?.getFieldsValue?.(), [ ...dropFieldsFromForm ])), - ...getDefaultSpec(item), + ...defaultSpec, ...modelInfo, + env: { + ...modelInfo.env, + ...defaultSpec.env + }, name: generateNameValue(item, modelInfo.name, manual), categories: getCategory(item) }; @@ -464,6 +479,8 @@ const AddModal: FC = (props) => { }) ]); + flatBackendOptionsRef.current = backendOptions; + if (props.deploymentType === 'modelFiles') { form.current?.form?.setFieldsValue({ ...props.initialValues @@ -487,8 +504,12 @@ const AddModal: FC = (props) => { versions: { label: string; value: string }[]; }) => item.value === backend ); + form.current?.setFieldsValue?.({ backend, + env: { + ...currentDefaultBackend?.default_env + }, default_version: currentDefaultBackend?.default_version, backend_parameters: currentDefaultBackend?.default_backend_param || [], cluster_id: initClusterId() diff --git a/src/pages/llmodels/components/separator.tsx b/src/pages/llmodels/components/separator.tsx index 41cfb373..ff46a088 100644 --- a/src/pages/llmodels/components/separator.tsx +++ b/src/pages/llmodels/components/separator.tsx @@ -4,7 +4,7 @@ import '../style/separator.less'; const Separator: React.FC<{ showArrow?: boolean; - styles: { + styles?: { arrow?: React.CSSProperties; }; }> = ({ showArrow = true, styles }) => { @@ -14,7 +14,9 @@ const Separator: React.FC<{ orientation="vertical" style={{ height: 'calc(100vh - 89px)', marginInline: '0px' }} > - {showArrow && } + {showArrow && ( + + )} ); }; diff --git a/src/pages/llmodels/config/types.ts b/src/pages/llmodels/config/types.ts index ea16c290..b05a8ef8 100644 --- a/src/pages/llmodels/config/types.ts +++ b/src/pages/llmodels/config/types.ts @@ -316,7 +316,7 @@ export interface BackendGroupItem { label: string; value: string; title?: string; - environment?: Record; + env?: Record; is_deprecated: boolean; }[]; } @@ -329,12 +329,13 @@ export interface BackendOption { default_version: string; isBuiltIn: boolean; backend_source: string; + default_env?: Record; enabled: boolean; versions: { label: string; value: string; title?: string; - environment?: Record; + env?: Record; is_deprecated: boolean; }[]; } @@ -354,7 +355,7 @@ export interface BackendItem { enabled: boolean; versions: { version: string; - environment?: Record; + env?: Record; is_deprecated: boolean; }[]; } diff --git a/src/pages/llmodels/forms/backend.tsx b/src/pages/llmodels/forms/backend.tsx index 0553a545..3bb3b90a 100644 --- a/src/pages/llmodels/forms/backend.tsx +++ b/src/pages/llmodels/forms/backend.tsx @@ -44,12 +44,8 @@ const BackendFields: React.FC = () => { React.useState(null); const handleBackendVersionOnChange = (value: any, option: any) => { - if (Object.keys(option.data.environment || {}).length > 0) { - form.setFieldsValue({ - env: { - ...(option?.data?.environment || {}) - } - }); + if (Object.keys(option.data.env || {}).length > 0) { + form.setFieldValue('env', { ...(option?.data?.env || {}) }); } onValuesChange?.({}, form.getFieldsValue()); @@ -141,17 +137,15 @@ const BackendFields: React.FC = () => { ); }; - const handleOnBackendChange = (value: any[], option: any) => { + const handleOnBackendChange = (value: any[], option: any[]) => { const selectedBackend = value?.[1]; const selectedOption = option?.[1] || {}; - console.log('handleOnBackendChange selectedOption:', selectedOption); - form.setFieldsValue({ - backend: selectedBackend, - env: { - ...(selectedOption.environment || {}) - } + backend: selectedBackend + }); + form.setFieldValue('env', { + ...(selectedOption.default_env || {}) }); onBackendChange?.(selectedBackend, selectedOption); setSelectedBackend(selectedOption); diff --git a/src/pages/llmodels/hooks/index.ts b/src/pages/llmodels/hooks/index.ts index 73a58e68..70df59a8 100644 --- a/src/pages/llmodels/hooks/index.ts +++ b/src/pages/llmodels/hooks/index.ts @@ -511,9 +511,13 @@ export const useSelectModel = (data: { gpuOptions: any[] }) => { const onSelectModel = ( selectModel: any, - options: { source: string; defaultBackend?: string } + options: { + source: string; + defaultBackend?: string; + flatBackendOptions?: any[]; + } ) => { - const { source, defaultBackend } = options; + const { source, defaultBackend, flatBackendOptions } = options; let name = _.split(selectModel.name, '/').slice(-1)[0]; const reg = /(-gguf)$/i; name = _.toLower(name).replace(reg, ''); @@ -527,6 +531,10 @@ export const useSelectModel = (data: { gpuOptions: any[] }) => { gpuOptions: gpuOptions }); + const selectedBackend = flatBackendOptions?.find( + (item) => item.value === backend + ); + return { ...(source === modelSourceMap.huggingface_value ? { huggingface_repo_id: selectModel.name } @@ -535,6 +543,9 @@ export const useSelectModel = (data: { gpuOptions: any[] }) => { ? { model_scope_model_id: selectModel.name } : {}), ...modelTaskData, + env: { + ...(selectedBackend?.default_env || {}) + }, name: name, source: source, backend: backend diff --git a/src/pages/llmodels/hooks/use-query-backends.ts b/src/pages/llmodels/hooks/use-query-backends.ts index 86ce4232..a92220f9 100644 --- a/src/pages/llmodels/hooks/use-query-backends.ts +++ b/src/pages/llmodels/hooks/use-query-backends.ts @@ -61,7 +61,7 @@ export default function useQueryBackends() { 'backend_source', 'is_built_in', 'default_backend_param', - 'environment' + 'default_env' ]), backend_source: item.backend_source || BackendSourceValueMap.CUSTOM, value: item.backend_name, @@ -79,7 +79,7 @@ export default function useQueryBackends() { label: vItem.version, value: vItem.version, is_deprecated: vItem.is_deprecated, - environment: vItem.environment || {}, + env: vItem.env || {}, title: vItem.version.replace(/-custom$/, '') })) }; @@ -91,7 +91,7 @@ export default function useQueryBackends() { console.log('Fetched backend options:', list, groupList); - return groupList || []; + return list || []; } catch (error) { // ignore setBackendOptions([]);