@@ -108,22 +108,23 @@ public StateGraph nl2sqlGraph(NodeBeanUtil nodeBeanUtil) throws GraphStateExcept
108108 keyStrategyHashMap .put (INPUT_KEY , new ReplaceStrategy ());
109109 // Agent ID
110110 keyStrategyHashMap .put (AGENT_ID , new ReplaceStrategy ());
111- // Business knowledge
112- keyStrategyHashMap .put (BUSINESS_KNOWLEDGE , new ReplaceStrategy ());
111+ // Intent recognition
112+ keyStrategyHashMap .put (INTENT_RECOGNITION_NODE_OUTPUT , new ReplaceStrategy ());
113+ // QUERY_ENHANCE_NODE节点输出
114+ keyStrategyHashMap .put (QUERY_ENHANCE_NODE_OUTPUT , new ReplaceStrategy ());
113115 // Semantic model
114- keyStrategyHashMap .put (SEMANTIC_MODEL , new ReplaceStrategy ());
115- // queryWrite节点输出
116- keyStrategyHashMap .put (QUERY_REWRITE_NODE_OUTPUT , new ReplaceStrategy ());
117- // keyword extract节点输出
118- keyStrategyHashMap .put (KEYWORD_EXTRACT_NODE_OUTPUT , new ReplaceStrategy ());
119- keyStrategyHashMap .put (EVIDENCES , new ReplaceStrategy ());
116+ keyStrategyHashMap .put (GENEGRATED_SEMANTIC_MODEL_PROMPT , new ReplaceStrategy ());
117+ // EVIDENCE节点输出
118+ keyStrategyHashMap .put (EVIDENCE , new ReplaceStrategy ());
120119 // schema recall节点输出
121120 keyStrategyHashMap .put (TABLE_DOCUMENTS_FOR_SCHEMA_OUTPUT , new ReplaceStrategy ());
122- keyStrategyHashMap .put (COLUMN_DOCUMENTS_BY_KEYWORDS_OUTPUT , new ReplaceStrategy ());
121+ keyStrategyHashMap .put (COLUMN_DOCUMENTS__FOR_SCHEMA_OUTPUT , new ReplaceStrategy ());
123122 // table relation节点输出
124123 keyStrategyHashMap .put (TABLE_RELATION_OUTPUT , new ReplaceStrategy ());
125124 keyStrategyHashMap .put (TABLE_RELATION_EXCEPTION_OUTPUT , new ReplaceStrategy ());
126125 keyStrategyHashMap .put (TABLE_RELATION_RETRY_COUNT , new ReplaceStrategy ());
126+ // Feasibility Assessment 节点输出
127+ keyStrategyHashMap .put (FEASIBILITY_ASSESSMENT_NODE_OUTPUT , new ReplaceStrategy ());
127128 // sql generate节点输出
128129 keyStrategyHashMap .put (SQL_GENERATE_SCHEMA_MISSING_ADVICE , new ReplaceStrategy ());
129130 keyStrategyHashMap .put (SQL_GENERATE_OUTPUT , new ReplaceStrategy ());
@@ -160,10 +161,12 @@ public StateGraph nl2sqlGraph(NodeBeanUtil nodeBeanUtil) throws GraphStateExcept
160161 };
161162
162163 StateGraph stateGraph = new StateGraph (NL2SQL_GRAPH_NAME , keyStrategyFactory )
163- .addNode (QUERY_REWRITE_NODE , nodeBeanUtil .getNodeBeanAsync (QueryRewriteNode .class ))
164- .addNode (KEYWORD_EXTRACT_NODE , nodeBeanUtil .getNodeBeanAsync (KeywordExtractNode .class ))
164+ .addNode (INTENT_RECOGNITION_NODE , nodeBeanUtil .getNodeBeanAsync (IntentRecognitionNode .class ))
165+ .addNode (EVIDENCE_RECALL_NODE , nodeBeanUtil .getNodeBeanAsync (EvidenceRecallNode .class ))
166+ .addNode (QUERY_ENHANCE_NODE , nodeBeanUtil .getNodeBeanAsync (QueryEnhanceNode .class ))
165167 .addNode (SCHEMA_RECALL_NODE , nodeBeanUtil .getNodeBeanAsync (SchemaRecallNode .class ))
166168 .addNode (TABLE_RELATION_NODE , nodeBeanUtil .getNodeBeanAsync (TableRelationNode .class ))
169+ .addNode (FEASIBILITY_ASSESSMENT_NODE , nodeBeanUtil .getNodeBeanAsync (FeasibilityAssessmentNode .class ))
167170 .addNode (SQL_GENERATE_NODE , nodeBeanUtil .getNodeBeanAsync (SqlGenerateNode .class ))
168171 .addNode (PLANNER_NODE , nodeBeanUtil .getNodeBeanAsync (PlannerNode .class ))
169172 .addNode (PLAN_EXECUTOR_NODE , nodeBeanUtil .getNodeBeanAsync (PlanExecutorNode .class ))
@@ -175,13 +178,19 @@ public StateGraph nl2sqlGraph(NodeBeanUtil nodeBeanUtil) throws GraphStateExcept
175178 .addNode (SEMANTIC_CONSISTENCY_NODE , nodeBeanUtil .getNodeBeanAsync (SemanticConsistencyNode .class ))
176179 .addNode (HUMAN_FEEDBACK_NODE , nodeBeanUtil .getNodeBeanAsync (HumanFeedbackNode .class ));
177180
178- stateGraph .addEdge (START , QUERY_REWRITE_NODE )
179- .addConditionalEdges (QUERY_REWRITE_NODE , edge_async (new QueryRewriteDispatcher ()),
180- Map .of (KEYWORD_EXTRACT_NODE , KEYWORD_EXTRACT_NODE , END , END ))
181- .addEdge (KEYWORD_EXTRACT_NODE , SCHEMA_RECALL_NODE )
181+ stateGraph .addEdge (START , INTENT_RECOGNITION_NODE )
182+ .addConditionalEdges (INTENT_RECOGNITION_NODE , edge_async (new IntentRecognitionDispatcher ()),
183+ Map .of (EVIDENCE_RECALL_NODE , EVIDENCE_RECALL_NODE , END , END ))
184+ .addEdge (EVIDENCE_RECALL_NODE , QUERY_ENHANCE_NODE )
185+ .addConditionalEdges (QUERY_ENHANCE_NODE , edge_async (new QueryEnhanceDispatcher ()),
186+ Map .of (SCHEMA_RECALL_NODE , SCHEMA_RECALL_NODE , END , END ))
182187 .addEdge (SCHEMA_RECALL_NODE , TABLE_RELATION_NODE )
183188 .addConditionalEdges (TABLE_RELATION_NODE , edge_async (new TableRelationDispatcher ()),
184- Map .of (PLANNER_NODE , PLANNER_NODE , END , END , TABLE_RELATION_NODE , TABLE_RELATION_NODE )) // retry
189+ Map .of (FEASIBILITY_ASSESSMENT_NODE , FEASIBILITY_ASSESSMENT_NODE , END , END , TABLE_RELATION_NODE ,
190+ TABLE_RELATION_NODE )) // retry
191+ .addConditionalEdges (FEASIBILITY_ASSESSMENT_NODE , edge_async (new FeasibilityAssessmentDispatcher ()),
192+ Map .of (PLANNER_NODE , PLANNER_NODE , END , END ))
193+
185194 // The edge from PlannerNode now goes to PlanExecutorNode for validation and
186195 // execution
187196 .addEdge (PLANNER_NODE , PLAN_EXECUTOR_NODE )
@@ -214,16 +223,15 @@ public StateGraph nl2sqlGraph(NodeBeanUtil nodeBeanUtil) throws GraphStateExcept
214223 .addConditionalEdges (SQL_EXECUTE_NODE , edge_async (new SQLExecutorDispatcher ()),
215224 Map .of (SQL_GENERATE_NODE , SQL_GENERATE_NODE , SEMANTIC_CONSISTENCY_NODE , SEMANTIC_CONSISTENCY_NODE ))
216225 .addConditionalEdges (SQL_GENERATE_NODE , edge_async (new SqlGenerateDispatcher ()),
217- Map .of (KEYWORD_EXTRACT_NODE , KEYWORD_EXTRACT_NODE , END , END , SQL_EXECUTE_NODE , SQL_EXECUTE_NODE ))
226+ Map .of (FEASIBILITY_ASSESSMENT_NODE , FEASIBILITY_ASSESSMENT_NODE , END , END , SQL_EXECUTE_NODE ,
227+ SQL_EXECUTE_NODE ))
218228 .addConditionalEdges (SEMANTIC_CONSISTENCY_NODE , edge_async (new SemanticConsistenceDispatcher ()),
219229 Map .of (SQL_GENERATE_NODE , SQL_GENERATE_NODE , PLAN_EXECUTOR_NODE , PLAN_EXECUTOR_NODE ));
220230
221231 GraphRepresentation graphRepresentation = stateGraph .getGraph (GraphRepresentation .Type .PLANTUML ,
222232 "workflow graph" );
223233
224- log .info ("\n \n " );
225- log .info (graphRepresentation .content ());
226- log .info ("\n \n " );
234+ log .info ("workflow in PlantUML format as follows \n \n " + graphRepresentation .content () + "\n \n " );
227235
228236 return stateGraph ;
229237 }
0 commit comments