fix: for gguf ref not be created, #2227
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
import { useRequest } from 'ahooks';
|
||||||
|
|
||||||
|
export default function useDeferredRequest<P extends any[], R>(
|
||||||
|
requestFn: (...args: P) => Promise<R>,
|
||||||
|
delay = 100
|
||||||
|
) {
|
||||||
|
return useRequest(
|
||||||
|
async (...args: P) => {
|
||||||
|
await new Promise((resolve) => {
|
||||||
|
setTimeout(resolve, delay);
|
||||||
|
});
|
||||||
|
return await requestFn(...args);
|
||||||
|
},
|
||||||
|
{
|
||||||
|
manual: true
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import ModalFooter from '@/components/modal-footer';
|
import ModalFooter from '@/components/modal-footer';
|
||||||
import GSDrawer from '@/components/scroller-modal/gs-drawer';
|
import GSDrawer from '@/components/scroller-modal/gs-drawer';
|
||||||
import { PageActionType } from '@/config/types';
|
import { PageActionType } from '@/config/types';
|
||||||
|
import useDeferredRequest from '@/hooks/use-deferred-request';
|
||||||
import { CloseOutlined } from '@ant-design/icons';
|
import { CloseOutlined } from '@ant-design/icons';
|
||||||
import { useIntl } from '@umijs/max';
|
import { useIntl } from '@umijs/max';
|
||||||
import { Button } from 'antd';
|
import { Button } from 'antd';
|
||||||
@@ -111,7 +112,6 @@ const AddModal: FC<AddModalProps> = (props) => {
|
|||||||
cancelEvaluate,
|
cancelEvaluate,
|
||||||
unlockWarningStatus,
|
unlockWarningStatus,
|
||||||
handleOnValuesChange: handleOnValuesChangeBefore,
|
handleOnValuesChange: handleOnValuesChangeBefore,
|
||||||
handleEvaluateOnChange,
|
|
||||||
clearCahceFormValues,
|
clearCahceFormValues,
|
||||||
warningStatus,
|
warningStatus,
|
||||||
submitAnyway
|
submitAnyway
|
||||||
@@ -133,6 +133,11 @@ const AddModal: FC<AddModalProps> = (props) => {
|
|||||||
});
|
});
|
||||||
const requestModelIdRef = useRef<number>(0);
|
const requestModelIdRef = useRef<number>(0);
|
||||||
|
|
||||||
|
const { run: fetchModelFiles } = useDeferredRequest(
|
||||||
|
() => modelFileRef.current?.fetchModelFiles?.(),
|
||||||
|
100
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the request model id to distinguish
|
* Update the request model id to distinguish
|
||||||
* the evaluate request.
|
* the evaluate request.
|
||||||
@@ -191,32 +196,8 @@ const AddModal: FC<AddModalProps> = (props) => {
|
|||||||
return categories || null;
|
return categories || null;
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleSelectModelFile = async (item: any, requestModelId: number) => {
|
const { run: onSelectFile } = useDeferredRequest(
|
||||||
if (
|
async (item: any, modelInfo: any) => {
|
||||||
evaluateStateRef.current.state !== EvaluateProccess.file ||
|
|
||||||
requestModelId !== evaluateStateRef.current.requestModelId
|
|
||||||
) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
form.current?.form?.resetFields(resetFieldsByFile);
|
|
||||||
const modelInfo = onSelectModel(selectedModel, props.source);
|
|
||||||
|
|
||||||
form.current?.setFieldsValue?.({
|
|
||||||
..._.omit(modelInfo, ['name']),
|
|
||||||
file_name: item.fakeName,
|
|
||||||
categories: getCategory(item)
|
|
||||||
});
|
|
||||||
|
|
||||||
console.log('handleSelectModelFile', item);
|
|
||||||
|
|
||||||
await new Promise((resolve) => {
|
|
||||||
setTimeout(() => {
|
|
||||||
resolve(true);
|
|
||||||
}, 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
// evaluate the form data when select a model file
|
|
||||||
if (item.fakeName) {
|
|
||||||
unlockWarningStatus();
|
unlockWarningStatus();
|
||||||
|
|
||||||
const evaluateRes = await handleOnValuesChangeBefore?.({
|
const evaluateRes = await handleOnValuesChangeBefore?.({
|
||||||
@@ -245,6 +226,31 @@ const AddModal: FC<AddModalProps> = (props) => {
|
|||||||
: defaultSpec.backend_parameters || [],
|
: defaultSpec.backend_parameters || [],
|
||||||
categories: getCategory(item)
|
categories: getCategory(item)
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
100
|
||||||
|
);
|
||||||
|
|
||||||
|
const handleSelectModelFile = async (item: any, requestModelId: number) => {
|
||||||
|
if (
|
||||||
|
evaluateStateRef.current.state !== EvaluateProccess.file ||
|
||||||
|
requestModelId !== evaluateStateRef.current.requestModelId
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
form.current?.form?.resetFields(resetFieldsByFile);
|
||||||
|
const modelInfo = onSelectModel(selectedModel, props.source);
|
||||||
|
|
||||||
|
form.current?.setFieldsValue?.({
|
||||||
|
..._.omit(modelInfo, ['name']),
|
||||||
|
file_name: item.fakeName,
|
||||||
|
categories: getCategory(item)
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('handleSelectModelFile', item);
|
||||||
|
|
||||||
|
// evaluate the form data when select a model file
|
||||||
|
if (item.fakeName) {
|
||||||
|
onSelectFile(item, modelInfo);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -286,14 +292,8 @@ const AddModal: FC<AddModalProps> = (props) => {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
await new Promise((resolve) => {
|
|
||||||
setTimeout(() => {
|
|
||||||
resolve(true);
|
|
||||||
}, 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (item.isGGUF) {
|
if (item.isGGUF) {
|
||||||
modelFileRef.current?.fetchModelFiles?.();
|
fetchModelFiles();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -335,7 +335,6 @@ const HFModelFile: React.FC<HFModelFileProps> = forwardRef((props, ref) => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!props.selectedModel.name) {
|
if (!props.selectedModel.name) {
|
||||||
setDataSource({ fileList: [], loading: false });
|
setDataSource({ fileList: [], loading: false });
|
||||||
handleSelectModelFile({});
|
|
||||||
}
|
}
|
||||||
}, [props.selectedModel?.name]);
|
}, [props.selectedModel?.name]);
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ const HFModelItem: React.FC<HFModelItemProps> = (props) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
tabIndex={0}
|
|
||||||
className={classNames('hf-model-item', {
|
className={classNames('hf-model-item', {
|
||||||
active: props.active
|
active: props.active
|
||||||
})}
|
})}
|
||||||
|
|||||||
@@ -174,8 +174,8 @@ const ModelCard: React.FC<{
|
|||||||
setModelData(null);
|
setModelData(null);
|
||||||
setReadmeText(null);
|
setReadmeText(null);
|
||||||
handleOnCollapse(null);
|
handleOnCollapse(null);
|
||||||
setIsGGUF(false);
|
// setIsGGUF(false);
|
||||||
setIsGGUFModel(false);
|
// setIsGGUFModel(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -205,8 +205,8 @@ const ModelCard: React.FC<{
|
|||||||
setModelData(null);
|
setModelData(null);
|
||||||
setReadmeText(null);
|
setReadmeText(null);
|
||||||
handleOnCollapse(null);
|
handleOnCollapse(null);
|
||||||
setIsGGUF(false);
|
// setIsGGUF(false);
|
||||||
setIsGGUFModel(false);
|
// setIsGGUFModel(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ const ModelFileItem: React.FC<ModelFileItemProps> = (props) => {
|
|||||||
className={classNames('hf-model-file', {
|
className={classNames('hf-model-file', {
|
||||||
active: active
|
active: active
|
||||||
})}
|
})}
|
||||||
tabIndex={0}
|
|
||||||
onClick={() => handleSelectModelFile(item)}
|
onClick={() => handleSelectModelFile(item)}
|
||||||
>
|
>
|
||||||
<div className="title">{item.path}</div>
|
<div className="title">{item.path}</div>
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ const SearchModel: React.FC<SearchInputProps> = (props) => {
|
|||||||
|
|
||||||
const handleOnSelectModel = (model: any) => {
|
const handleOnSelectModel = (model: any) => {
|
||||||
const item = model || {};
|
const item = model || {};
|
||||||
if (item.evaluateResult && !item.isGGUF) {
|
if (item.evaluated && !item.isGGUF) {
|
||||||
onSelectModelAfterEvaluate(item);
|
onSelectModelAfterEvaluate(item);
|
||||||
} else {
|
} else {
|
||||||
onSelectModel(item);
|
onSelectModel(item);
|
||||||
@@ -326,6 +326,7 @@ const SearchModel: React.FC<SearchInputProps> = (props) => {
|
|||||||
const resultList = list.map((item, index) => {
|
const resultList = list.map((item, index) => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
|
evaluated: true,
|
||||||
evaluateResult: evaluations[index] || null
|
evaluateResult: evaluations[index] || null
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user