您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

default.ts 3.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { BlockEnum } from '../../types'
  2. import type { NodeDefault, Var } from '../../types'
  3. import { getNotExistVariablesByArray } from '../../utils/workflow'
  4. import type { KnowledgeRetrievalNodeType } from './types'
  5. import { checkoutRerankModelConfigedInRetrievalSettings } from './utils'
  6. import { ALL_CHAT_AVAILABLE_BLOCKS, ALL_COMPLETION_AVAILABLE_BLOCKS } from '@/app/components/workflow/blocks'
  7. import { DATASET_DEFAULT } from '@/config'
  8. import { RETRIEVE_TYPE } from '@/types/app'
  9. const i18nPrefix = 'workflow'
  10. const nodeDefault: NodeDefault<KnowledgeRetrievalNodeType> = {
  11. defaultValue: {
  12. query_variable_selector: [],
  13. dataset_ids: [],
  14. retrieval_mode: RETRIEVE_TYPE.multiWay,
  15. multiple_retrieval_config: {
  16. top_k: DATASET_DEFAULT.top_k,
  17. score_threshold: undefined,
  18. reranking_enable: false,
  19. },
  20. },
  21. getAvailablePrevNodes(isChatMode: boolean) {
  22. const nodes = isChatMode
  23. ? ALL_CHAT_AVAILABLE_BLOCKS
  24. : ALL_COMPLETION_AVAILABLE_BLOCKS.filter(type => type !== BlockEnum.End)
  25. return nodes
  26. },
  27. getAvailableNextNodes(isChatMode: boolean) {
  28. const nodes = isChatMode ? ALL_CHAT_AVAILABLE_BLOCKS : ALL_COMPLETION_AVAILABLE_BLOCKS
  29. return nodes
  30. },
  31. checkValid(payload: KnowledgeRetrievalNodeType, t: any) {
  32. let errorMessages = ''
  33. if (!errorMessages && (!payload.query_variable_selector || payload.query_variable_selector.length === 0))
  34. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.knowledgeRetrieval.queryVariable`) })
  35. if (!errorMessages && (!payload.dataset_ids || payload.dataset_ids.length === 0))
  36. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.knowledgeRetrieval.knowledge`) })
  37. if (!errorMessages && payload.retrieval_mode === RETRIEVE_TYPE.oneWay && !payload.single_retrieval_config?.model?.provider)
  38. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t('common.modelProvider.systemReasoningModel.key') })
  39. const { _datasets, multiple_retrieval_config, retrieval_mode } = payload
  40. if (retrieval_mode === RETRIEVE_TYPE.multiWay) {
  41. const checked = checkoutRerankModelConfigedInRetrievalSettings(_datasets || [], multiple_retrieval_config)
  42. if (!errorMessages && !checked)
  43. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.errorMsg.fields.rerankModel`) })
  44. }
  45. return {
  46. isValid: !errorMessages,
  47. errorMessage: errorMessages,
  48. }
  49. },
  50. checkVarValid(payload: KnowledgeRetrievalNodeType, varMap: Record<string, Var>, t: any) {
  51. const errorMessageArr = []
  52. const query_variable_selector_warnings = getNotExistVariablesByArray([payload.query_variable_selector], varMap)
  53. if (query_variable_selector_warnings.length)
  54. errorMessageArr.push(`${t('workflow.nodes.knowledgeRetrieval.queryVariable')} ${t('workflow.common.referenceVar')}${query_variable_selector_warnings.join('、')}${t('workflow.common.noExist')}`)
  55. return {
  56. isValid: true,
  57. warning_vars: [...query_variable_selector_warnings],
  58. errorMessage: errorMessageArr,
  59. }
  60. },
  61. }
  62. export default nodeDefault