feat: display model loading progress
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
RaviAnand Mohabir 2025-04-04 15:57:49 +02:00
parent cd102e5357
commit dc75582bec

View File

@ -6,6 +6,7 @@ import {
Group, Group,
Indicator, Indicator,
Pagination, Pagination,
Progress,
Select, Select,
Stack, Stack,
Text, Text,
@ -124,6 +125,7 @@ function FileOrganizer() {
const engine = useRef<MLCEngine>(null); const engine = useRef<MLCEngine>(null);
const [loadingModel, setLoadingModel] = useState<string | null>(null); const [loadingModel, setLoadingModel] = useState<string | null>(null);
const [loadingProgress, setLoadingProgress] = useState<number | null>(null);
const [runningModel, setRunningModel] = useState<string | null>(null); const [runningModel, setRunningModel] = useState<string | null>(null);
const [selectedModel, setSelectedModel] = useLocalStorage<string | null>({ const [selectedModel, setSelectedModel] = useLocalStorage<string | null>({
@ -138,12 +140,15 @@ function FileOrganizer() {
const initProgressCallback: InitProgressCallback = async ( const initProgressCallback: InitProgressCallback = async (
initProgress initProgress
) => { ) => {
setLoadingProgress(initProgress.progress);
if ( if (
initProgress.progress === 1 && initProgress.progress === 1 &&
initProgress.text.startsWith("Finish loading") initProgress.text.startsWith("Finish loading")
) { ) {
setRunningModel(selectedModel); setRunningModel(selectedModel);
setLoadingModel(null); setLoadingModel(null);
setLoadingProgress(null);
} }
}; };
@ -159,6 +164,7 @@ function FileOrganizer() {
runningModel, runningModel,
setRunningModel, setRunningModel,
setLoadingModel, setLoadingModel,
setLoadingProgress,
]); ]);
const [selectedFile, setSelectedFile] = useState<number | null>(null); const [selectedFile, setSelectedFile] = useState<number | null>(null);
@ -314,6 +320,8 @@ function FileOrganizer() {
); );
} }
}); });
} else {
console.warn(reply?.choices[0].message.content);
} }
}) })
); );
@ -341,6 +349,8 @@ function FileOrganizer() {
key={form.key("customer.lastName")} key={form.key("customer.lastName")}
/> />
<Group ml="auto"> <Group ml="auto">
<Stack>
<Group>
<Tooltip <Tooltip
label={ label={
runningModel runningModel
@ -352,7 +362,11 @@ function FileOrganizer() {
> >
<Indicator <Indicator
color={ color={
runningModel ? (loadingModel ? "blue" : "green") : "orange" runningModel
? loadingModel
? "blue"
: "green"
: "orange"
} }
processing={loadingModel !== null} processing={loadingModel !== null}
> >
@ -364,9 +378,16 @@ function FileOrganizer() {
data={modelList} data={modelList}
value={selectedModel} value={selectedModel}
onChange={(val) => val && setSelectedModel(val)} onChange={(val) => val && setSelectedModel(val)}
searchable
clearable
/> />
)} )}
</Group> </Group>
{loadingProgress !== null && (
<Progress value={loadingProgress} striped animated />
)}
</Stack>
</Group>
</Group> </Group>
<Flex direction="row-reverse" p="md"> <Flex direction="row-reverse" p="md">
<Stack flex={2}> <Stack flex={2}>