fix: do not init meta data when switch tab

This commit is contained in:
jialin
2025-03-05 20:30:53 +08:00
parent caadc02fb4
commit 4de1a38c00
11 changed files with 133 additions and 108 deletions
+1 -1
View File
@@ -348,7 +348,7 @@ const options = [
{
label: '--rope-scaling',
value: '--rope-scaling',
options: ['none', 'linear', 'yarn']
options: ['linear', 'yarn']
},
{
label: '--rope-scale',
@@ -289,8 +289,8 @@ const GroundImages: React.FC<MessageProps> = forwardRef((props, ref) => {
isResetNeeded: false
};
});
setMask(data.mask || null);
setImage(data.img || maskUpload[0]?.dataUrl || null);
setMask(data.mask || maskUpload[0]?.dataUrl || null);
setImage(data.img);
},
[]
);
@@ -332,7 +332,7 @@ const GroundImages: React.FC<MessageProps> = forwardRef((props, ref) => {
return (
<>
<UploadImg
accept="image/png"
accept="image/*"
drag={true}
multiple={false}
handleUpdateImgList={handleUpdateImageList}
+2 -1
View File
@@ -689,11 +689,12 @@ export const ChatParamsConfig: ParamsSchema[] = [
html: false,
isLocalized: true
},
attrs: {
formItemAttrs: {
normalize(value: string) {
return value || null;
}
},
attrs: {},
rules: [
{
required: false
+7
View File
@@ -10,6 +10,13 @@ export const LLM_METAKEYS: Record<string, any> = {
presence_penalty: 'presence_penalty'
};
export const precisionTwoKeys = [
'temperature',
'top_p',
'frequency_penalty',
'presence_penalty'
];
export const IMG_METAKEYS = [
'sample_method',
'sampling_steps',
+27 -20
View File
@@ -23,7 +23,8 @@ import {
IMG_METAKEYS,
advancedFieldsDefaultValus,
imgInitialValues,
openaiCompatibleFieldsDefaultValus
openaiCompatibleFieldsDefaultValus,
precisionTwoKeys
} from './config';
interface MessageProps {
@@ -53,16 +54,13 @@ export const useInitLLmMeta = (
} = options;
const formRef = useRef<any>(null);
const [searchParams] = useSearchParams();
const defaultModel =
searchParams.get('model') ||
(isChat ? model ?? modelList?.[0]?.value : model);
const [modelMeta, setModelMeta] = useState<any>({});
const [initialValues, setInitialValues] = useState<any>({
...defaultValues,
model: defaultModel
model: ''
});
const [parameters, setParams] = useState<any>({
model: defaultModel
model: ''
});
const [paramsConfig, setParamsConfig] =
useState<ParamsSchema[]>(defaultParamsConfig);
@@ -70,13 +68,20 @@ export const useInitLLmMeta = (
const { initialize: innitializeParams } = useOverlayScroller();
const defaultModel = useMemo(() => {
return (
searchParams.get('model') ||
(isChat ? model ?? modelList?.[0]?.value : model)
);
}, [model, modelList, isChat]);
const extractLLMMeta = (meta: any) => {
const towKeys = new Set(precisionTwoKeys);
const modelMeta = meta || {};
const modelMetaValue = _.pick(modelMeta, _.keys(metaKeys));
const obj = Object.entries(metaKeys).reduce((acc: any, [key, value]) => {
const val = modelMetaValue[key];
if (val && _.hasIn(modelMetaValue, key)) {
acc[value] = val;
if (_.hasIn(modelMetaValue, key)) {
acc[value] = towKeys.has(key) ? _.round(val, 2) : val;
}
return acc;
}, {});
@@ -109,10 +114,9 @@ export const useInitLLmMeta = (
const handleOnModelChange = useCallback(
(val: string) => {
if (!val || val === parameters.model) return;
if (!val) return;
const model = modelList.find((item) => item.value === val);
const { form: initialData, meta } = extractLLMMeta(model?.meta);
setModelMeta(meta || {});
setInitialValues({
...initialData,
@@ -135,7 +139,7 @@ export const useInitLLmMeta = (
});
setParamsConfig(config);
},
[modelList, parameters, defaultParamsConfig]
[modelList, defaultParamsConfig]
);
const handleOnValuesChange = useCallback(
@@ -152,10 +156,10 @@ export const useInitLLmMeta = (
);
useEffect(() => {
if (defaultModel) {
if (defaultModel && modelList.length) {
handleOnModelChange(defaultModel);
}
}, [defaultModel, handleOnModelChange]);
}, [defaultModel, modelList.length]);
useEffect(() => {
if (paramsRef.current) {
@@ -185,7 +189,6 @@ export const useInitImageMeta = (props: MessageProps) => {
const { modelList } = props;
const form = useRef<any>(null);
const [searchParams] = useSearchParams();
const defaultModel = searchParams.get('model') || modelList?.[0]?.value || '';
const [modelMeta, setModelMeta] = useState<any>({});
const [isOpenaiCompatible, setIsOpenaiCompatible] = useState<boolean>(false);
const [imageSizeOptions, setImageSizeOptions] = React.useState<
@@ -198,7 +201,7 @@ export const useInitImageMeta = (props: MessageProps) => {
const [initialValues, setInitialValues] = useState<any>({
...imgInitialValues,
...advancedFieldsDefaultValus,
model: defaultModel
model: ''
});
const [paramsConfig, setParamsConfig] = useState<ParamsSchema[]>([
...ImageCountConfig,
@@ -209,9 +212,13 @@ export const useInitImageMeta = (props: MessageProps) => {
const [parameters, setParams] = useState<any>({
...imgInitialValues,
...advancedFieldsDefaultValus,
model: defaultModel
model: ''
});
const defaultModel = useMemo(() => {
return searchParams.get('model') || modelList?.[0]?.value || '';
}, [modelList]);
const cacheFormData = React.useRef<Record<string, any>>({
...imgInitialValues,
...openaiCompatibleFieldsDefaultValus,
@@ -373,7 +380,7 @@ export const useInitImageMeta = (props: MessageProps) => {
const handleOnModelChange = useCallback(
(val: string) => {
if (!val || val === parameters.model) return;
if (!val) return;
const model = modelList.find((item) => item.value === val);
const { form: initialData, sizeOptions } = extractIMGMeta(model?.meta);
const newParamsConfig = generateImageParamsConfig(model, sizeOptions);
@@ -396,7 +403,7 @@ export const useInitImageMeta = (props: MessageProps) => {
});
updateCacheFormData(initialData);
},
[modelList, isOpenaiCompatible, parameters.model]
[modelList, isOpenaiCompatible]
);
const handleOnValuesChange = useCallback(
@@ -448,10 +455,10 @@ export const useInitImageMeta = (props: MessageProps) => {
);
useEffect(() => {
if (defaultModel) {
if (defaultModel && modelList.length) {
handleOnModelChange(defaultModel);
}
}, [defaultModel, handleOnModelChange]);
}, [defaultModel, modelList.length]);
return {
extractIMGMeta,
+30 -37
View File
@@ -264,6 +264,30 @@ const Workers: React.FC = () => {
return <div></div>;
};
const renderProgressLabels = (data: {
total: number;
used: number;
allocated: number;
}) => {
const { total, used, allocated } = data;
return (
<span className="flex-column">
<span>
{intl.formatMessage({ id: 'resources.table.total' })}:{' '}
{convertFileSize(total, 0)}
</span>
<span>
{intl.formatMessage({ id: 'resources.table.used' })}:{' '}
{convertFileSize(used, 0)}
</span>
<span>
{intl.formatMessage({ id: 'resources.table.allocated' })}:{' '}
{convertFileSize(allocated, 0)}
</span>
</span>
);
};
useEffect(() => {
fetchData();
}, [queryParams]);
@@ -425,22 +449,11 @@ const Workers: React.FC = () => {
record?.status?.memory?.used,
record?.status?.memory?.total
)}
label={
<span className="flex-column">
<span>
{intl.formatMessage({ id: 'resources.table.total' })}:{' '}
{convertFileSize(record?.status?.memory?.total, 0)}
</span>
<span>
{intl.formatMessage({ id: 'resources.table.used' })}:{' '}
{convertFileSize(
record?.status?.memory?.used ||
record?.status.memory?.allocated,
0
)}
</span>
</span>
}
successPercent={formateUtilazation(
record?.status?.memory?.allocated,
record?.status?.memory?.total
)}
label={renderProgressLabels(record?.status?.memory)}
></ProgressBar>
);
}}
@@ -511,27 +524,7 @@ const Workers: React.FC = () => {
0
)
}
label={
<span className="flex-column">
<span>
{intl.formatMessage({
id: 'resources.table.total'
})}
: {convertFileSize(item.memory?.total, 0)}
</span>
<span>
{intl.formatMessage({
id: 'resources.table.used'
})}
:{' '}
{convertFileSize(
item.memory?.used ||
item.memory?.allocated,
0
)}
</span>
</span>
}
label={renderProgressLabels(item.memory)}
></ProgressBar>
{item.memory.is_unified_memory && (
<Tooltip