fix: pick backend_parameter, env, backend_version from spec in catalog

This commit is contained in:
jialin
2025-06-27 16:38:19 +08:00
parent 5861508153
commit 47a5ef915b
9 changed files with 70 additions and 41 deletions
+11 -1
View File
@@ -28,6 +28,16 @@ const LineChart: React.FC<ChartProps> = (props) => {
yAxis
} = useChartConfig();
const axisLabelFormatter = (value: string, index: number) => {
if (labelFormatter) {
return labelFormatter(value, index);
}
if (index === xAxisData.length - 1) {
return '';
}
return value;
};
const options = {
title: {
text: ''
@@ -45,7 +55,7 @@ const LineChart: React.FC<ChartProps> = (props) => {
...xAxis,
axisLabel: {
...xAxis.axisLabel,
formatter: labelFormatter
formatter: axisLabelFormatter
}
},
yAxis,
+1
View File
@@ -45,6 +45,7 @@ const MixLineBarChart: React.FC<
},
grid: {
...grid,
right: 0,
top: 20,
bottom: 10
},
+1 -1
View File
@@ -4,7 +4,7 @@ export interface ChartProps {
showEmpty?: boolean;
xAxisData: string[];
legendData?: LegendComponentOption['data'];
labelFormatter?: (val?: any) => string;
labelFormatter?: (val?: any, index?: number) => string;
tooltipValueFormatter?: (val: any) => string;
height: string | number;
width?: string | number;
@@ -41,6 +41,7 @@ const UtilizationOvertime: React.FC = () => {
const tooltipValueFormatter = (value: any) => {
return !value ? value : `${value}%`;
};
const generateData = useMemo(() => {
const legendData: string[] = [];
const xAxisData: string[] = [];
@@ -21,7 +21,6 @@ import { FormData, SourceType } from '../config/types';
import CatalogFrom from '../forms/catalog';
import HuggingFaceForm from '../forms/hugging-face';
import LocalPathForm from '../forms/local-path';
import OllamaForm from '../forms/ollama_library';
import AdvanceConfig from './advance-config';
interface DataFormProps {
@@ -253,7 +252,6 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
}}
>
<HuggingFaceForm></HuggingFaceForm>
<OllamaForm></OllamaForm>
<LocalPathForm></LocalPathForm>
</FormInnerContext.Provider>
<Form.Item name="backend" rules={[{ required: true }]}>
@@ -25,6 +25,8 @@ import ColumnWrapper from './column-wrapper';
import CompatibilityAlert from './compatible-alert';
import DataForm from './data-form';
const pickFieldsFromSpec = ['backend_version', 'backend_parameters', 'env'];
type AddModalProps = {
title: string;
action: PageActionType;
@@ -202,7 +204,7 @@ const AddModal: React.FC<AddModalProps> = (props) => {
});
selectSpecRef.current = spec;
return {
..._.omit(spec, ['name']),
..._.pick(spec, pickFieldsFromSpec),
categories: _.get(current, 'categories.0', null)
};
};
+38 -29
View File
@@ -33,13 +33,9 @@ import SearchModel from './search-model';
import Separator from './separator';
import TitleWrapper from './title-wrapper';
const resetFieldsByModel = [
'cpu_offloading',
'distributed_inference_across_workers',
'backend_version',
'backend_parameters',
'env'
];
const resetFieldsByModel = ['backend_version', 'backend_parameters', 'env'];
const pickFieldsFromSpec = ['backend_version', 'backend_parameters', 'env'];
const dropFieldsFromForm = ['name', 'file_name', 'repo_id', 'backend'];
const resetFieldsByFile = [
'cpu_offloading',
@@ -187,11 +183,10 @@ const AddModal: FC<AddModalProps> = (props) => {
};
const getDefaultSpec = (item: any) => {
const defaultSpec = _.get(item.evaluateResult?.default_spec, [
'backend_version',
'backend_parameters',
'env'
]);
const defaultSpec = _.pick(
item.evaluateResult?.default_spec,
pickFieldsFromSpec
);
return defaultSpec;
};
@@ -205,7 +200,7 @@ const AddModal: FC<AddModalProps> = (props) => {
};
const { run: onSelectFile } = useDeferredRequest(
async (item: any, modelInfo: any) => {
async (item: any, modelInfo: any, manual?: boolean) => {
unlockWarningStatus();
const evaluateRes = await handleOnValuesChangeBefore?.({
@@ -227,29 +222,34 @@ const AddModal: FC<AddModalProps> = (props) => {
/**
* do not reset backend_parameters when select a model file
*/
const formBackendParameters =
form.current?.getFieldValue?.('backend_parameters') || [];
const formValues = form.current?.getFieldsValue?.(pickFieldsFromSpec);
form.current?.setFieldsValue?.({
...defaultSpec,
..._.omit(modelInfo, ['name']),
file_name: item.fakeName,
backend_parameters:
formBackendParameters.length > 0
? formBackendParameters
formValues.backend_parameters?.length > 0
? formValues.backend_parameters
: defaultSpec.backend_parameters || [],
backend_version:
formValues.backend_version || defaultSpec.backend_version,
env: formValues.env || defaultSpec.env,
categories: getCategory(item)
});
},
100
);
const handleSelectModelFile = async (item: any, requestModelId: number) => {
const handleSelectModelFile = async (
item: any,
options: { requestModelId: number; manual?: boolean }
) => {
const { requestModelId, manual } = options || {};
if (requestModelId !== getRequestId()) {
return;
}
console.log('handleSelectModelFile:', item, selectedModel);
form.current?.form?.resetFields(resetFieldsByFile);
const modelInfo = onSelectModel(selectedModel, props.source);
form.current?.setFieldsValue?.({
@@ -260,7 +260,7 @@ const AddModal: FC<AddModalProps> = (props) => {
// evaluate the form data when select a model file
if (item.fakeName) {
onSelectFile(item, modelInfo);
onSelectFile(item, modelInfo, manual);
}
};
@@ -304,6 +304,10 @@ const AddModal: FC<AddModalProps> = (props) => {
const modelInfo = onSelectModel(item, props.source);
form.current?.setFieldsValue?.({
...modelInfo,
..._.omit(form.current?.form?.getFieldsValue?.(), [
...dropFieldsFromForm,
...pickFieldsFromSpec
]),
categories: getCategory(item)
});
@@ -332,13 +336,6 @@ const AddModal: FC<AddModalProps> = (props) => {
};
const handleOnSelectModelAfterEvaluate = (item: any, manual?: boolean) => {
console.log(
'handleOnSelectModelAfterEvaluate:',
item.name,
currentSelectedModel.current.name,
warningStatus.type,
currentModelDuringEvaluate(item)
);
if (currentModelDuringEvaluate(item)) {
return;
}
@@ -357,11 +354,23 @@ const AddModal: FC<AddModalProps> = (props) => {
item.evaluated
) {
handleShowCompatibleAlert(item.evaluateResult);
form.current?.setFieldsValue?.({
const newFormValues = {
...getDefaultSpec(item),
...modelInfo,
..._.omit(form.current?.form?.getFieldsValue?.(), [
...dropFieldsFromForm,
...pickFieldsFromSpec
]),
name: generateNameValue(item, modelInfo.name, manual),
categories: getCategory(item)
};
form.current?.setFieldsValue?.(newFormValues);
handleOnValuesChangeBefore({
changedValues: {},
allValues: newFormValues,
source: props.source
});
}
};
@@ -42,7 +42,10 @@ interface HFModelFileProps {
modelSource: string;
ref: any;
gpuOptions?: any[];
onSelectFile?: (file: any, flagId: number) => void;
onSelectFile?: (
file: any,
options: { requestModelId: number; manual?: boolean }
) => void;
updateEvaluteState: (state: 'model' | 'form' | 'file') => number;
onSelectFileAfterEvaluate?: (file: any) => void;
}
@@ -85,8 +88,11 @@ const HFModelFile: React.FC<HFModelFileProps> = forwardRef((props, ref) => {
const timer = useRef<any>(null);
const parentRequestModelId = useRef<number>(0);
const handleSelectModelFile = (item: any) => {
props.onSelectFile?.(item, parentRequestModelId.current);
const handleSelectModelFile = (item: any, manual?: boolean) => {
props.onSelectFile?.(item, {
requestModelId: parentRequestModelId.current,
manual: manual
});
setCurrent(item.path);
currentPathRef.current = item.path;
};
@@ -397,7 +403,9 @@ const HFModelFile: React.FC<HFModelFileProps> = forwardRef((props, ref) => {
data={item}
isEvaluating={isEvaluating}
active={item.path === current}
handleSelectModelFile={handleSelectModelFile}
handleSelectModelFile={(data) =>
handleSelectModelFile(data, true)
}
></ModelFileItem>
);
})}
@@ -142,10 +142,10 @@ const SearchModel: React.FC<SearchInputProps> = (props) => {
const handleOnSelectModel = (model: any, manual?: boolean) => {
const item = model || {};
if (item.evaluated && !item.isGGUF) {
onSelectModelAfterEvaluate(item, manual);
} else {
if (!item.evaluated || item.isGGUF) {
onSelectModel(item, manual);
} else {
onSelectModelAfterEvaluate(item, manual);
}
setCurrent(item.id);
currentRef.current = item.id;