当前位置: 首页 > news >正文

智能问数系统:SQL生成与JSON格式化提示词设计指南

一、概述

本文介绍如何设计提示词,让大模型根据用户自然语言问题生成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%免费

http://www.jsqmd.com/news/995739/

相关文章:

  • 开发者的终极效率神器:Ctool全能工具集完全指南
  • rpm 和 dpkg
  • 从游戏地图到自动驾驶:聊聊Ramer-Douglas-Peucker算法那些意想不到的应用场景
  • 别再只写脚本了!用PyQt5给你的YOLOv5/YOLOv8模型做个桌面GUI(附完整代码)
  • 从2D到BEV:Lift, Splat, Shoot如何重塑自动驾驶感知
  • 2026 湖州五大正规猫犬舍实测:伴西西猫舍犬舍登顶,品质与服务双优 - 同城宠物优选基地
  • HC32单片机I2C驱动避坑指南:从状态码解析到稳定读写(附完整代码)
  • Android计算机毕设之移动端 Android 陪诊护理服务系统的设计与开发基于Android的陪诊护理系统APP的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 2026年达州艺术培训市场观察:荔舞飞扬等多家机构实力对比与家长真实反馈 - 优质品牌商家
  • 360 驱动大师 使用与配置完整技术指南
  • 硬件工程师避坑指南:芯片选型时,I/O Pad和Package参数到底该怎么看?
  • 工装外套标准化生产全工艺解析——关键工序、增产逻辑与自动化设备科普
  • 为什么 MoE 模型的 RL 训练比 Dense 模型难得多?
  • 2026年近期随州优秀花纹盖板实力厂商联系方式与综合实力探寻 - 品牌鉴赏官2026
  • 别再只盯着码流了!手把手教你用Python解析H.264 SPS/PPS里的关键信息(附完整代码)
  • 2026年红木沙发缅花加工厂怎么选?从原料、工艺到价格,一份客观的行业评估指南 - 优质品牌商家
  • 2026年不锈钢切削液行业供应商综合评估:从技术实力到服务体系的全面对比 - 优质品牌商家
  • P89LPC90x系列双时钟周期内核解析:80C51性能提升与低功耗设计实战
  • 【深度解析】Claude Fable 5 全面评测:安全防护机制、基准测试与实战性能深度拆解
  • Ohook技术实现:Office许可证验证拦截机制解析与部署方案
  • 如何3分钟实现跨语言AI语音克隆:OpenVoice零样本语音合成完整指南
  • OptiScaler完整使用指南:快速提升游戏画质的终极方案
  • 深入GnuRadio内核:从Volk库和FIR滤波器看OQPSK解调的性能优化
  • 2026年上海劳动律师怎么选?五家律所多维度真实案例与业务能力横向分析 - 优质品牌商家
  • 你的Swagger注解用对了吗?详解Knife4j中@ApiModelProperty的5个高级用法与3个常见坑
  • 酒店电梯梯控的核心设备,涵盖前台发卡、轿厢控制及PMS对接三部分。关键设备包括智能梯控工作站、IC卡控制系统主板、嵌入式读头及定制线材;PMS对接需三方协作,实现房卡权限自动同步
  • 如何快速创建个性化Project Sekai表情包:免费开源工具终极指南
  • MSC8144E DSP高速接口电气特性与硬件设计实战解析
  • 2026年AI论文软件深度评测:6款工具合规过检得分排名
  • 2026年AI写作辅助软件全景评测:这5款工具如何提升论文写作效果