零代码查数据库:5分钟搭好你的自然语言转SQL提示词
【免费下载链接】coursesAnthropic's educational courses项目地址: https://gitcode.com/GitHub_Trending/cours/courses
周五下午,运营来要"近7天奶茶品类复购订单数",工单一提就是一周。这套 NL2SQL(自然语言转SQL)提示词能救急:按 courses 项目的教程,把表结构、规则和示例填进 SQL 生成提示词模板,模型直接产出可执行查询,业务同学零代码查数据库。
先给成品:最小 NL2SQL 提示词模板直接抄
说白了,NL2SQL 就是把你那句"近7天复购多少单"翻译成一条能跑的查询语句。下面这份模板抄下来,表结构换成你自己的就能用。
你是SQL生成器。只输出SELECT查询,包在sql代码块里;修改类请求一律拒绝。 库结构(字段照抄,禁止自创): users(id, name, city, join_date) orders(id, user_id, amount, status, created_at),user_id关联users.id products(id, name, category, price) 术语:「最新」=created_at在最近7天内 打样:"上周上海下单用户数" → SELECT COUNT(DISTINCT u.id) FROM orders o JOIN users u ON o.user_id=u.id WHERE u.city='上海' AND o.created_at>=CURDATE()-7怎么用:前5行按你的真实库替换,一行一张表,关联列顺手写在那行末尾。第7行的打样换成你自己库里最典型的一道题就行。正式接入前,先用只读账号把模型生成的 SQL 跑一遍验证。
这个模板为什么有效
先交代它在系统里的位置:应用把提示词连同工具一起发给模型,模型回一句"我要调用查询工具",你执行后把结果喂回去,模型再组织成答案。SQL生成器就是下图里的 Tool 函数。
表结构写全:字段名一个都别省
模型不翻你的库,它只认提示词里写了什么。表、字段、哪两列对得上,缺一个都算埋雷。
反例:只列三个表名就完事,模型会自信地给你捏出个不存在的phone字段,SQL 一跑就报列不存在。
安全约束怎么写:只读规则放第一条
规则第一行就写死"只输出SELECT,修改类请求一律拒绝"。模型是听话的打工仔,你不说No,它就照做。
反例:没写护栏时你问"把测试订单删了吧",它恭恭敬敬递来一条 DELETE,手快粘进控制台就回不来了。
示例怎么挑:给模型打样,贴着边界来
打样就像让新员工看老员工的作业,模型会照着你的路子走。所以挑一道带 JOIN、带时间条件的三表题来示范,比堆三句单表查询有用。
反例:打样全是单表查询,模型碰到三表题也会硬塞进一个 FROM 里,JOIN 直接给你漏掉。
落地最常翻车的3个坑
⚠️ 「最新」各想各的:时间词必须定义
现象:你问"最新订单",它按 created_at 倒序只取一条;你心里想的是最近7天。
根因:时间词是模型的自由发挥区,不定义它就自己编一个。
改法:在提示词里加一行术语表,比如「最新」=最近7天。
⚠️ 三表JOIN写不对:关系说明不能省
现象:跨表查询的 ON 条件经常张冠李戴,严重的直接输出笛卡尔积。
根因:你只给了表,没说哪两列是一对,模型只能猜。
改法:在 orders 那行末尾直接注明user_id关联users.id,一行解决。
⚠️ 偷偷输出写操作:护栏要放第一条
现象:你只问订单状态,回复末尾跟了句"建议执行DELETE清理脏数据"。
根因:没写安全边界,而模型的默认行为就是顺着用户来。
改法:把"只输出SELECT"钉在规则第一条,让它没机会发挥。
五分钟上手清单:从零到跑通
- 导出2~3 张核心表的真实结构,找数据同学要就行,不用全库。
- 填空把表结构贴进模板,关联列在行尾顺手注明。
- 加护栏补上只读规则和术语表,「最新」这类词都要给定义。
- 试跑先问"上海有多少用户"热身,再抛一道三表JOIN题,错了就改词重跑。
- 接只读库生成的 SQL 一律先过只读账号验证,再进你的工具调用流程。
跑通几道之后,建议把典型问题攒成评测集:输入、期望结果、打分标准一列开,提示词改没改坏一眼就能看出来。
表结构、护栏、一个打样,三样齐了,取数就不用再排队。想深入调用流程看工具调用教程,练基本功翻提示工程教程。现在就把模板抄下来,填上你的真实表结构跑一遍。
【免费下载链接】coursesAnthropic's educational courses项目地址: https://gitcode.com/GitHub_Trending/cours/courses
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考