2024-03-20 11:13:51 +08:00
|
|
|
import {
|
|
|
|
useFetchKnowledgeBaseConfiguration,
|
|
|
|
useKnowledgeBaseId,
|
|
|
|
useSelectKnowledgeDetails,
|
|
|
|
useUpdateKnowledge,
|
|
|
|
} from '@/hooks/knowledgeHook';
|
|
|
|
import { useFetchLlmList, useSelectLlmOptions } from '@/hooks/llmHooks';
|
2024-04-03 11:21:54 +08:00
|
|
|
import { useNavigateToDataset } from '@/hooks/routeHook';
|
2024-03-20 11:13:51 +08:00
|
|
|
import { useOneNamespaceEffectsLoading } from '@/hooks/storeHooks';
|
|
|
|
import {
|
|
|
|
useFetchTenantInfo,
|
|
|
|
useSelectParserList,
|
|
|
|
} from '@/hooks/userSettingHook';
|
|
|
|
import {
|
|
|
|
getBase64FromUploadFileList,
|
|
|
|
getUploadFileListFromBase64,
|
|
|
|
} from '@/utils/fileUtil';
|
|
|
|
import { Form, UploadFile } from 'antd';
|
2024-03-21 16:45:03 +08:00
|
|
|
import { FormInstance } from 'antd/lib';
|
2024-03-20 11:13:51 +08:00
|
|
|
import pick from 'lodash/pick';
|
|
|
|
import { useCallback, useEffect } from 'react';
|
|
|
|
import { LlmModelType } from '../../constant';
|
|
|
|
|
2024-04-03 11:21:54 +08:00
|
|
|
export const useSubmitKnowledgeConfiguration = (form: FormInstance) => {
|
2024-03-20 11:13:51 +08:00
|
|
|
const save = useUpdateKnowledge();
|
|
|
|
const knowledgeBaseId = useKnowledgeBaseId();
|
|
|
|
const submitLoading = useOneNamespaceEffectsLoading('kSModel', ['updateKb']);
|
2024-04-03 11:21:54 +08:00
|
|
|
const navigateToDataset = useNavigateToDataset();
|
2024-03-20 11:13:51 +08:00
|
|
|
|
2024-04-03 11:21:54 +08:00
|
|
|
const submitKnowledgeConfiguration = useCallback(async () => {
|
|
|
|
const values = await form.validateFields();
|
|
|
|
const avatar = await getBase64FromUploadFileList(values.avatar);
|
|
|
|
save({
|
|
|
|
...values,
|
|
|
|
avatar,
|
|
|
|
kb_id: knowledgeBaseId,
|
|
|
|
});
|
|
|
|
navigateToDataset();
|
|
|
|
}, [save, knowledgeBaseId, form, navigateToDataset]);
|
2024-03-20 11:13:51 +08:00
|
|
|
|
2024-04-03 11:21:54 +08:00
|
|
|
return { submitKnowledgeConfiguration, submitLoading, navigateToDataset };
|
2024-03-20 11:13:51 +08:00
|
|
|
};
|
|
|
|
|
2024-03-21 16:45:03 +08:00
|
|
|
export const useFetchKnowledgeConfigurationOnMount = (form: FormInstance) => {
|
2024-03-20 11:13:51 +08:00
|
|
|
const knowledgeDetails = useSelectKnowledgeDetails();
|
|
|
|
const parserList = useSelectParserList();
|
|
|
|
const embeddingModelOptions = useSelectLlmOptions();
|
|
|
|
|
|
|
|
useFetchTenantInfo();
|
|
|
|
useFetchKnowledgeBaseConfiguration();
|
|
|
|
useFetchLlmList(LlmModelType.Embedding);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
const fileList: UploadFile[] = getUploadFileListFromBase64(
|
|
|
|
knowledgeDetails.avatar,
|
|
|
|
);
|
|
|
|
form.setFieldsValue({
|
|
|
|
...pick(knowledgeDetails, [
|
|
|
|
'description',
|
|
|
|
'name',
|
|
|
|
'permission',
|
|
|
|
'embd_id',
|
|
|
|
'parser_id',
|
|
|
|
'language',
|
2024-05-22 18:04:18 +08:00
|
|
|
'parser_config',
|
2024-03-20 11:13:51 +08:00
|
|
|
]),
|
|
|
|
avatar: fileList,
|
|
|
|
});
|
|
|
|
}, [form, knowledgeDetails]);
|
|
|
|
|
2024-03-28 11:42:40 +08:00
|
|
|
return {
|
|
|
|
parserList,
|
|
|
|
embeddingModelOptions,
|
|
|
|
disabled: knowledgeDetails.chunk_num > 0,
|
|
|
|
};
|
2024-03-21 16:45:03 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
export const useSelectKnowledgeDetailsLoading = () =>
|
|
|
|
useOneNamespaceEffectsLoading('kSModel', ['getKbDetail']);
|
|
|
|
|
|
|
|
export const useHandleChunkMethodChange = () => {
|
|
|
|
const [form] = Form.useForm();
|
|
|
|
const chunkMethod = Form.useWatch('parser_id', form);
|
|
|
|
|
|
|
|
return { form, chunkMethod };
|
2024-03-20 11:13:51 +08:00
|
|
|
};
|