|
自然语言查询 用中文描述需求,自动生成并执行只读 SQL,返回结构化结果。 |
自动分析链路 查询结果自动衔接 Python 分析与图表生成,一次提问完成完整分析。 |
|
语义层 定义业务术语(GMV、客单价等),AI 查询时自动引用,消除歧义。 |
Schema 关系视图 可视化拖拽建立表间 JOIN 关系,AI 自动使用正确的关联路径。 |
flowchart LR
query["自然语言提问"] --> context["结合语义层与 Schema 理解需求"]
context --> sql["生成只读 SQL"]
sql --> execute["执行查询"]
execute --> result["返回结果与总结"]
result --> decision{"需要进一步分析或图表?"}
decision -->|是| python["Python 分析与图表"]
decision -->|否| done["结束"]
python --> done
execute -->|SQL 出错| repair_sql["自动修复并重试"]
python -->|Python 出错| repair_py["自动修复并重试"]
repair_sql --> sql
repair_py --> python
Schema 关系视图
语义层配置
git clone git@github.com:MKY508/QueryGPT.git
cd querygpt| macOS | Linux | Windows |
|---|---|---|
|
方式 A — 宿主机直接运行 需要 Python 3.11+ 和 Node.js LTS ./start.sh方式 B — Docker docker compose up --build |
方式 A — 宿主机直接运行 需要 Python 3.11+ 和 Node.js LTS ./start.sh方式 B — Docker 需要 Docker Engine docker compose up --build |
推荐 — Docker Desktop Windows 用户建议使用 Docker,仓库不再维护 安装 Docker Desktop,然后: docker compose up --build备选 — WSL2 安装 WSL2 后,在 WSL 终端中按 Linux 方式运行 |
启动后访问 http://localhost:3000:
- 在设置页添加模型(填入 provider 和 API Key)
- 使用内置的
示例数据库,或添加自己的 SQLite / MySQL / PostgreSQL 连接 - 按需设置默认模型、默认连接和上下文轮数
- 回到聊天页开始提问
项目内置 SQLite 示例库
demo.db,空工作区启动时会自动补回示例连接。
配置说明
支持 OpenAI-compatible、Anthropic、Ollama、Custom 网关。可配置项:
| 字段 | 说明 |
|---|---|
provider |
模型提供方 |
base_url |
API 端点 |
model_id |
模型标识 |
api_key |
密钥(Ollama 或无需鉴权的网关可启用可选模式) |
extra headers |
自定义请求头 |
query params |
自定义查询参数 |
api_format |
API 格式 |
healthcheck_mode |
健康检查方式 |
支持 SQLite、MySQL、PostgreSQL。系统只允许执行只读 SQL。
内置 SQLite 示例库:
- 路径:
apps/api/data/demo.db - 默认连接名:
示例数据库
启动脚本
./start.sh # 宿主机模式:检查环境、安装依赖、初始化数据库、启动前后端
./start.sh setup # 宿主机模式:仅安装环境
./start.sh stop # 停止宿主机模式服务
./start.sh restart # 重启宿主机模式服务
./start.sh status # 查看宿主机模式状态
./start.sh logs # 查看宿主机模式日志
./start.sh doctor # 宿主机模式环境诊断
./start.sh test all # 宿主机模式运行全部测试
./start.sh cleanup # 清理宿主机模式临时状态补装分析依赖(scikit-learn、scipy、seaborn):
./start.sh install analytics可选环境变量:
QUERYGPT_BACKEND_RELOAD=1 ./start.sh # 后端热重载
QUERYGPT_BACKEND_HOST=0.0.0.0 ./start.sh # 监听所有网卡Docker 开发
Windows 开发环境现在统一建议使用 Docker;仓库不再维护 start.ps1 / start.bat。
默认开发栈会启动:
web:Next.js 开发服务器(热更新)api:FastAPI 开发服务器(--reload)db:PostgreSQL 16
docker-compose up --build # 前台启动全部服务
docker-compose up -d --build # 后台启动全部服务
docker-compose down # 停止并移除容器
docker-compose down -v --remove-orphans # 连数据卷一起清理
docker-compose ps # 查看状态
docker-compose logs -f api web # 查看前后端日志
docker-compose restart api web # 重启前后端
docker-compose up db # 仅启动数据库
docker-compose run --rm api ./run-tests.sh
docker-compose run --rm web npm run type-check
docker-compose run --rm web npm test说明:
- 默认浏览器访问
http://localhost:3000 - 默认后端访问
http://localhost:8000 - PostgreSQL 暴露在
localhost:5432 - 依赖变更后请继续使用
docker-compose up --build - 若本机安装了 Docker Compose 插件,也可以把以上命令替换成
docker compose ...
本地开发(宿主机模式)
cd apps/api
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
uvicorn app.main:app --reload --host 127.0.0.1 --port 8000cd apps/web
npm install
npm run dev后端 apps/api/.env:
DATABASE_URL=sqlite+aiosqlite:///./data/querygpt.db
ENCRYPTION_KEY=your-fernet-key前端 apps/web/.env.local:
NEXT_PUBLIC_API_URL=http://localhost:8000
# 可选:仅 Docker / 容器内 Next rewrite 使用
# INTERNAL_API_URL=http://api:8000# 前端
cd apps/web && npm run type-check && npm test && npm run build
# 后端
./apps/api/run-tests.sh当前 GitHub Actions 分成两层:
- 快速层:后端
ruff + mypy(聊天/配置主链路) + pytest,前端lint + type-check + vitest + build - 集成层:Docker 全栈启动、Playwright 烟测、
start.sh宿主机烟测、SQLite / PostgreSQL / MySQL 连接测试、模型测试假网关
本地复现常用命令:
# Docker 全栈
docker compose -f docker-compose.yml -f docker-compose.ci.yml up -d --build
# 后端集成测试(需先准备 PostgreSQL / MySQL / mock gateway 环境变量)
cd apps/api && pytest tests/test_config_integration.py -v
# 后端主链路类型检查
cd apps/api && mypy --config-file mypy.ini
# 前端浏览器烟测(需自行启动应用)
cd apps/web && npm run test:e2e部署
仓库自带 render.yaml,可直接用于 Render Blueprint 部署。
推荐部署到 Vercel:
- Root Directory:
apps/web - Environment Variable:
NEXT_PUBLIC_API_URL=<your-api-url>
- 只允许只读 SQL,不支持写操作
- 自动修复覆盖 SQL、Python、图表配置等可恢复错误
/chat/stop按单实例语义设计- 开发环境建议使用 Node.js LTS;如
next dev异常,先清理apps/web/.next
MIT


