You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

default.ts 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import type { NodeDefault } from '../../types'
  2. import type { KnowledgeRetrievalNodeType } from './types'
  3. import { checkoutRerankModelConfiguredInRetrievalSettings } from './utils'
  4. import { DATASET_DEFAULT } from '@/config'
  5. import { RETRIEVE_TYPE } from '@/types/app'
  6. import { genNodeMetaData } from '@/app/components/workflow/utils'
  7. import { BlockEnum } from '@/app/components/workflow/types'
  8. const i18nPrefix = 'workflow'
  9. const metaData = genNodeMetaData({
  10. sort: 2,
  11. type: BlockEnum.KnowledgeRetrieval,
  12. })
  13. const nodeDefault: NodeDefault<KnowledgeRetrievalNodeType> = {
  14. metaData,
  15. defaultValue: {
  16. query_variable_selector: [],
  17. dataset_ids: [],
  18. retrieval_mode: RETRIEVE_TYPE.multiWay,
  19. multiple_retrieval_config: {
  20. top_k: DATASET_DEFAULT.top_k,
  21. score_threshold: undefined,
  22. reranking_enable: false,
  23. },
  24. },
  25. checkValid(payload: KnowledgeRetrievalNodeType, t: any) {
  26. let errorMessages = ''
  27. if (!errorMessages && (!payload.query_variable_selector || payload.query_variable_selector.length === 0))
  28. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.knowledgeRetrieval.queryVariable`) })
  29. if (!errorMessages && (!payload.dataset_ids || payload.dataset_ids.length === 0))
  30. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.knowledgeRetrieval.knowledge`) })
  31. if (!errorMessages && payload.retrieval_mode === RETRIEVE_TYPE.oneWay && !payload.single_retrieval_config?.model?.provider)
  32. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t('common.modelProvider.systemReasoningModel.key') })
  33. const { _datasets, multiple_retrieval_config, retrieval_mode } = payload
  34. if (retrieval_mode === RETRIEVE_TYPE.multiWay) {
  35. const checked = checkoutRerankModelConfiguredInRetrievalSettings(_datasets || [], multiple_retrieval_config)
  36. if (!errorMessages && !checked)
  37. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.errorMsg.fields.rerankModel`) })
  38. }
  39. return {
  40. isValid: !errorMessages,
  41. errorMessage: errorMessages,
  42. }
  43. },
  44. }
  45. export default nodeDefault