告别传统 Text-to-SQL:基于 Spring AI Alibaba 的数据分析智能体 DataAgent 深度解析
作者:赵雁松,周岩珏,李志强,周永康,刘军 在企业数字化转型的浪潮中,我们发现很多公司依然面临着“数据深渊”:业务人员想看数据,却受限于复杂的 SQL 语法;开发者虽然尝试了 Text-to-SQL,但生成的代码逻辑常有偏差,同时也无法应对复杂的统计分析、根因定位等场景。 DataAgent 应运而生。 这不是简单的指令翻译器,而是我们基于 Spring AI Alibaba 生态构建的一位“虚拟 AI 数据分析师”。它能够像专家一样思考、规划、纠错,并最终输出一份带图表、带逻辑、带深度洞察的行业级报告。 从架构上,DataAgent 是一款基于 Spring AI Alibaba 生态构建的、面向企业级复杂场景的“虚拟 AI 数据分析师”。它通过 Spring AI Alibaba Graph & Agent Framework 构建了一套具备自我规划、工具调用、反思纠错及人类干预能力的数据智能体(Agent),通过 graph、multi-agent 模式将确定性流程与模型推理结合在一起,搭建了一套兼具流程确定性与智能化的数据智能体产品。 我们不只是在写代码,而是在解决企业数据决策中的“深水区”难题。以下是 DataAgent 攻克研发痛点、实现架构突破的几大核心战役。 解决方案: 解决方案: 解决方案: 解决方案: 解决方案: 解决方案: 解决方案: 解决方案: 解决方案: 解决方案: DataAgent 的核心价值在于,它不仅仅是完成了一次查询,而是将“数据处理的工程化”与“大模型的推理能力”深度结合。结合 Spring AI Alibaba 的 Graph 编排与 Agentic 推理能力,DataAgent 将确定性流程与模型推理结合在一起,将原本碎片化的分析过程,转化为了兼具流程确定性与智能化的数据智能体。 未来,数据不再是冷冰冰的行列,而是每一位业务决策者都能随手调用的“智库”。 想了解更多关于 DataAgent 的技术实现细节? 欢迎搜索钉钉群,群号: 154405001431,加入我们的开发者讨论群,共同探索 AI 的无限可能!前言:AI 数据分析的“最后一公里”
降维打击:为什么 DateAgent 不止是 Text-to-SQL?

整体架构

核心黑科技:DateAgent 是如何解决企业难题的?
4.1 人类反馈机制 (Human-In-The-Loop)
humanFeedback=true(GraphController → GraphServiceImpl)。agent.human_review_enabled 用于保存配置,运行时以请求参数为准。PlanExecutorNode 检测 HUMAN_REVIEW_ENABLED,转入 HumanFeedbackNode。

4.2 Prompt 动态配置与自动优
/api/prompt-config/*,数据表 user_prompt_config。agentId 绑定或全局配置(agentId 为空)。report-generator、planner、sql-generator、python-generator、rewrite。ReportGeneratorNode 拉取启用配置(按 priority 与 display_order 排序),通过 PromptHelper.buildReportGeneratorPromptWithOptimization 拼接“优化要求”。

4.3 深度 RAG 与混合检索增强
EvidenceRecallNode 将多轮上下文与用户问题组装为检索指令,调用 LLM 生成 standaloneQuery,避免上下文遗漏与歧义。AgentVectorStoreService 作为统一入口,默认走向量检索;开启混合检索后走 AbstractHybridRetrievalStrategy,将“向量召回 + 关键词召回”进行融合。(用户需要提供混合检索实现。当前默认只支持 es)DynamicFilterService 生成基于智能体与知识类型的过滤条件,限制检索范围,避免跨智能体串库。business_knowledge)+ 智能体知识(agent_knowledge)两类,按 agentId/type 元数据过滤后合并为 evidence,注入后续 prompt。spring.ai.alibaba.data-agent.vector-store.enable-hybrid-search 控制是否开启混合检索;相似度阈值与 TopK 通过向量库配置项控制(如 top-k、similarity-threshold)。EvidenceRecallNode 输出内容进入后续规划于 SQL 生成阶段。

4.4 容器化 Python 执行引擎
PythonGenerateNode 根据计划与 SQL 结果生成 Python。PythonExecuteNode 使用 CodePoolExecutorService(Docker/Local/AI 模拟)。spring.ai.alibaba.data-agent.code-executor.*(默认 Docker 镜像 continuumio/anaconda3:latest)。PYTHON_EXECUTE_NODE_OUTPUT,PythonAnalyzeNode 汇总后写入 SQL_EXECUTE_NODE_OUTPUT,用于最终报告。

4.5 流式输出 (SSE) 与多轮对话管理
GraphController SSE + GraphServiceImpl 流式处理。TextType 在流中标记 SQL/JSON/HTML/Markdown,前端据此渲染。MultiTurnContextManager 记录“用户问题+规划结果”,注入到后续请求。spring.ai.alibaba.data-agent.llm-service-type 支持 STREAM/BLOCK。

4.6 MCP 服务器发布与多模型调度
McpServerService 提供 NL2SQL 与 Agent 列表工具,使用 Mcp Server Boot Starter。ModelConfig 配置模型,AiModelRegistry 缓存当前 Chat/Embedding 模型并支持热切换(同一时间每类仅一个激活模型)。nl2SqlToolCallback、listAgentsToolCallback。

4.7 多数据源接入
datasource,智能体绑定写入 agent_datasource,选表写入 agent_datasource_tables,逻辑外键写入 logical_relation。BizDataSourceTypeEnum 定义数据源类型;对应的 Accessor + DBConnectionPool 负责不同数据库协议与方言的访问。AgentDatasourceController 触发初始化,SchemaService 通过 AccessorFactory 拉取表/列/外键并写入向量库。DatabaseUtil 从当前智能体获取激活数据源,动态选择 Accessor 执行 SQL。AgentDatasourceService.toggleDatasourceForAgent)。

4.8 报告生成与摘要建议
ReportGeneratorNode 读取计划、SQL/Python 结果与摘要建议(summary_and_recommendations)。plainReport=true 输出 Markdown(简洁报告)。
4.9 NL2SQL 转换, 语义模型,逻辑外键引擎
SqlGenerateNode 生成后接 SemanticConsistencyNode 检查语义一致性。SqlExecuteNode 捕获执行错误并反馈给 Graph 状态机,触发重定向至重写节点进行纠错。4.10 API Key 与权限管理
AgentController 支持生成、重置、删除与启用/禁用 API Key。agent.api_key 与 agent.api_key_enabled。X-API-Key。spring.ai.alibaba.data-agent.api-key.enabled=true。

结语:让数据价值触手可及
相关资源: