Skill:本地智能数据分析助手
将自然语言问题转换为可执行的 SQL 查询,在本地完成数据分析与可视化,数据全程不出本机。
适用场景
- 分析本地 CSV/Excel 数据,无需上传到云端
- 用自然语言查询数据,降低 SQL 使用门槛
- 自动生成柱状图、折线图、饼图等可视化结果
- 销售数据、运营数据、日志数据的快速洞察
- 需要确保数据隐私安全的企业/个人分析场景
触发条件
当用户说出以下任意指令时,触发本技能:
- 数据分析 / 分析数据
- 自然语言查询数据
- CSV分析 / Excel分析
- NL转SQL
- 智能数据分析 / smart data analyst
- 数据可视化 / 生成图表
- 数据洞察 / 分析一下这个数据
输入参数
| 参数名 | 类型 | 是否必填 | 说明 | |--------|------|----------|------| | data_file | 字符串 | 必填 | 数据文件路径(.csv/.xlsx/.xls) | | question | 字符串 | 必填 | 自然语言查询问题 | | output | 字符串 | 选填 | 图表输出路径,默认自动生成 | | chart_type | 字符串 | 选填 | 图表类型(bar/line/pie/scatter),默认自动选择 |
执行步骤
- 接收用户传入的数据文件路径和自然语言问题
- 检查文件是否存在且格式合法(仅支持 .csv / .xlsx / .xls)
- 检查本地 NL 转 SQL 服务是否运行,不可用时自动降级为模板化方案
- 提取数据文件表结构信息
- 使用 LLM 将自然语言问题转换为 SQL(DuckDB 兼容语法)
- 在本地 DuckDB 中执行 SQL 查询(仅允许 SELECT)
- 自动根据查询结果选择最佳图表类型并生成可视化
- 整理结果:展示自然语言问题、生成的 SQL、查询结果摘要、图表路径
端到端推荐入口:
python scripts/analyze.py --data_file <文件> --question "<问题>" --output <输出>
分步替代方案:
- 仅 NL 转 SQL:
scripts/nl_to_sql.py --question "问题" --data_file data.csv - 仅执行 SQL:
scripts/data_query.py --data_file data.csv --sql "SELECT ..." - 仅生成图表:
scripts/visualize.py --data_file data.csv --sql "SELECT ..." --output chart.html
首次使用需启动 LLM 服务:
python scripts/start_server.py --model_path <模型路径> --port 8901 --device CPU
输出格式
以结构化文本展示结果,包含:
- 自然语言问题原文
- 生成的 SQL 语句
- 查询结果表格
- 图表文件路径(HTML/PNG/SVG)
错误处理
- 文件不存在:提示用户提供正确文件路径
- 格式不支持:提示用户转换为 CSV 或 Excel
- LLM 服务不可用:自动降级为模板化方案,告知用户覆盖范围降低
- 查询结果为空:建议用户调整问题或检查数据
- 破坏性 SQL(DROP/DELETE 等):拒绝执行,仅允许 SELECT 查询
- 脚本执行失败:返回简洁友好提示,不暴露底层报错
使用示例
示例1:端到端分析
用户输入:帮我分析一下 sales.csv,看看哪个区域销售额最高
执行:
python scripts/analyze.py --data_file sales.csv --question "哪个区域销售额最高" --output region_sales.html
AI 输出:
数据分析结果
问题:哪个区域销售额最高
SQL:SELECT region, SUM(total_amount) AS total_sales FROM sales_data GROUP BY region ORDER BY total_sales DESC LIMIT 1
结果:
| region | total_sales |
|--------|-------------|
| 华东 | 158000 |
图表:region_sales.html
示例2:仅 NL 转 SQL
用户输入:把这个自然语言问题转成 SQL - "每月订单数量统计"
AI 输出:生成的 SQL 语句及表结构信息
示例3:仅执行 SQL
用户输入:在 sales.csv 里执行 SELECT * FROM sales_data WHERE total_amount > 5000
AI 输出:JSON 格式查询结果
微信扫一扫