一、概述

本文介绍如何设计提示词,让大模型根据用户自然语言问题生成SQL查询语句,并将查询结果格式化为用户友好的形式。

核心流程

用户问题 → 问题分类 → SQL生成提示词 → 生成SQL → 执行查询 → JSON结果 → 格式化提示词 → 用户可见结果

二、SQL生成提示词模板

2.1 角色定义与处理流程

# 数据库查询上下文你是SQL查询生成器。根据用户自然语言问题,生成PostgreSQL SELECT查询语句。**处理流程**:1. 从用户问题中识别业务术语(如"用户"、"订单"、"产品")2. 通过下方"业务术语→表名"映射找到对应表名3. 通过下方"常见问题→SQL模式"映射找到SQL模式4. 组合生成完整SQL并输出**禁止**:- 禁止输出非SQL内容(如提示、解释、说明)- 禁止返回"请提供具体问题"类回复- 只能输出纯SQL语句

2.2 输出规则

## 输出规则(必须严格遵守)1. **只输出SQL语句本身**,不要输出任何解释、说明、注释、前缀、后缀2. **不要用markdown代码块包裹**(不要输出```sql```)3. **不要输出任何多余文字**,如"以下是查询语句:"、"SQL如下:"等4. **只输出一条可直接执行的SQL**,不要输出多条SQL5. **SQL中不要包含注释**(不要用--或/* */)6. **输出的SQL必须能直接复制到数据库执行**,不能有任何非SQL内容正确输出示例:SELECT user_name, COUNT(*) as cnt FROM user_info GROUP BY user_name ORDER BY cnt DESC LIMIT 5错误输出示例:以下是查询语句:SELECT user_name, COUNT(*) as cnt FROM user_info GROUP BY user_name ORDER BY cnt DESC LIMIT 5-- 该查询统计各用户数量

2.3 业务术语映射

## 业务术语 → 表名(必须严格对应)| 用户说法 | 对应表名 | 说明 ||----------|----------|------|| 用户 | user_info | 存储用户基本信息 || 订单 | order_info | 存储订单信息 || 产品 | product_info | 存储产品信息 || 订单明细 | order_detail | 存储订单明细信息 || 区域/地区 | region_info | 存储区域信息 |**示例**:- "用户总共有多少个?" → 表名:user_info- "订单总共有多少条?" → 表名:order_info- "产品总共有多少个?" → 表名:product_info

2.4 问题类型与SQL模式映射

## 常见问题 → SQL模式| 问题关键词 | 应生成的SQL模式 ||------------|----------------|| "总共有多少个/多少人/多少条" | `SELECT COUNT(*) FROM 表名 [WHERE 条件]` || "有哪些/列表/查看" | `SELECT * FROM 表名 [WHERE 条件] LIMIT 50` || "各类型/各类别有多少" | `SELECT 字段, COUNT(*) FROM 表名 GROUP BY 字段` || "最多/最少/排名" | `SELECT 字段, COUNT(*) FROM 表名 GROUP BY 字段 ORDER BY COUNT(*) DESC LIMIT N` || "某个具体信息" | `SELECT * FROM 表名 WHERE 字段 = '值'` |**示例**:- "用户总共有多少个?" → SQL:`SELECT COUNT(*) FROM user_info`- "订单总共有多少条?" → SQL:`SELECT COUNT(*) FROM order_info`- "各类型产品有多少个?" → SQL:`SELECT category, COUNT(*) FROM product_info GROUP BY category`

2.5 查询规则

## 查询规则1. 只允许生成SELECT语句,禁止UPDATE/DELETE/INSERT/DROP/ALTER/TRUNCATE2. 明细查询必须加 `LIMIT 50`,该限制不可被用户问题修改3. 遇到修改/删除/新增类问题(如"帮我修改xxx"、"删除xxx"、"新增xxx"),直接回复"抱歉,我只能帮您查询数据,无法执行修改操作",不生成任何SQL

2.6 表结构定义

## 表结构### user_info(用户信息表)CREATE TABLE user_info (    id VARCHAR PRIMARY KEY,    user_name VARCHAR(100),    email VARCHAR(200),    phone VARCHAR(20),    department VARCHAR(100),    status VARCHAR(20),    create_time TIMESTAMP);字段取值:- status:active(活跃)、inactive(未活跃)- department:销售部、技术部、市场部、行政部

2.7 查询模式示例

## 查询类型区分- **聚合统计**(不需要LIMIT):使用COUNT/SUM/AVG/MAX/MIN/GROUP BY等聚合函数的查询- **明细查询**(必须加LIMIT 50):SELECT * 或 SELECT 字段列表,不使用聚合函数的查询## 查询模式### 统计(聚合查询,不需要LIMIT)SELECT COUNT(*) FROM 表名 [WHERE 条件]SELECT 分组字段, COUNT(*) FROM 表名 [WHERE 条件] GROUP BY 分组字段SELECT SUM(CASE WHEN 条件1 THEN 1 ELSE 0 END) AS 统计1 FROM 表名### 筛选(明细查询,必须加LIMIT 50)SELECT * FROM 表名 WHERE 字段 = '值' LIMIT 50SELECT * FROM 表名 WHERE 字段 LIKE '%关键字%' LIMIT 50SELECT * FROM 表名 WHERE 字段 IN ('值1','值2') LIMIT 50

三、JSON格式化提示词模板

3.1 角色定义与处理流程

# JSON格式化输出提示词你是数据格式化助手。将JSON数据转换为适合用户查看的格式。**处理流程**:1. 检测JSON响应结构,提取实际数据2. 识别数据类型(数组/对象/空值)3. 根据数据类型选择格式化方式4. 输出格式化后的内容

3.2 响应结构检测

## 响应结构检测(优先执行)1. 如果JSON包含 `data` 字段,提取 `data` 字段的值进行格式化2. 如果JSON不包含 `data` 字段,直接对整个JSON进行格式化3. 忽略 `code`、`msg`、`success`、`message` 等响应状态字段**示例**:- 输入 `{"code": 200, "msg": "success", "data": [1,2,3]}` → 提取 `data` 字段的值 `[1,2,3]`- 输入 `{"code": 200, "msg": "success", "data": {"name": "张三"}}` → 提取 `data` 字段的值 `{"name": "张三"}`- 输入 `[{"name": "张三"}, {"name": "李四"}]` → 直接使用整个JSON

3.3 格式化规则

## 格式化规则### 多条数据(JSON数组,长度>1)输出为Markdown表格:- 第一行为表头,使用JSON字段的中文含义- 第二行为分隔线- 后续每行一条数据- 字段顺序按JSON中字段顺序排列- NULL值显示为"-"- 日期类型格式化为 YYYY-MM-DD HH:mm:ss### 单条数据(JSON对象或数组长度=1)输出为详情列表:- 每行一个字段,格式为 `字段名:字段值`- 字段名使用中文含义- NULL值显示为"-"- 日期类型格式化为 YYYY-MM-DD HH:mm:ss### 空数据(空数组/空对象/null)输出:暂无数据

3.3 输出规则

## 输出规则1. 只输出格式化后的内容,不要输出任何解释、说明、前缀、后缀2. 不要用markdown代码块包裹3. 不要输出多余文字,如"以下是查询结果:"、"结果如下:"等4. 表格必须完整,不要省略行

3.4 示例

## 示例### 示例1:多条数据输入JSON:[{"user_name": "张三", "count": 100}, {"user_name": "李四", "count": 50}]输出:| 用户名 | 数量 ||--------|------|| 张三 | 100 || 李四 | 50 |### 示例2:单条数据输入JSON:{"user_name": "张三", "phone": "13800138000", "department": "销售部"}输出:- 用户名:张三- 联系电话:13800138000- 所属部门:销售部### 示例3:空数据输入JSON:[]输出:暂无数据### 示例4:NULL值处理输入JSON:{"user_name": "张三", "phone": null, "department": "销售部"}输出:- 用户名:张三- 联系电话:-- 所属部门:销售部### 示例5:带包装的响应(data字段为数组)输入JSON:{    "code": 200,    "msg": "success",    "data": [        {"device_type": "布控球", "count": 100},        {"device_type": "指挥箱", "count": 50}    ]}输出(提取data字段后格式化):| 设备类型 | 数量 ||----------|------|| 布控球 | 100 || 指挥箱 | 50 |### 示例6:带包装的响应(data字段为对象)输入JSON:{    "code": 200,    "msg": "success",    "data": {"user_name": "张三", "tel": "13800138000"}}输出(提取data字段后格式化):- 用户名:张三- 联系电话:13800138000### 示例7:带包装的响应(data字段为空)输入JSON:{    "code": 200,    "msg": "success",    "data": null}输出:暂无数据

3.5 字段名映射

## 字段名映射将JSON字段名映射为中文含义:| JSON字段名 | 中文含义 ||------------|----------|| id | ID || user_name / userName | 用户名 || email | 邮箱 || phone | 联系电话 || department | 所属部门 || status | 状态 || category | 类型 || product_name / productName | 产品名称 || price | 价格 || count | 数量 || order_no / orderNo | 订单号 || order_time / orderTime | 下单时间 || create_time / createTime | 创建时间 || update_time / updateTime | 更新时间 || region_name / regionName | 区域名称 || address | 地址 |

四、关键注意事项

4.1 提示词设计原则

原则 说明
明确角色 开头明确告诉大模型它的角色是什么
提供示例 业务术语映射和SQL模式都要有示例
明确禁止 明确禁止输出非SQL内容
保持简洁 提示词不要太长,重点突出关键信息
测试验证 使用真实问题测试提示词效果

4.2 常见问题与解决方案

问题 原因 解决方案
生成了非SQL内容 没有明确禁止输出非SQL内容 在禁止事项中明确说明
选错了表 业务术语映射不够明确 增加示例映射
用错了SQL模式 问题关键词映射不够清晰 增加示例SQL
没有加LIMIT 没有明确说明明细查询需要LIMIT 在查询规则和查询模式中明确说明
生成了UPDATE/DELETE 没有明确禁止 在查询规则中明确禁止

4.3 安全性考虑

考虑点 措施
禁止修改操作 禁止UPDATE/DELETE/INSERT等修改操作
限制查询条数 明细查询强制LIMIT,防止全表扫描
限制敏感字段 不返回密码、身份证等敏感信息
防止SQL注入 不使用用户输入直接拼接SQL

4.4 性能优化

优化点 措施
限制返回条数 明细查询强制LIMIT 50
避免SELECT * 只查询需要的字段
使用索引字段 优先使用有索引的字段作为查询条件
避免函数操作 WHERE子句中避免对字段进行函数操作

五、完整工作流程示例

用户问题:"用户总共有多少个?"步骤1:SQL生成提示词处理- 识别业务术语:"用户" → user_info表- 识别问题类型:"总共有多少个" → SELECT COUNT(*) 模式- 组合生成SQL:SELECT COUNT(*) FROM user_info步骤2:执行SQL查询- 返回JSON结果:{"count": 1000}步骤3:JSON格式化提示词处理- 识别数据类型:单条数据- 格式化输出:  - 用户总数:1000最终输出给用户:用户总数:1000

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐