Skip to content

Repository files navigation

ask-data-agent

7节点 DataAgent — 自然语言驱动 SQL 生成、Python 深度分析、结构化报告,全链路结果审计。

Python FastAPI LangGraph

项目简介

面向企业内部 BI 场景的自然语言数据分析 Agent。用中文提问,系统自动完成意图识别、知识检索、SQL 生成、执行、Python 深度分析、结构化报告生成、结果审计。全过程 SSE 流式推送到前端。

核心能力:

能力 说明
简单查询 自然语言 → SQL → 表格结果(轻量路径,15-30s)
复杂分析 多步计划 → SQL + Python → Markdown 报告 + ECharts 图表(40-80s)
结果审计 报告 vs SQL 结果自动对比,防止数据编造
人工审核 执行计划审批(通过/修改/拒绝),支持反馈修改
知识召回 智能 wiki 检索 + 表匹配 + 枚举提取
SQL 安全 语法校验 + 枚举值验证 + 时间边界检查 + DuckDB 方言修正
MCP 集成 支持 Claude Code 直接调用 query / analyze 两个工具

架构

简单查询: Intent → WikiRecall → Guard → DirectSQL → ResultsReview → END

复杂分析: Intent → WikiRecall → Guard → Planner → [HumanReview]
            → SQL/Python循环 → ReportGenerator → ResultsReview → END

详见 docs/architecture.mddocs/graph-diagram.md

快速启动

# 1. 安装依赖
pip install -e ".[dev]"

# 2. 准备数据
python scripts/setup_data.py

# 3. 配置密钥
cp .env.example .env    # 编辑 .env 填入 DEEPSEEK_API_KEY

# 4. 启动后端 (端口 8014)
python scripts/start_backend.py

# 5. 启动前端
cd web && npm install && npm run dev

# 6. 打开 http://localhost:5173

MCP 使用

# Claude Code 中直接使用
> 用 query 查一下 2017 年有多少订单
> 用 analyze 分析各州销售额和运费排名

.mcp.json 在项目根目录,自动加载。

数据集

Olist Brazilian E-commerce

行数 说明
orders 99,441 订单(时间/状态/交付)
order_items 112,650 订单明细(价格/运费/商品/卖家)
order_payments 103,886 支付(类型/分期/金额)
order_reviews 99,224 评论(评分/内容)
customers 99,441 客户(城市/州)
products 32,951 商品(品类/重量/尺寸)
sellers 3,095 卖家(城市/州)
geolocation 1,000,163 地理坐标
category_translation 71 品类翻译

技术栈

技术
前端 React + TypeScript + Vite + ECharts
后端 FastAPI + SSE + WebSocket
Agent LangGraph (7 节点 + 辅助)
LLM DeepSeek / Qwen / GLM
数据仓库 DuckDB (read-only)
知识检索 Markdown wiki + 正则匹配
Prompt 6 个 Jinja2 模板

目录结构

ask-data-agent/
├── agent/
│   ├── graph.py                # LangGraph 状态机
│   ├── state.py                # AgentState
│   ├── wiki.py                 # 知识库检索
│   ├── schema_ddl.py           # DuckDB DDL 生成
│   ├── stream_helper.py        # SSE 流式工具
│   └── nodes/
│       ├── preprocess.py       # Intent / WikiRecall / Guard
│       ├── planner.py          # 执行计划生成
│       ├── plan_executor.py    # 步骤分发
│       ├── direct_sql.py       # 简单查询路径
│       ├── sql_generate.py     # SQL 生成 + 执行
│       ├── python_nodes.py     # Python 生成/执行/分析
│       ├── report_generator.py # 报告生成
│       └── review.py           # 结果审计
├── api/
│   ├── main.py                 # FastAPI 入口
│   ├── dependencies.py         # 依赖注入(单例)
│   ├── sse.py                  # SSE 发射器
│   ├── mcp_server.py           # MCP Server
│   └── routes/
│       ├── chat.py             # WebSocket 聊天
│       ├── stream.py           # GET /api/stream/search (SSE)
│       └── report.py           # 报告下载
├── prompts/
│   └── templates/              # 6 个 Prompt 模板
├── connectors/
│   ├── llm/                    # DeepSeek / Qwen / GLM Provider
│   └── dw/                     # DuckDB Connector
├── wiki/                       # 知识库源文件与编译产物
├── web/                        # React 前端
├── scripts/                    # 数据准备、后端启动
├── docs/                       # 架构文档
├── config/                     # 应用配置
└── data/                       # DuckDB 数据文件 + 日志

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages