"2024年各城市销售额对比",输入这句话,3秒后图表自动呈现。不用写SQL,不用记表名,像和同事聊天一样查数据。
"2024年各城市销售额对比",输入这句话,3秒后图表自动呈现。不用写SQL,不用记表名,像和同事聊天一样查数据。
为什么做这个项目
很多企业都有大量业务数据,订单、客户、库存、财务,全存在数据库里。想从里头挖点洞察,通常得找技术人员写SQL,或者等IT部门排期出报表。一个简单问题,比如"上个月卖得最好的5个商品是谁",可能要等一两天才有答案。
我就想,能不能让每个人直接用自然语言问数据?
市面上的BI工具学习成本不低,Excel透视表也得练一阵,对非技术的人都不算友好。数据明明是公司的,问一句却这么难。

于是就动手做了Smart Data Analytics Agent(文末点击阅读原文免费获取项目完整源码),一个AI数据分析助手。你用中文提问,它自动理解意图、生成查询、执行分析、画图表,全程不用写一行代码。

它能做什么
自然语言提问,秒级出结果
输入问题就行,比如"2024年总销售额是多少"、"各商品类别的销售总额"、"销量TOP10的商品"。AI自动理解意图,去数据库找到对应数据,生成结果再用中文总结给你。

多轮对话,上下文连贯
它记得住你刚才说了什么。先问"2024年总销售额是多少",接着说"按月拆分呢",再说"换成柱状图"。AI能理解"拆分"和"换成"指的是上一轮的内容,不用重复描述。

图表自动生成,随时切换
每次查完,系统自动推荐最合适的图表类型,趋势数据用折线图,排名对比用柱状图,占比分析用饼图。你也可以手动切换,支持柱图、折线、饼图、散点、面积五种,一键导出图片。
会话管理,历史可溯
每个对话自动保存为会话,左侧栏一目了然。会话标题根据你的问题自动生成,比如"2024年各月销售额趋势"。历史会话能搜索,点开就完整恢复之前的对话和图表。
它是怎么做出来的
项目分三个阶段打磨。
第一阶段跑通核心链路。搭前后端框架,打通"用户提问→AI理解→SQL生成→数据查询→图表展示→中文总结"的完整流程,从零到一让一条查询跑通,先解决"能用"。
第二阶段完善使用体验。加了多轮上下文记忆、SQL自愈纠错(执行失败自动修复重试)、会话搜索、自动标题、错误友好提示这些功能,让日常用起来顺手。
SQL自愈纠错值得多说一句。AI生成的SQL偶尔会写错字段名或表名,一执行就报错。系统能捕获这个报错,把错误信息喂回给AI,让它自己改过来再跑一次,用户那边几乎感觉不到卡顿。

第三阶段做生产级优化。流式渲染优化(Token批量合并减少闪烁)、图表加载动画、大数据量虚拟滚动(5000行表格不卡)、数据库连接池和结果缓存(重复查询秒返回)、全链路日志追踪,让系统扛得住真实场景。
适合什么场景
企业管理者想快速了解经营数据,不想等IT出报表;业务运营要做日、周、月度复盘,频繁查各种维度;销售团队想实时看业绩排名、客户分布、品类占比;数据分析初学者想用自然语言探索数据,又不熟悉SQL。
如果你有类似痛点,有数据、有需求,却被"不会写SQL"挡在门外,这个方案可以直接套用。
技术架构一览
系统是前后端分离的。后端用Python + FastAPI,集成大语言模型(DashScope)做意图理解和SQL生成;前端用React + TypeScript + ECharts,三栏布局,会话列表、对话区、图表区。数据库用SQLite,也能换成MySQL或PostgreSQL。

核心是一个AI编排引擎,串起"意图规划→SQL生成→安全校验→执行查询→自愈纠错→图表生成→流式总结"七个环节,每个环节的中间过程都实时展示给用户,你能清楚看到AI在干什么。
其中安全校验这一环我很在意。SQL是AI生成的,万一它手一抖写个DROP TABLE删库,或者来个SELECT *把几百万行数据拉爆,后果不堪设想。所以加了一层AST级审查,禁删表、禁改数据、禁SELECT *、强制加LIMIT,不安全的SQL直接拦下重写。AI再聪明,也得戴这道枷锁。
最后几句
初衷很简单,让每个会用搜索引擎的人,都能做数据分析。
如果你对企业数据分析有类似需求,或者想在这个方案上定制开发(比如接入业务系统、对接企微/飞书、加权限管理),欢迎交流。源码已开源,可以作为起点快速搭一个你自己的AI数据分析助手。
夜雨聆风