1. 项目概述
在数据科学领域,Jupyter Notebook已经成为数据分析师和研究人员不可或缺的工具。但每次面对新数据集时,我们都需要重复编写相似的预处理代码、可视化脚本和分析流程,这不仅效率低下,也容易出错。这个项目就是要解决这个痛点——通过构建一个基于prompt的智能数据分析Agent,让Jupyter Notebook具备自然语言交互能力,实现"用说话的方式做数据分析"。
我花了三个月时间迭代这个项目,最终实现了一个可以理解用户自然语言需求、自动生成并执行代码、还能根据结果优化后续分析的智能体。实测下来,它能够处理80%的常规数据分析任务,从数据清洗到特征工程,从统计分析到可视化呈现,整个过程就像有个专业的数据助手在帮你写代码。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心架构设计
2.1 系统组成模块
这个智能体由四个核心组件构成:
-
自然语言理解模块:基于微调的GPT模型,专门针对数据分析场景优化。我收集了超过5000条数据分析相关的对话语料进行训练,使其能准确识别诸如"帮我看看销售额的月度趋势"这类需求背后的分析意图。
-
代码生成引擎:采用分层设计:
- 第一层判断分析类型(统计/可视化/机器学习)
- 第二层选择具体算法(如折线图/柱状图)
- 第三层填充参数(时间字段、数值字段等)
-
执行环境桥接:通过Jupyter Kernel Gateway API实现代码注入和结果获取。这里有个关键技巧是维护一个会话级的变量状态表,避免重复计算。
-
反馈优化系统:当代码执行报错时,会自动分析错误日志并尝试修复。我实现了三种修复策略:
- 语法错误:直接修正
- 数据错误:建议预处理步骤
- 逻辑错误:要求用户澄清需求
2.2 关键技术选型
在模型选择上,我对比了多个方案:
| 模型类型 | 优点 | 缺点 | 最终选择 |
|---|---|---|---|
| GPT-3.5 | 通用性强 | 数据分析专业度不够 | ❌ |
| Codex | 代码生成优秀 | 不擅长需求理解 | ❌ |
| LLaMA-2微调 | 可定制化 | 需要大量训练数据 | ✅ |
| Claude Instant | 逻辑清晰 | 生成代码风格不一致 | ❌ |
最终选择LLaMA-2-13B作为基础模型,通过以下方式增强:
- 注入pandas/numpy等库的API文档
- 添加300个数据分析代码模板
- 使用RLHF优
