![配图待生成]
一句话总结
结构化输出 = 让AI按照你指定的格式输出,而不是自由发挥。
格式不对,再好的内容也没用。
为什么需要结构化输出?
问题:AI输出格式不一致
`
第一次:苹果是水果
第二次:🍎 苹果 – 水果,红色,甜
第三次:苹果(水果)
`
每次输出格式都不一样,后续处理很麻烦。
解决:指定输出格式
`
请按照以下格式输出:
[emoji] [名称] – [类别],[特征1],[特征2]
输入:苹果
输出:🍎 苹果 – 水果,红色,甜
输入:汽车
输出:🚗 汽车 – 交通工具,四轮,快速
`
常用输出格式
1. JSON格式
基础用法
`
请以JSON格式输出:
{
“标题”: “…”,
“摘要”: “…”,
“关键词”: [“…”, “…”]
}
`
带类型说明
`json
请以JSON格式输出,字段类型如下:
{
“name”: “string – 姓名”,
“age”: “number – 年龄”,
“email”: “string – 邮箱”,
“is_active”: “boolean – 是否激活”
}
`
带示例
`
请以JSON格式输出:
示例:
{
“name”: “张三”,
“age”: 25,
“email”: “zhangsan@example.com”,
“is_active”: true
}
现在请分析:李四,30岁,lisi@example.com,已激活
`
2. Markdown格式
基础用法
`
请用Markdown格式输出,包含:
- 标题(#)
- 小标题(##)
- 列表(- 或 1.)
- 代码块(
`) - 表格(| | |)
`
文章格式
`
请用Markdown格式写一篇文章,结构如下:
# 标题
引言
[100字左右]
主体
[3-5个小标题,每个200字左右]
总结
[100字左右]
`
技术文档格式
`
请用Markdown格式写技术文档,包含:
# 项目名称
简介
[一句话描述]
安装
`bash
pip install xxx
`
使用
`python
import xxx
`
API参考
| 方法 | 参数 | 返回值 |
|---|
|——|——|——–|
| method1 | param1 | return1 |
|---|
`
3. 表格格式
基础用法
`
请用表格形式列出:
| 产品 | 价格 | 特点 |
|---|
|——|——|——|
| A | 100 | 快 |
|---|---|---|
| B | 200 | 稳 |
`
对比表格
`
请用对比表格分析这两个方案:
| 维度 | 方案A | 方案B |
|---|
|——|——-|——-|
| 成本 | 高 | 低 |
|---|---|---|
| 性能 | 快 | 慢 |
| 风险 | 低 | 高 |
| 推荐度 | ⭐⭐⭐⭐ | ⭐⭐⭐ |
`
4. 列表格式
无序列表
`
请用无序列表列出:
- 第一点
- 第二点
- 第三点
`
有序列表
`
请用有序列表列出步骤:
- 第一步
- 第二步
- 第三步
`
嵌套列表
`
请用嵌套列表展示:
- 主题1
- 子主题1.1
- 子主题1.2
- 主题2
- 子主题2.1
- 子主题2.2
`
5. 代码格式
Python代码
`
请用Python代码实现,包含:
- 函数定义
- 类型注解
- 注释说明
- 示例用法
`
代码块
`
请用代码块展示:
`python
def function_name(param: str) -> str:
“””函数说明”””
return result
`
`
6. XML格式
`
请以XML格式输出:
内容
标签1
标签2
`
格式控制技巧
技巧1:明确指定格式
`
❌ 模糊:写个总结
✅ 明确:用3个要点总结,每个要点一句话,使用Markdown列表
`
技巧2:提供模板
`
请按照以下模板写:
[标题]
背景
[100字]
分析
[200字]
结论
[100字]
`
技巧3:使用示例
`
请按照这个格式写:
输入:苹果
输出:🍎 苹果 – 水果,红色,甜
输入:汽车
输出:🚗 汽车 – 交通工具,四轮,快速
现在请写:飞机
`
技巧4:设置约束
`
约束:
- 必须使用JSON格式
- 必须包含”title”和”content”字段
- 不要添加额外字段
- 不要使用注释
`
技巧5:分步骤指定
`
步骤1:用JSON格式提取数据
步骤2:用Markdown格式写分析
步骤3:用表格格式做对比
`
实战示例
示例1:数据分析报告
`
请分析以下数据,用Markdown格式输出报告:
数据:Q2销售数据
报告结构:
# Q2销售数据分析报告
概览
[用表格展示关键指标]
Top 3产品
[用表格展示,包含:产品名、销量、增长率、原因分析]
趋势分析
[用无序列表列出3个关键趋势]
建议
[用有序列表列出3个行动建议]
`
示例2:API文档
`
请为以下函数写API文档,用Markdown格式:
函数:def search(query: str, limit: int = 10) -> List[dict]
文档结构:
search
描述
[一句话描述]
参数
| 参数 | 类型 | 必需 | 默认值 | 描述 |
|---|
|——|——|——|——–|——|
返回值
[描述返回值格式]
示例
`python
result = search(“AI”)
`
`
示例3:产品对比
`
请对比以下两个产品,用表格格式:
产品A:iPhone 15
产品B:Samsung Galaxy S24
对比维度:
| 维度 | iPhone 15 | Galaxy S24 | 推荐 |
|---|
|——|———–|————|——|
| 价格 | |||
|---|---|---|---|
| 性能 | |||
| 拍照 | |||
| 电池 | |||
| 系统 |
`
示例4:代码生成
`
请用Python写一个排序函数,用代码块格式输出:
要求:
- 函数名:sort_items
- 参数:items: List[dict], key: str
- 返回:排序后的列表
- 支持升序和降序
代码结构:
`python
def sort_items(items: List[dict], key: str, reverse: bool = False) -> List[dict]:
“””
对字典列表按指定字段排序
Args:
items: 字典列表
key: 排序字段
reverse: 是否降序
Returns:
排序后的列表
“””
# 实现代码
`
`
格式控制的常见问题
问题1:AI不遵守格式
原因: 格式描述不够明确
解决:
`
❌ 请用JSON格式输出
✅ 请严格按照以下JSON格式输出,不要添加任何额外字段:
{
“name”: “string”,
“age”: “number”
}
`
问题2:AI输出多余内容
原因: 没有约束
解决:
`
约束:
- 只输出JSON,不要有其他文字
- 不要添加解释
- 不要添加注释
`
问题3:格式不一致
原因: 没有提供示例
解决:
`
请按照这个示例的格式写:
[示例]
`
问题4:字段缺失
原因: 没有明确要求
解决:
`
必须包含以下字段:
- name (string)
- age (number)
- email (string)
`
🚇 地铁深读:结构化输出的原理
为什么结构化输出有效?
- 减少歧义:明确格式减少了AI的自由发挥空间
- 便于解析:固定格式便于程序处理
- 提高一致性:每次输出格式相同
- 降低错误:格式约束减少了格式错误
结构化输出 vs 自由输出
| 方法 | 优点 | 缺点 | 适用场景 |
|---|
|——|——|——|———-|
| 结构化 | 一致、可解析 | 受限 | 数据处理、API |
|---|---|---|---|
| 自由 | 灵活、自然 | 不一致 | 创意写作 |
最佳实践
- 明确指定:不要假设AI知道你想要什么格式
- 提供示例:示例是最直观的格式说明
- 设置约束:约束能防止AI偏离格式
- 验证输出:检查AI是否遵守了格式要求
今日小结
| 格式 | 适用场景 | 示例 |
|---|
|——|———-|——|
| JSON | 结构化数据、API | {“name”: “张三”} | |||
|---|---|---|---|---|---|
| Markdown | 文章、文档 | # 标题 | |||
| 表格 | 对比、清单 | A | B | ||
| 列表 | 步骤、要点 | 1. 第一步 | |||
| 代码 | 程序代码 | def func(): | |||
| XML | 配置、数据交换 | value |
一句话记住: 结构化输出 = 让AI按照你指定的格式输出,而不是自由发挥。
下期预告
AI PRO·Prompt Day 6 实战:Prompt设计与优化
我们将从零设计一个完整的Prompt,包括需求分析、Prompt编写、测试优化。
*攀岩者 | 技术总监 | 19年IT全栈实战*
*每天分享AI学习笔记,陪你从零基础到AI达人*
发表回复