面向非技术 PM 的 Data Agent demo——从一句自然语言到一段 SQL,全程不接触真实数据。
在线体验:https://yur92607-cloud.github.io/Text-To-SQL/
单文件 HTML,浏览器打开即用。
打开链接后试这几个 chip:
| Chip | 演示什么 |
|---|---|
| 多轮澄清 | "去年王者荣耀的日活" → AI 反问澄清 → 回答后生成 SQL |
| 禁止编造 | "上周的狂热值" → AI 拒绝并推荐相近指标 |
| 权限拦截 | 切到 L3 → "上周 DAU" → 拒绝并推荐替代 |
| 多路径还原 | 切到 L2 → "昨天 GMV 和 ARPU" → 检测到可推 DAU 拦截 |
右上角 📐 整体流程 可以看完整架构图和 6 步流程。
┌──────────── Data Agent 三层底座 ────────────┐
│ │
│ 语义层 ──→ Harness ──→ 信息边界 │
│ 让 AI 让 AI 让 AI │
│ 正确理解 稳定使用 不越界返回 │
│ │
└──────────────────────────────────────────────┘
| 层 | 实现 |
|---|---|
| 语义层 | 8 张表 .md(语义模型)+ 3 个专题(业务方法论)+ 别名表(12 个指标的同义词) |
| Harness | 意图理解 / 多轮澄清 / RAG 召回 / 三道防线 / 三层记忆 |
| 信息边界 | 数据不出域 + L1/L2/L3 权限分级 + 多路径还原检测 + 零信息量拒绝 |
- 数据不出域——AI 只输出 SQL,全程不接触真实数据。安全边界从"事后做权限"前置到"产品形态"。
- 禁止编造——SQL 里每个字段、筛选值、计算逻辑必须能在知识库找到出处。找不到就问用户,不猜。
- 多轮澄清而不是直接生成——非技术用户的提问天然带歧义("去年" / "活跃" / "用户"),主动反问比直接生成错的 SQL 更安全。
- 按工作场景授权——不按单指标授权,按业务场景(用户增长 / 商业化 / 内容运营),并显式登记指标 DAG,防止低权限指标组合反推高敏指标。
Text-To-SQL/
├── index.html 在线 Demo(GitHub Pages 入口)
├── README.md
│
├── app.py 本地完整版 Flask 后端
├── requirements.txt
├── 启动.sh 一键启动脚本
├── core/ 核心代码(4 个模块)
├── knowledge/ 知识库
│ ├── tables/ 8 张表语义 .md
│ ├── topics/ 3 个专题 .md
│ ├── glossary.json 业务术语别名表
│ └── permissions.json 权限矩阵
│
├── data/seed.py 模拟数据生成
├── memory/ LEARNINGS.md 自动维护
├── docs/ 6 份分模块设计文档
└── 项目介绍-怎么做的.docx
https://yur92607-cloud.github.io/Text-To-SQL/
任何浏览器打开就能用。
git clone https://github.com/yur92607-cloud/Text-To-SQL.git
cd Text-To-SQL
./启动.sh
# 访问 http://127.0.0.1:5050| 在线 Demo | 完整本地版 |
|---|---|
| 单文件 HTML + 原生 JS | Python + Flask |
| 知识库内联(JSON) | 文件系统读取 |
| Mock LLM(规则模拟) | Mock LLM(同) |
| 离线运行 | 本地端口 5050 |
docs/ 目录下分了 6 份:
也可以直接看 项目介绍-怎么做的.docx。
- 作者:俞锐
- 背景:港中深统计学硕士;前 Notta AI 数据科学;前腾讯 IEG 数据产品经理
- 联系:yr92607@gmail.com
- 同期项目:ai-radar-agent