DataAgent Pro 是一个基于 LangGraph 和 Docker 构建的智能数据分析助手。它不仅能根据用户需求自动编写 Python 代码处理数据,还能在代码运行报错时通过“自省”机制进行自动修复(Self-Healing),直到输出正确的结果。
所有的代码执行都在完全隔离的 Docker 容器中完成,确保了宿主机的安全。
- 🔄 自进化修复 (Self-Healing):基于 LangGraph 的状态机架构,当生成的代码运行报错时,Agent 会捕捉 Traceback 自动重试并修正逻辑。
- 🐳 安全沙箱 (Secure Sandbox):利用 Docker 容器技术,所有 LLM 生成的代码均在隔离环境中运行,防止误删文件或恶意指令。
- 🔍 智能元数据探测 (Data Profiling):自动分析 CSV/Excel 结构,识别列名、数据类型及样例,为 LLM 提供精准的上下文。
- 📊 自动化可视化 (Auto-Visualization):根据数据分布自动选择最优图表(柱状图、折线图等)并生成高清 PNG。
- 👁️ 可观测性 (Observability):集成 Arize Phoenix,全链路追踪 Agent 的思考路径、Token 消耗与节点流转。
- 🚀 现代 UI 交互:基于 Streamlit 构建的 Web 界面,支持文件拖拽上传与实时思维链展示。
本项目采用 感知 -> 计划 -> 执行 -> 反思 的闭环控制流:
- Metadata Inspector: 读取原始文件,提取 Schema。
- Coder Node (LLM): 根据 Schema 和需求生成 Pandas 处理代码。
- Docker Executor: 启动容器,挂载数据,执行代码并采集日志/图表。
- Should Continue (Logic): 判断是否报错。若报错,将错误信息反馈给 Coder 重写;若成功,输出结果。
git clone https://github.com/your-username/data-agent-pro.git
cd data-agent-pro建议使用虚拟环境:
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt确保你已启动 Docker Desktop:
docker build -t data-agent-runtime:latest ./docker在根目录创建 .env 文件,填入你的 API Key:
# 使用通义千问 (Qwen) 示例
DASHSCOPE_API_KEY=sk-xxxx
QWEN_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
# 或者使用 OpenAI
# OPENAI_API_KEY=sk-xxxxstreamlit run app.py- 上传数据:拖入一个混乱的房产信息 CSV。
- 输入指令:"分析深圳和珠海单价最高的房源,并对比各城市平均房价,处理掉异常值。"
- 观察自修复:如果 Agent 第一次写的代码没考虑大小写统一(如
Shenzhenvsshenzhen),它会在发现结果偏差或报错后自动修正代码。 - 获取结果:在界面直接查看统计表格与 Matplotlib 生成的图表。
├── core/
│ ├── graph/ # LangGraph 状态机定义 (State, Nodes, Workflow)
│ ├── prompts/ # 提示词模板
│ └── tools/ # 核心工具 (Docker沙箱、元数据探测)
├── docker/ # Dockerfile 与 运行环境镜像配置
├── tests/ # 单元测试与 Docker 验证脚本
├── app.py # Streamlit Web 界面
├── main.py # 逻辑入口封装
├── generate_test_data.py # 测试数据生成器
└── .env.example # 环境变量模板
- LLM: Qwen-Max / GPT-4o
- Orchestration: LangGraph
- Sandbox: Docker SDK for Python
- Observability: Arize Phoenix
- Frontend: Streamlit
- Data: Pandas, Matplotlib
欢迎提交 Issue 或 Pull Request!
- Fork 本项目
- 创建你的特性分支 (
git checkout -b feature/AmazingFeature) - 提交你的改动 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启一个 Pull Request
本项目遵循 MIT License 协议。
⭐️ 如果这个项目对你有帮助,请给一个 Star!