node_mapping.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. from collections.abc import Mapping
  2. from core.workflow.nodes.answer import AnswerNode
  3. from core.workflow.nodes.base import BaseNode
  4. from core.workflow.nodes.code import CodeNode
  5. from core.workflow.nodes.document_extractor import DocumentExtractorNode
  6. from core.workflow.nodes.end import EndNode
  7. from core.workflow.nodes.enums import NodeType
  8. from core.workflow.nodes.http_request import HttpRequestNode
  9. from core.workflow.nodes.if_else import IfElseNode
  10. from core.workflow.nodes.iteration import IterationNode, IterationStartNode
  11. from core.workflow.nodes.knowledge_retrieval import KnowledgeRetrievalNode
  12. from core.workflow.nodes.list_operator import ListOperatorNode
  13. from core.workflow.nodes.llm import LLMNode
  14. from core.workflow.nodes.parameter_extractor import ParameterExtractorNode
  15. from core.workflow.nodes.question_classifier import QuestionClassifierNode
  16. from core.workflow.nodes.start import StartNode
  17. from core.workflow.nodes.template_transform import TemplateTransformNode
  18. from core.workflow.nodes.tool import ToolNode
  19. from core.workflow.nodes.variable_aggregator import VariableAggregatorNode
  20. from core.workflow.nodes.variable_assigner.v1 import VariableAssignerNode as VariableAssignerNodeV1
  21. from core.workflow.nodes.variable_assigner.v2 import VariableAssignerNode as VariableAssignerNodeV2
  22. LATEST_VERSION = "latest"
  23. NODE_TYPE_CLASSES_MAPPING: Mapping[NodeType, Mapping[str, type[BaseNode]]] = {
  24. NodeType.START: {
  25. LATEST_VERSION: StartNode,
  26. "1": StartNode,
  27. },
  28. NodeType.END: {
  29. LATEST_VERSION: EndNode,
  30. "1": EndNode,
  31. },
  32. NodeType.ANSWER: {
  33. LATEST_VERSION: AnswerNode,
  34. "1": AnswerNode,
  35. },
  36. NodeType.LLM: {
  37. LATEST_VERSION: LLMNode,
  38. "1": LLMNode,
  39. },
  40. NodeType.KNOWLEDGE_RETRIEVAL: {
  41. LATEST_VERSION: KnowledgeRetrievalNode,
  42. "1": KnowledgeRetrievalNode,
  43. },
  44. NodeType.IF_ELSE: {
  45. LATEST_VERSION: IfElseNode,
  46. "1": IfElseNode,
  47. },
  48. NodeType.CODE: {
  49. LATEST_VERSION: CodeNode,
  50. "1": CodeNode,
  51. },
  52. NodeType.TEMPLATE_TRANSFORM: {
  53. LATEST_VERSION: TemplateTransformNode,
  54. "1": TemplateTransformNode,
  55. },
  56. NodeType.QUESTION_CLASSIFIER: {
  57. LATEST_VERSION: QuestionClassifierNode,
  58. "1": QuestionClassifierNode,
  59. },
  60. NodeType.HTTP_REQUEST: {
  61. LATEST_VERSION: HttpRequestNode,
  62. "1": HttpRequestNode,
  63. },
  64. NodeType.TOOL: {
  65. LATEST_VERSION: ToolNode,
  66. "1": ToolNode,
  67. },
  68. NodeType.VARIABLE_AGGREGATOR: {
  69. LATEST_VERSION: VariableAggregatorNode,
  70. "1": VariableAggregatorNode,
  71. },
  72. NodeType.LEGACY_VARIABLE_AGGREGATOR: {
  73. LATEST_VERSION: VariableAggregatorNode,
  74. "1": VariableAggregatorNode,
  75. }, # original name of VARIABLE_AGGREGATOR
  76. NodeType.ITERATION: {
  77. LATEST_VERSION: IterationNode,
  78. "1": IterationNode,
  79. },
  80. NodeType.ITERATION_START: {
  81. LATEST_VERSION: IterationStartNode,
  82. "1": IterationStartNode,
  83. },
  84. NodeType.PARAMETER_EXTRACTOR: {
  85. LATEST_VERSION: ParameterExtractorNode,
  86. "1": ParameterExtractorNode,
  87. },
  88. NodeType.VARIABLE_ASSIGNER: {
  89. LATEST_VERSION: VariableAssignerNodeV2,
  90. "1": VariableAssignerNodeV1,
  91. "2": VariableAssignerNodeV2,
  92. },
  93. NodeType.DOCUMENT_EXTRACTOR: {
  94. LATEST_VERSION: DocumentExtractorNode,
  95. "1": DocumentExtractorNode,
  96. },
  97. NodeType.LIST_OPERATOR: {
  98. LATEST_VERSION: ListOperatorNode,
  99. "1": ListOperatorNode,
  100. },
  101. }