node_mapping.py 3.9 KB

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