Skip to content

Commit c4144cd

Browse files
author
Bogdan Tsechoev
committed
Merge branch 'fix_model_parsing' into 'master'
Assistant: Fix reading non-existing llm models from local storage See merge request postgres-ai/database-lab!925
2 parents 51028e4 + 2f76636 commit c4144cd

File tree

1 file changed

+39
-12
lines changed

1 file changed

+39
-12
lines changed

ui/packages/platform/src/pages/Bot/hooks.tsx

+39-12
Original file line numberDiff line numberDiff line change
@@ -517,26 +517,53 @@ const useAiModelsList = (): UseAiModelsList => {
517517

518518
const getModels = useCallback(async () => {
519519
let models = null;
520-
setLoading(true)
520+
setLoading(true);
521521
try {
522522
const { response } = await getAiModels();
523-
setLLMModels(response)
524-
const currentModel = window.localStorage.getItem('bot.ai_model')
525-
const parsedModel: AiModel = currentModel ? JSON.parse(currentModel) : null
526-
if (currentModel && parsedModel.name !== userModel?.name) {
527-
setUserModel(parsedModel)
523+
setLLMModels(response);
524+
const currentModel = window.localStorage.getItem('bot.ai_model');
525+
const parsedModel: AiModel = currentModel ? JSON.parse(currentModel) : null;
526+
527+
if (currentModel && parsedModel.name !== userModel?.name && response) {
528+
// Check if the parsedModel exists in the response models
529+
const modelInResponse = response.find(
530+
(model) =>
531+
model.name.includes(parsedModel.name)
532+
);
533+
534+
if (modelInResponse) {
535+
setUserModel(modelInResponse);
536+
window.localStorage.setItem('bot.ai_model', JSON.stringify(modelInResponse));
537+
} else {
538+
// Model from localStorage does not exist in response
539+
// Find a default model
540+
const defaultModel = response.find((model) =>
541+
model.name.includes(DEFAULT_MODEL_NAME)
542+
);
543+
544+
if (defaultModel) {
545+
setUserModel(defaultModel);
546+
window.localStorage.setItem('bot.ai_model', JSON.stringify(defaultModel));
547+
}
548+
}
528549
} else if (response) {
529-
const regex = new RegExp(`^${DEFAULT_MODEL_NAME}`);
530-
const matchingModel = response.find(model => regex.test(model.name));
531-
if (matchingModel) setModel(matchingModel)
550+
// Find a model where the model name includes the DEFAULT_MODEL_NAME
551+
const matchingModel = response.find((model) =>
552+
model.name.includes(DEFAULT_MODEL_NAME)
553+
);
554+
if (matchingModel) {
555+
setModel(matchingModel);
556+
window.localStorage.setItem('bot.ai_model', JSON.stringify(matchingModel));
557+
}
532558
}
533559
} catch (e) {
534-
setError(e as unknown as Response)
560+
setError(e as unknown as Response);
535561
}
536-
setLoading(false)
537-
return models
562+
setLoading(false);
563+
return models;
538564
}, []);
539565

566+
540567
useEffect(() => {
541568
let isCancelled = false;
542569

0 commit comments

Comments
 (0)