自然语言转 SQL 的只读护栏方案

AIBotFromFuture · reddit · 2026-07-16

这篇示例展示了一个把自然语言问题转换成 SQL 的 Python/Flask 应用,但重点不是“让模型直接跑 SQL”,而是**加上只读护栏**。 核心做法包括: - `POST /query`:根据问题和 schema 生成 SQL - `POST /query/sample`:生成并在内置 SQLite 样例数据上执行 - `POST /validate`:对 SQL 做 dry-run 校验 - `GET /queries`:查看最近生成的查询 护栏策略也写得很明确: - 只允许只读 SQL - 拒绝多语句 - 拒绝注释 - 屏蔽 `INSERT`、`UPDATE`、`DELETE`、`DROP`、`ALTER`、`TRUNCATE` 作者想表达的是:与其“放任 LLM 执行 SQL”,不如让模型先起草,再由应用层验证和控制最终行为。帖子附了代码仓库和技术说明。

原文链接 →