基于 Vite + React 前端和 Python FastAPI + LangGraph 后端的 BI 数据分析 Agent,支持 CSV 文件上传、自然语言查询、数据分析和可视化。
- 📊 CSV 文件上传和管理
- 💬 自然语言数据分析查询
- 🤖 LangGraph Agent 工作流
- 🔧 5 个数据分析工具(analyze_data, generate_chart, query_data, get_data_info, suggest_analysis)
- 📈 数据可视化(ECharts)
- 👀 实时 Agent 执行过程可视化
- 🔄 WebSocket 实时通信
close-bi/
├── frontend/ # Vite + React + TypeScript 前端
├── backend/ # Python FastAPI 后端
└── README.md
- 进入后端目录:
cd backend- 创建虚拟环境(推荐):
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate- 安装依赖:
pip install -r requirements.txt- 配置环境变量(
.env文件已创建,请确认 API Key):
DASHSCOPE_API_KEY=your_api_key
DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
UPLOAD_DIR=./uploads
- 启动后端服务:
python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000- 进入前端目录:
cd frontend- 安装依赖:
npm install- 启动开发服务器:
npm run dev- 打开浏览器访问:http://localhost:3000
- 上传 CSV 文件:点击或拖拽 CSV 文件到上传区域
- 发送查询:在输入框中输入自然语言查询,例如:
- "计算销售额总和"
- "按地区分组统计销售额"
- "显示前10行数据"
- "生成销售额的柱状图"
- 查看结果:Agent 会执行分析并返回结果,包括:
- 数据分析结果(表格、统计信息)
- 图表可视化
- Agent 执行过程(工具调用详情)
- BI Analysis Agent:主 Agent,协调整个数据分析流程
- analyze_data:使用 LLM 生成 pandas 代码并安全执行数据分析
- generate_chart:生成 ECharts 图表配置
- query_data:执行简单数据查询(head/tail/sample/describe/info)
- get_data_info:获取数据基本信息
- suggest_analysis:根据数据特征建议分析方向
前端:
- Vite + React + TypeScript
- ECharts(图表库)
- WebSocket API
- Axios(HTTP 客户端)
后端:
- FastAPI(异步 Web 框架)
- LangChain + LangGraph(Agent 框架)
- Pandas(数据处理)
- DashScope API(LLM 服务)
- Windows 系统下代码执行超时使用 threading 实现(signal.SIGALRM 不可用)
- WebSocket 连接需要保持活跃
- CSV 文件会保存在
backend/uploads/目录 - Agent 执行过程会实时通过 WebSocket 发送状态更新
MIT