node_mapping.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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.parameter_extractor import ParameterExtractorNode
  16. from core.workflow.nodes.question_classifier import QuestionClassifierNode
  17. from core.workflow.nodes.start import StartNode
  18. from core.workflow.nodes.template_transform import TemplateTransformNode
  19. from core.workflow.nodes.tool import ToolNode
  20. from core.workflow.nodes.variable_aggregator import VariableAggregatorNode
  21. from core.workflow.nodes.variable_assigner.v1 import VariableAssignerNode as VariableAssignerNodeV1
  22. from core.workflow.nodes.variable_assigner.v2 import VariableAssignerNode as VariableAssignerNodeV2
  23. LATEST_VERSION = "latest"
  24. NODE_TYPE_CLASSES_MAPPING: Mapping[NodeType, Mapping[str, type[BaseNode]]] = {
  25. NodeType.START: {
  26. LATEST_VERSION: StartNode,
  27. "1": StartNode,
  28. },
  29. NodeType.END: {
  30. LATEST_VERSION: EndNode,
  31. "1": EndNode,
  32. },
  33. NodeType.ANSWER: {
  34. LATEST_VERSION: AnswerNode,
  35. "1": AnswerNode,
  36. },
  37. NodeType.LLM: {
  38. LATEST_VERSION: LLMNode,
  39. "1": LLMNode,
  40. },
  41. NodeType.KNOWLEDGE_RETRIEVAL: {
  42. LATEST_VERSION: KnowledgeRetrievalNode,
  43. "1": KnowledgeRetrievalNode,
  44. },
  45. NodeType.IF_ELSE: {
  46. LATEST_VERSION: IfElseNode,
  47. "1": IfElseNode,
  48. },
  49. NodeType.CODE: {
  50. LATEST_VERSION: CodeNode,
  51. "1": CodeNode,
  52. },
  53. NodeType.TEMPLATE_TRANSFORM: {
  54. LATEST_VERSION: TemplateTransformNode,
  55. "1": TemplateTransformNode,
  56. },
  57. NodeType.QUESTION_CLASSIFIER: {
  58. LATEST_VERSION: QuestionClassifierNode,
  59. "1": QuestionClassifierNode,
  60. },
  61. NodeType.HTTP_REQUEST: {
  62. LATEST_VERSION: HttpRequestNode,
  63. "1": HttpRequestNode,
  64. },
  65. NodeType.TOOL: {
  66. LATEST_VERSION: ToolNode,
  67. "1": ToolNode,
  68. },
  69. NodeType.VARIABLE_AGGREGATOR: {
  70. LATEST_VERSION: VariableAggregatorNode,
  71. "1": VariableAggregatorNode,
  72. },
  73. NodeType.LEGACY_VARIABLE_AGGREGATOR: {
  74. LATEST_VERSION: VariableAggregatorNode,
  75. "1": VariableAggregatorNode,
  76. }, # original name of VARIABLE_AGGREGATOR
  77. NodeType.ITERATION: {
  78. LATEST_VERSION: IterationNode,
  79. "1": IterationNode,
  80. },
  81. NodeType.ITERATION_START: {
  82. LATEST_VERSION: IterationStartNode,
  83. "1": IterationStartNode,
  84. },
  85. NodeType.PARAMETER_EXTRACTOR: {
  86. LATEST_VERSION: ParameterExtractorNode,
  87. "1": ParameterExtractorNode,
  88. },
  89. NodeType.VARIABLE_ASSIGNER: {
  90. LATEST_VERSION: VariableAssignerNodeV2,
  91. "1": VariableAssignerNodeV1,
  92. "2": VariableAssignerNodeV2,
  93. },
  94. NodeType.DOCUMENT_EXTRACTOR: {
  95. LATEST_VERSION: DocumentExtractorNode,
  96. "1": DocumentExtractorNode,
  97. },
  98. NodeType.LIST_OPERATOR: {
  99. LATEST_VERSION: ListOperatorNode,
  100. "1": ListOperatorNode,
  101. },
  102. NodeType.AGENT: {
  103. LATEST_VERSION: AgentNode,
  104. "1": AgentNode,
  105. },
  106. }