数据分析 Agent 如何支持「对话式分析「
配图(无描述)
1️⃣ 考察意图
面试官想看你能否让数据分析像聊天一样自然——用户不需要写 SQL 或操作 BI 工具,用自然语言层层深入分析。
2️⃣ 标准答
对话式分析的核心是"上下文继承 + SQL 增量修改 + 智能引导":
- 上下文继承:保留最近 5 轮查询的 SQL + 结果摘要。用户说"按品类拆分"时,Agent 从历史中找到上月销售额的 SQL,在其基础上添加
GROUP BY category - SQL 增量修改:不是从零生成新 SQL,而是用 sqlglot 解析前一个 SQL 的 AST,修改特定节点(如添加 GROUP BY / WHERE 条件 / JOIN 表)。比从零生成准确率高 20%+
- 智能引导:每次结果后建议 2-3 个"下一步分析方向"。如查完"销售额"→建议"按品类拆分"/"对比上月"/"TOP10客户"
- 可视化联动:对话中自动生成图表。用户说"画个趋势图"→Agent 生成折线图
- 回溯能力:用户可以"回到第3步看那个数据"→Agent 恢复第3轮的查询结果
3️⃣ 答题模板
"上下文继承5轮+SQL增量修改(AST级修改比从零生成准确率高20%)+智能引导(每次建议2-3个下一步)+可视化联动+回溯能力。核心:对话式分析不是'每次从零开始'而是'在前序结果上增量深入'。"
4️⃣ 高频追问
追问:SQL 增量修改具体怎么实现?
用 sqlglot 解析前一个 SQL 为 AST → 定位修改节点(如 SELECT 列表添加
category、添加GROUP BY category)→ 重新生成 SQL。比让 LLM 从零生成新 SQL 准确率高 20%,因为保留了前序查询的正确部分。如果增量修改失败(AST 操作复杂),回退到从零生成
5️⃣ 避坑
- ❌ "每轮对话独立生成SQL" → ✅ "独立生成丢失上下文('按品类拆分'无法理解)。需要上下文继承+SQL增量修改。"
6️⃣ 简历呼应
- 用 LangChain + sqlglot 实现对话式分析原型,测试增量修改 vs 从零生成的准确率差异
- "Conversational Text-to-SQL" (Flores et al., 2023)
—— 本场面试完 ——