| 
									
										
										
										
											2025-05-15 22:39:35 +08:00
										 |  |  | import type { NodeDefault } from '../../types' | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | import type { KnowledgeRetrievalNodeType } from './types' | 
					
						
							| 
									
										
										
										
											2024-11-12 14:38:24 +08:00
										 |  |  | import { checkoutRerankModelConfigedInRetrievalSettings } from './utils' | 
					
						
							| 
									
										
										
										
											2024-07-24 12:50:48 +08:00
										 |  |  | import { DATASET_DEFAULT } from '@/config' | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | import { RETRIEVE_TYPE } from '@/types/app' | 
					
						
							| 
									
										
										
										
											2025-04-24 16:29:58 +08:00
										 |  |  | import { genNodeMetaData } from '@/app/components/workflow/utils' | 
					
						
							|  |  |  | import { BlockEnum } from '@/app/components/workflow/types' | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | const i18nPrefix = 'workflow' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-29 16:11:54 +08:00
										 |  |  | const metaData = genNodeMetaData({ | 
					
						
							|  |  |  |   sort: 2, | 
					
						
							|  |  |  |   type: BlockEnum.KnowledgeRetrieval, | 
					
						
							|  |  |  | }) | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | const nodeDefault: NodeDefault<KnowledgeRetrievalNodeType> = { | 
					
						
							| 
									
										
										
										
											2025-04-29 16:11:54 +08:00
										 |  |  |   metaData, | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |   defaultValue: { | 
					
						
							|  |  |  |     query_variable_selector: [], | 
					
						
							|  |  |  |     dataset_ids: [], | 
					
						
							| 
									
										
										
										
											2024-07-24 12:50:48 +08:00
										 |  |  |     retrieval_mode: RETRIEVE_TYPE.multiWay, | 
					
						
							|  |  |  |     multiple_retrieval_config: { | 
					
						
							|  |  |  |       top_k: DATASET_DEFAULT.top_k, | 
					
						
							|  |  |  |       score_threshold: undefined, | 
					
						
							|  |  |  |       reranking_enable: false, | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |   }, | 
					
						
							|  |  |  |   checkValid(payload: KnowledgeRetrievalNodeType, t: any) { | 
					
						
							|  |  |  |     let errorMessages = '' | 
					
						
							|  |  |  |     if (!errorMessages && (!payload.query_variable_selector || payload.query_variable_selector.length === 0)) | 
					
						
							|  |  |  |       errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.knowledgeRetrieval.queryVariable`) }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!errorMessages && (!payload.dataset_ids || payload.dataset_ids.length === 0)) | 
					
						
							|  |  |  |       errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.knowledgeRetrieval.knowledge`) }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!errorMessages && payload.retrieval_mode === RETRIEVE_TYPE.oneWay && !payload.single_retrieval_config?.model?.provider) | 
					
						
							|  |  |  |       errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t('common.modelProvider.systemReasoningModel.key') }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-12 14:38:24 +08:00
										 |  |  |     const { _datasets, multiple_retrieval_config, retrieval_mode } = payload | 
					
						
							|  |  |  |     if (retrieval_mode === RETRIEVE_TYPE.multiWay) { | 
					
						
							|  |  |  |       const checked = checkoutRerankModelConfigedInRetrievalSettings(_datasets || [], multiple_retrieval_config) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if (!errorMessages && !checked) | 
					
						
							|  |  |  |         errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.errorMsg.fields.rerankModel`) }) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     return { | 
					
						
							|  |  |  |       isValid: !errorMessages, | 
					
						
							|  |  |  |       errorMessage: errorMessages, | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default nodeDefault |