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

default.ts 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import type { NodeDefault, Var } from '../../types'
  2. import { BlockEnum } from '../../types'
  3. import { getNotExistVariablesByArray, getNotExistVariablesByText } from '../../utils/workflow'
  4. import type { QuestionClassifierNodeType } from './types'
  5. import { ALL_CHAT_AVAILABLE_BLOCKS, ALL_COMPLETION_AVAILABLE_BLOCKS } from '@/app/components/workflow/blocks'
  6. const i18nPrefix = 'workflow'
  7. const nodeDefault: NodeDefault<QuestionClassifierNodeType> = {
  8. defaultValue: {
  9. query_variable_selector: [],
  10. model: {
  11. provider: '',
  12. name: '',
  13. mode: 'chat',
  14. completion_params: {
  15. temperature: 0.7,
  16. },
  17. },
  18. classes: [
  19. {
  20. id: '1',
  21. name: '',
  22. },
  23. {
  24. id: '2',
  25. name: '',
  26. },
  27. ],
  28. _targetBranches: [
  29. {
  30. id: '1',
  31. name: '',
  32. },
  33. {
  34. id: '2',
  35. name: '',
  36. },
  37. ],
  38. vision: {
  39. enabled: false,
  40. },
  41. },
  42. getAvailablePrevNodes(isChatMode: boolean) {
  43. const nodes = isChatMode
  44. ? ALL_CHAT_AVAILABLE_BLOCKS
  45. : ALL_COMPLETION_AVAILABLE_BLOCKS.filter(type => type !== BlockEnum.End)
  46. return nodes
  47. },
  48. getAvailableNextNodes(isChatMode: boolean) {
  49. const nodes = isChatMode ? ALL_CHAT_AVAILABLE_BLOCKS : ALL_COMPLETION_AVAILABLE_BLOCKS
  50. return nodes
  51. },
  52. checkValid(payload: QuestionClassifierNodeType, t: any) {
  53. let errorMessages = ''
  54. if (!errorMessages && (!payload.query_variable_selector || payload.query_variable_selector.length === 0))
  55. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.questionClassifiers.inputVars`) })
  56. if (!errorMessages && !payload.model.provider)
  57. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.questionClassifiers.model`) })
  58. if (!errorMessages && (!payload.classes || payload.classes.length === 0))
  59. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.questionClassifiers.class`) })
  60. if (!errorMessages && (payload.classes.some(item => !item.name)))
  61. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.questionClassifiers.topicName`) })
  62. if (!errorMessages && payload.vision?.enabled && !payload.vision.configs?.variable_selector?.length)
  63. errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.errorMsg.fields.visionVariable`) })
  64. return {
  65. isValid: !errorMessages,
  66. errorMessage: errorMessages,
  67. }
  68. },
  69. checkVarValid(payload: QuestionClassifierNodeType, varMap: Record<string, Var>, t: any) {
  70. const errorMessageArr = []
  71. const query_variable_selector_warnings = getNotExistVariablesByArray([payload.query_variable_selector], varMap)
  72. if (query_variable_selector_warnings.length)
  73. errorMessageArr.push(`${t('workflow.nodes.questionClassifiers.inputVars')} ${t('workflow.common.referenceVar')}${query_variable_selector_warnings.join('、')}${t('workflow.common.noExist')}`)
  74. let vision_variable_selector_warnings: string[] = []
  75. if (payload.vision?.configs?.variable_selector?.length) {
  76. vision_variable_selector_warnings = getNotExistVariablesByArray([payload.vision?.configs?.variable_selector], varMap)
  77. if (vision_variable_selector_warnings.length)
  78. errorMessageArr.push(`${t('workflow.nodes.llm.vision')} ${t('workflow.common.referenceVar')}${vision_variable_selector_warnings.join('、')}${t('workflow.common.noExist')}`)
  79. }
  80. const instruction_warnings: string[] = getNotExistVariablesByText(payload.instruction, varMap)
  81. if (instruction_warnings.length)
  82. errorMessageArr.push(`${t('workflow.nodes.questionClassifiers.advancedSetting')}-${t('workflow.nodes.questionClassifiers.instruction')} ${t('workflow.common.referenceVar')}${instruction_warnings.join('、')}${t('workflow.common.noExist')}`)
  83. return {
  84. isValid: true,
  85. warning_vars: [...query_variable_selector_warnings, ...vision_variable_selector_warnings, ...instruction_warnings],
  86. errorMessage: errorMessageArr,
  87. }
  88. },
  89. }
  90. export default nodeDefault