|
15 | 15 | */ |
16 | 16 | package com.alibaba.cloud.ai.dataagent.config; |
17 | 17 |
|
| 18 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.AGENT_ID; |
| 19 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.COLUMN_DOCUMENTS__FOR_SCHEMA_OUTPUT; |
| 20 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.DB_DIALECT_TYPE; |
| 21 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.EVIDENCE; |
| 22 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.EVIDENCE_RECALL_NODE; |
| 23 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.FEASIBILITY_ASSESSMENT_NODE; |
| 24 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.FEASIBILITY_ASSESSMENT_NODE_OUTPUT; |
| 25 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.GENEGRATED_SEMANTIC_MODEL_PROMPT; |
| 26 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.HUMAN_FEEDBACK_DATA; |
| 27 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.HUMAN_FEEDBACK_NODE; |
| 28 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.HUMAN_REVIEW_ENABLED; |
| 29 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.INPUT_KEY; |
| 30 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.INTENT_RECOGNITION_NODE; |
| 31 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.INTENT_RECOGNITION_NODE_OUTPUT; |
| 32 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.IS_ONLY_NL2SQL; |
| 33 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.MULTI_TURN_CONTEXT; |
| 34 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.NL2SQL_GRAPH_NAME; |
| 35 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PLANNER_NODE; |
| 36 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PLANNER_NODE_OUTPUT; |
| 37 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PLAN_CURRENT_STEP; |
| 38 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PLAN_EXECUTOR_NODE; |
| 39 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PLAN_NEXT_NODE; |
| 40 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PLAN_REPAIR_COUNT; |
| 41 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PLAN_VALIDATION_ERROR; |
| 42 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PLAN_VALIDATION_STATUS; |
| 43 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PYTHON_ANALYSIS_NODE_OUTPUT; |
| 44 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PYTHON_ANALYZE_NODE; |
| 45 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PYTHON_EXECUTE_NODE; |
| 46 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PYTHON_EXECUTE_NODE_OUTPUT; |
| 47 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PYTHON_FALLBACK_MODE; |
| 48 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PYTHON_GENERATE_NODE; |
| 49 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PYTHON_GENERATE_NODE_OUTPUT; |
| 50 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PYTHON_IS_SUCCESS; |
| 51 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.PYTHON_TRIES_COUNT; |
| 52 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.QUERY_ENHANCE_NODE; |
| 53 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.QUERY_ENHANCE_NODE_OUTPUT; |
| 54 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.REPORT_GENERATOR_NODE; |
| 55 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.RESULT; |
| 56 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.SCHEMA_RECALL_NODE; |
| 57 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.SEMANTIC_CONSISTENCY_NODE; |
| 58 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.SEMANTIC_CONSISTENCY_NODE_OUTPUT; |
| 59 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.SQL_EXECUTE_NODE; |
| 60 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.SQL_EXECUTE_NODE_OUTPUT; |
| 61 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.SQL_GENERATE_COUNT; |
| 62 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.SQL_GENERATE_NODE; |
| 63 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.SQL_GENERATE_OUTPUT; |
| 64 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.SQL_GENERATE_SCHEMA_MISSING_ADVICE; |
| 65 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.SQL_REGENERATE_REASON; |
| 66 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.SQL_RESULT_LIST_MEMORY; |
| 67 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.TABLE_DOCUMENTS_FOR_SCHEMA_OUTPUT; |
| 68 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.TABLE_RELATION_EXCEPTION_OUTPUT; |
| 69 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.TABLE_RELATION_NODE; |
| 70 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.TABLE_RELATION_OUTPUT; |
| 71 | +import static com.alibaba.cloud.ai.dataagent.constant.Constant.TABLE_RELATION_RETRY_COUNT; |
| 72 | +import static com.alibaba.cloud.ai.graph.StateGraph.END; |
| 73 | +import static com.alibaba.cloud.ai.graph.StateGraph.START; |
| 74 | +import static com.alibaba.cloud.ai.graph.action.AsyncEdgeAction.edge_async; |
| 75 | + |
18 | 76 | import com.alibaba.cloud.ai.dataagent.properties.CodeExecutorProperties; |
19 | 77 | import com.alibaba.cloud.ai.dataagent.properties.DataAgentProperties; |
20 | | -import com.alibaba.cloud.ai.dataagent.properties.FileStorageProperties; |
| 78 | +import com.alibaba.cloud.ai.dataagent.service.aimodelconfig.AiModelRegistry; |
21 | 79 | import com.alibaba.cloud.ai.dataagent.service.vectorstore.SimpleVectorStoreInitialization; |
22 | | -import com.alibaba.cloud.ai.dataagent.splitter.SentenceSplitter; |
23 | | -import com.alibaba.cloud.ai.transformer.splitter.RecursiveCharacterTextSplitter; |
24 | | -import com.alibaba.cloud.ai.dataagent.splitter.SemanticTextSplitter; |
25 | 80 | import com.alibaba.cloud.ai.dataagent.splitter.ParagraphTextSplitter; |
| 81 | +import com.alibaba.cloud.ai.dataagent.splitter.SemanticTextSplitter; |
| 82 | +import com.alibaba.cloud.ai.dataagent.splitter.SentenceSplitter; |
| 83 | +import com.alibaba.cloud.ai.dataagent.strategy.EnhancedTokenCountBatchingStrategy; |
26 | 84 | import com.alibaba.cloud.ai.dataagent.util.McpServerToolUtil; |
27 | 85 | import com.alibaba.cloud.ai.dataagent.util.NodeBeanUtil; |
28 | | -import com.alibaba.cloud.ai.dataagent.service.aimodelconfig.AiModelRegistry; |
29 | | -import com.alibaba.cloud.ai.dataagent.strategy.EnhancedTokenCountBatchingStrategy; |
30 | | -import com.alibaba.cloud.ai.dataagent.workflow.dispatcher.*; |
31 | | -import com.alibaba.cloud.ai.dataagent.workflow.node.*; |
| 86 | +import com.alibaba.cloud.ai.dataagent.workflow.dispatcher.FeasibilityAssessmentDispatcher; |
| 87 | +import com.alibaba.cloud.ai.dataagent.workflow.dispatcher.HumanFeedbackDispatcher; |
| 88 | +import com.alibaba.cloud.ai.dataagent.workflow.dispatcher.IntentRecognitionDispatcher; |
| 89 | +import com.alibaba.cloud.ai.dataagent.workflow.dispatcher.PlanExecutorDispatcher; |
| 90 | +import com.alibaba.cloud.ai.dataagent.workflow.dispatcher.PythonExecutorDispatcher; |
| 91 | +import com.alibaba.cloud.ai.dataagent.workflow.dispatcher.QueryEnhanceDispatcher; |
| 92 | +import com.alibaba.cloud.ai.dataagent.workflow.dispatcher.SQLExecutorDispatcher; |
| 93 | +import com.alibaba.cloud.ai.dataagent.workflow.dispatcher.SchemaRecallDispatcher; |
| 94 | +import com.alibaba.cloud.ai.dataagent.workflow.dispatcher.SemanticConsistenceDispatcher; |
| 95 | +import com.alibaba.cloud.ai.dataagent.workflow.dispatcher.SqlGenerateDispatcher; |
| 96 | +import com.alibaba.cloud.ai.dataagent.workflow.dispatcher.TableRelationDispatcher; |
| 97 | +import com.alibaba.cloud.ai.dataagent.workflow.node.EvidenceRecallNode; |
| 98 | +import com.alibaba.cloud.ai.dataagent.workflow.node.FeasibilityAssessmentNode; |
| 99 | +import com.alibaba.cloud.ai.dataagent.workflow.node.HumanFeedbackNode; |
| 100 | +import com.alibaba.cloud.ai.dataagent.workflow.node.IntentRecognitionNode; |
| 101 | +import com.alibaba.cloud.ai.dataagent.workflow.node.PlanExecutorNode; |
| 102 | +import com.alibaba.cloud.ai.dataagent.workflow.node.PlannerNode; |
| 103 | +import com.alibaba.cloud.ai.dataagent.workflow.node.PythonAnalyzeNode; |
| 104 | +import com.alibaba.cloud.ai.dataagent.workflow.node.PythonExecuteNode; |
| 105 | +import com.alibaba.cloud.ai.dataagent.workflow.node.PythonGenerateNode; |
| 106 | +import com.alibaba.cloud.ai.dataagent.workflow.node.QueryEnhanceNode; |
| 107 | +import com.alibaba.cloud.ai.dataagent.workflow.node.ReportGeneratorNode; |
| 108 | +import com.alibaba.cloud.ai.dataagent.workflow.node.SchemaRecallNode; |
| 109 | +import com.alibaba.cloud.ai.dataagent.workflow.node.SemanticConsistencyNode; |
| 110 | +import com.alibaba.cloud.ai.dataagent.workflow.node.SqlExecuteNode; |
| 111 | +import com.alibaba.cloud.ai.dataagent.workflow.node.SqlGenerateNode; |
| 112 | +import com.alibaba.cloud.ai.dataagent.workflow.node.TableRelationNode; |
32 | 113 | import com.alibaba.cloud.ai.graph.GraphRepresentation; |
33 | 114 | import com.alibaba.cloud.ai.graph.KeyStrategy; |
34 | 115 | import com.alibaba.cloud.ai.graph.KeyStrategyFactory; |
35 | 116 | import com.alibaba.cloud.ai.graph.StateGraph; |
36 | 117 | import com.alibaba.cloud.ai.graph.exception.GraphStateException; |
| 118 | +import com.alibaba.cloud.ai.transformer.splitter.RecursiveCharacterTextSplitter; |
37 | 119 | import com.knuddels.jtokkit.api.EncodingType; |
| 120 | +import java.time.Duration; |
| 121 | +import java.util.ArrayList; |
| 122 | +import java.util.HashMap; |
| 123 | +import java.util.List; |
| 124 | +import java.util.Map; |
| 125 | +import java.util.Optional; |
| 126 | +import java.util.concurrent.ExecutorService; |
| 127 | +import java.util.concurrent.LinkedBlockingQueue; |
| 128 | +import java.util.concurrent.ThreadFactory; |
| 129 | +import java.util.concurrent.ThreadPoolExecutor; |
| 130 | +import java.util.concurrent.TimeUnit; |
| 131 | +import java.util.concurrent.atomic.AtomicInteger; |
38 | 132 | import lombok.extern.slf4j.Slf4j; |
39 | 133 | import org.springframework.ai.embedding.BatchingStrategy; |
40 | 134 | import org.springframework.ai.embedding.EmbeddingModel; |
|
67 | 161 | import org.springframework.web.reactive.function.client.WebClient; |
68 | 162 | import reactor.netty.http.client.HttpClient; |
69 | 163 |
|
70 | | -import java.time.Duration; |
71 | | -import java.util.*; |
72 | | -import java.util.concurrent.*; |
73 | | -import java.util.concurrent.atomic.AtomicInteger; |
74 | | - |
75 | | -import static com.alibaba.cloud.ai.dataagent.constant.Constant.*; |
76 | | -import static com.alibaba.cloud.ai.graph.StateGraph.END; |
77 | | -import static com.alibaba.cloud.ai.graph.StateGraph.START; |
78 | | -import static com.alibaba.cloud.ai.graph.action.AsyncEdgeAction.edge_async; |
79 | | - |
80 | 164 | /** |
81 | 165 | * DataAgent的自动配置类 |
82 | 166 | * |
|
86 | 170 | @Slf4j |
87 | 171 | @Configuration |
88 | 172 | @EnableAsync |
89 | | -@EnableConfigurationProperties({ CodeExecutorProperties.class, DataAgentProperties.class, FileStorageProperties.class }) |
| 173 | +@EnableConfigurationProperties({ CodeExecutorProperties.class, DataAgentProperties.class }) |
90 | 174 | public class DataAgentConfiguration implements DisposableBean { |
91 | 175 |
|
92 | 176 | /** |
|
0 commit comments