📚前言
系统学习提示词,内容大纲如下:
前导课程:
AI提示词工程(进阶)第7课:角色设定与身份模拟-CSDN博客
AI提示词工程(进阶)第9课:思维链提示(Chain of Thought)-CSDN博客
AI提示词工程(进阶)第10课:思维树与元提示(ToT & Meta Prompting)-CSDN博客
第11课:结构化输出与格式化控制
📌 一句话目标:学会精确控制AI的输出格式,让AI直接输出JSON、Markdown表格、CSV等结构化数据,拿来就能用,不用二次加工。
💬 第10课咱学会了"多方案对比"和"方案先行"。第11课来看一个特别"实用主义"的技术------结构化输出。这课特别适合做数据整理、批量处理、对接工具的人。学会了它,你就再也不用对着AI的一大段文字手动整理表格了。
🖥️ 开场:你被AI的"长篇大论"坑过吗?
你有没有遇到过这种情况------
让AI从一段文字里提取信息,它给你回了一大段话:
根据您提供的产品描述,我们可以看出这款产品是一款智能手表,它的价格是1299元,主要功能包括心率监测、血氧检测、睡眠分析等,目标人群是注重健康的年轻上班族......
信息全对,但你得手动把它整理成表格、填进系统、或者转成程序能读的格式。
这中间的"二次加工",就是纯纯的浪费时间。
如果AI能直接给你这样的输出------
{
"product_name": "智能手表Pro",
"price": 1299,
"features": ["心率监测", "血氧检测", "睡眠分析"],
"target_audience": "注重健康的年轻上班族",
"sentiment": "positive"
}
复制粘贴就能用,不用改一个字。
这就是这节课要学的------结构化输出与格式化控制。
💬 一句话先记住:结构化输出,就是让AI按你规定的格式输出,而不是让它自由发挥。 学会了这招,AI就从"写手"变成了"数据生产线"。
一、输出格式的类型:AI能输出哪些格式?
💬 这块是基础,知道有哪些格式、各自啥时候用就行。不用背,用的时候回来查。
📌 六种常见格式
| 格式 | 是什么 | 适合场景 | 例子 |
|---|---|---|---|
| 纯文本 | 普通文字 | 聊天、简单问答 | "今天天气不错" |
| Markdown | 带标记的文本 | 文档、公众号、笔记 | **加粗**、# 标题 |
| JSON | 键值对结构 | 程序对接、数据交换 | {"name": "张三"} |
| XML | 标签结构 | 旧系统对接、配置文件 | <name>张三</name> |
| YAML | 缩进结构 | 配置文件、K8s | name: 张三 |
| CSV | 逗号分隔表格 | Excel、数据分析 | 张三,25,北京 |
💡 怎么选格式?
| 你的需求 | 推荐格式 |
|---|---|
| 给程序用、要对接API | JSON(最通用) |
| 给Excel/数据分析用 | CSV |
| 给人看的文档 | Markdown |
| 配置文件 | YAML |
| 旧系统对接 | XML |
| 简单聊天 | 纯文本 |
💬 一句话记住:程序对接用JSON,表格分析用CSV,人看文档用Markdown。 日常工作中,JSON和Markdown是使用频率最高的两个。
二、JSON模式:让AI输出"程序能读"的数据
💬 这节是核心,JSON是结构化输出的"主力军"。学会了它,你就能让AI帮你批量整理数据、生成配置文件、对接各种工具。
📌 什么是JSON?
JSON(JavaScript Object Notation)是一种键值对结构的数据格式。它长这样:
{
"name": "张三",
"age": 25,
"city": "北京",
"skills": ["Python", "SQL", "AI"],
"is_active": true
}
"name"是键(key),"张三"是值(value)- 值可以是字符串、数字、数组、布尔值
- 程序(Python、JavaScript等)都能直接读取它
💡 怎么让AI输出JSON?
关键:在提示词里明确要求"严格按照JSON格式输出",并给出JSON的结构示例。
请从以下产品描述中提取信息,并严格按照以下JSON格式输出:
{
"product_name": "产品名称",
"price": "价格(仅数字)",
"features": ["特性1", "特性2"],
"target_audience": "目标人群描述",
"sentiment": "整体情感倾向(positive/neutral/negative)"
}
产品描述:这款智能手表采用AMOLED高清屏幕,支持心率、血氧、睡眠三大健康监测功能,续航长达14天,售价1299元,主要面向注重健康的年轻上班族,用户反馈普遍积极。
AI会直接输出:
{
"product_name": "智能手表",
"price": "1299",
"features": ["心率监测", "血氧检测", "睡眠分析"],
"target_audience": "注重健康的年轻上班族",
"sentiment": "positive"
}
💬 关键点:你给的JSON结构示例越完整,AI输出的越规范。 字段名、类型、嵌套结构,都要在示例里写清楚。
⚠️ 常见问题:AI输出的JSON不合法怎么办?
有时候AI会输出这种"半吊子"JSON:
{
"product_name": "智能手表",
"price": 1299,
"features": 心率监测、血氧检测、睡眠分析,
"target_audience": "注重健康的年轻上班族",
"sentiment": "positive"
}
注意 features 那行------没有用方括号,值也不是数组格式。这种JSON程序读不了。
解决办法:让AI修正并重新输出。
你输出的JSON格式不合法。请修正以下问题:
1. "features"字段必须是数组格式,用方括号包裹,每个元素用引号包裹
2. 请重新输出完整的JSON,不要添加任何额外文字
请重新输出:
💬 记住这个"纠错"套路:指出问题 → 明确要求 → 让它重新输出。 别跟AI客气,直接说清楚哪里错了、怎么改。
三、Schema约束:给JSON"上规矩"
💬 这块稍微进阶一点,但特别实用------尤其是你要让AI批量生成大量JSON的时候。先别被"Schema"这个词吓到,其实就是"给JSON定个模板"。
📌 什么是JSON Schema?
JSON Schema,就是预先定义好JSON的结构规则------哪些字段必须有、什么类型、哪些可选。
请根据以下JSON Schema生成数据:
{
"type": "object",
"required": ["id", "name", "price"],
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" },
"price": { "type": "number" },
"category": { "type": "string", "enum": ["电子", "服饰", "食品"] },
"tags": { "type": "array", "items": { "type": "string" } }
}
}
请为以下商品生成符合上述Schema的JSON:
商品:无线蓝牙耳机,售价299元,属于电子类,标签是"降噪""便携"
AI会输出:
{
"id": 1,
"name": "无线蓝牙耳机",
"price": 299,
"category": "电子",
"tags": ["降噪", "便携"]
}
💡 Schema约束的价值
| 好处 | 说明 |
|---|---|
| 字段必填 | 用 required 强制AI不能漏字段 |
| 类型校验 | 用 type 强制AI输出正确的数据类型 |
| 枚举限制 | 用 enum 限制AI只能从指定值里选 |
| 批量一致 | 批量生成时,所有输出结构完全一致 |
💬 打个比方:Schema就像"答题卡"------规定了每个空填什么、什么格式。AI照着填,你收上来就能直接批改。没有Schema,AI就是"自由发挥写作文",你收上来还得自己判卷。
✅ 一句话总结
JSON模式让AI输出结构化数据,Schema约束让结构化数据"有规矩"------字段必填、类型正确、值有范围。两者结合,AI就成了你的"数据生产线"。
四、实操:三大场景实战
💬 这节是动手环节,三个场景覆盖了结构化输出的主要用法。建议都试一遍,尤其第一个------它是最常见的需求。
🖥️ 场景1:从非结构化文本提取结构化数据
让AI从一段新闻里提取人物、地点、事件:
请从以下新闻中提取信息,并严格按照JSON格式输出:
{
"date": "日期",
"location": "地点",
"people": ["涉及人物"],
"organizations": ["涉及机构"],
"event": "事件概述(50字以内)",
"impact": "影响(100字以内)"
}
新闻:2024年3月15日,在深圳举办的全球人工智能大会上,华为发布了新一代AI芯片昇腾910C。该芯片在推理性能上较上一代提升50%,多家国内云计算厂商宣布将采用该芯片建设数据中心。业内专家认为,这将加速国产AI算力生态的成熟。
试一下,看AI输出的JSON是否完整规范。
💡 观察重点: 注意"people"和"organizations"是不是数组格式?"event"和"impact"有没有超过字数限制?如果AI漏了字段,用"纠错套路"让它补上。
🖥️ 场景2:生成符合特定Schema的JSON
让AI批量生成产品信息:
请为以下5个产品生成JSON数据,必须严格符合以下Schema:
{
"type": "object",
"required": ["name", "price", "category", "rating"],
"properties": {
"name": { "type": "string" },
"price": { "type": "number" },
"category": { "type": "string", "enum": ["电子", "服饰", "食品", "家居"] },
"rating": { "type": "number", "minimum": 1, "maximum": 5 },
"features": { "type": "array", "items": { "type": "string" } }
}
}
产品列表:
1. 智能扫地机器人,1899元,电子类,评分4.5,支持自动回充和APP控制
2. 纯棉T恤,79元,服饰类,评分4.2,透气舒适,多色可选
3. 有机燕麦片,39元,食品类,评分4.8,无添加,高纤维
4. 记忆棉枕头,129元,家居类,评分4.6,护颈,可水洗
5. 便携蓝牙音箱,299元,电子类,评分4.3,防水,续航20小时
请输出一个包含5个对象的JSON数组。
试一下,看AI能否生成结构一致的批量数据。
💡 观察重点: 5个产品的JSON结构是否完全一致?"category"有没有超出枚举范围?"rating"是否在1-5之间?批量生成时,Schema约束的价值就体现出来了------所有输出结构统一,直接就能导入程序。
🖥️ 场景3:Markdown表格的精确控制
让AI输出指定列数的Markdown表格:
请将以下数据整理为Markdown表格,要求:
- 表头为:产品名称 | 价格 | 评分 | 推荐理由
- 共5行数据
- 价格保留整数
- 评分保留1位小数
- 推荐理由不超过20字
数据:
1. 智能扫地机器人,1899元,评分4.5,自动回充省心省力
2. 纯棉T恤,79元,评分4.2,透气舒适性价比高
3. 有机燕麦片,39元,评分4.8,健康早餐首选
4. 记忆棉枕头,129元,评分4.6,护颈助眠效果好
5. 便携蓝牙音箱,299元,评分4.3,防水便携音质好
AI会输出:
| 产品名称 | 价格 | 评分 | 推荐理由 |
|---|---|---|---|
| 智能扫地机器人 | 1899 | 4.5 | 自动回充省心省力 |
| 纯棉T恤 | 79 | 4.2 | 透气舒适性价比高 |
| 有机燕麦片 | 39 | 4.8 | 健康早餐首选 |
| 记忆棉枕头 | 129 | 4.6 | 护颈助眠效果好 |
| 便携蓝牙音箱 | 299 | 4.3 | 防水便携音质好 |
试一下,看AI是否严格按你的要求输出。
💡 观察重点: 表头是否完全一致?价格有没有小数?评分是不是1位小数?Markdown表格的控制要点是"把列名、行数、格式要求全部写清楚"。
五、格式错误的处理:AI不听话怎么办?
💬 这节是"救场指南"。AI偶尔会不按格式输出,别慌,有几个招能把它拉回来。
📌 四步纠错法
第一步:明确指出错误
你输出的格式不符合要求。
第二步:说明具体问题
问题:1. 缺少"price"字段 2. "features"不是数组格式
第三步:给出正确示例
正确格式应为:
{
"product_name": "产品名称",
"price": 0,
"features": ["特性1", "特性2"]
}
第四步:要求重新输出
请严格按照以上格式重新输出,不要添加任何额外文字。
💡 预防格式错误的三个技巧
| 技巧 | 说明 |
|---|---|
| 给示例 | 在提示词里给出完整的JSON示例,AI照着填 |
| 加约束 | 明确写"不要输出任何解释文字,只输出JSON" |
| 分步要求 | 复杂任务先让AI提取数据,再让AI转格式 |
💬 一句话记住:格式错误不可怕,可怕的是不会"纠错"。 用四步纠错法,把AI拉回正轨,比重新问一遍省事多了。
本课小结
📌 今天学了啥
| 知识点 | 一句话回顾 |
|---|---|
| 六种格式 | 纯文本、Markdown、JSON、XML、YAML、CSV------各有用处 |
| JSON模式 | 在提示词里给JSON示例,AI就能输出结构化数据 |
| Schema约束 | 用required/type/enum给JSON"上规矩",批量生成也一致 |
| 四步纠错法 | 指出错误→说明问题→给示例→要求重出 |
| 三大场景 | 文本提取、批量生成、Markdown表格------覆盖主要用法 |
📌 三个核心认知
- 结构化输出是"效率利器"------让AI直接输出能用的格式,省掉二次加工
- 示例和Schema是"双保险"------给示例让AI知道格式,给Schema让AI不敢乱来
- 纠错能力是"必备技能"------AI不听话是常态,会纠错才是真本事
课后练习
💬 练习都动手做一遍,尤其第一个------它是最常见的需求,练熟了能省你大量时间。
📌 练习1:文本提取
找一段你手头的文字(新闻、产品介绍、简历都行),让AI按JSON格式提取关键信息。
要求: 至少包含5个字段,且必须用数组格式输出"列表类"字段。
📌 练习2:批量生成
设计一个Schema(比如"用户信息"、"订单信息"),让AI批量生成5条符合Schema的数据。
观察重点: 5条数据的结构是否完全一致?有没有字段缺失或类型错误?
📌 练习3:纠错实战
故意给AI一个"不完整"的JSON示例(比如少一个字段),看它会不会漏字段。如果漏了,用四步纠错法让它补上。
观察重点: 四步纠错法能不能把AI拉回正轨?
下节预告
🖥️ 第12课:多轮对话与上下文管理
第11课咱学会了"让AI输出能用的格式"。第12课来看一个"越聊越偏"的问题------多轮对话与上下文管理。
你有没有遇到过:跟AI聊了十几轮,它突然忘了你最开始的要求?或者聊着聊着,它开始答非所问?这就是"上下文管理"没做好。
下节课咱会讲:AI的记忆到底有多长?为什么长对话会"失忆"?怎么让AI在多轮对话中不跑偏?什么时候该开新对话?
🎯 进阶阶段第5课完成,还剩3课。越到后面越实用,继续走。