12.2 结构化输出
别让 AI 写作文,让它“填表”。请使用 Markdown 表格/JSON 格式输出。
12.2.1 AI 天生爱唠叨
如果你问 AI:“这是哪三款手机的对比?”
它通常会给你写一篇像博客一样的长文:
“好的,这三款手机分别是 A、B 和 C。A 的特点是像素高,屏幕大... 而 B 的续航很好,但是有点重... C 则是...”
看着很累,重点难找,复制粘贴也很麻烦。
这是因为 AI 默认是在 “聊天”(Chat),而不是在**“处理数据”(Data Processing)**。
12.2.2 驾驭 AI 的缰绳:格式限制
对付“话痨”最好的办法,就是直接扔给它一个 “框”。
我们不仅要告诉它 “内容是什么”,还要规定它**“长什么样”**。
场景 1:做竞品分析(使用表格)
“请对比 iPhone 15 和 Pixel 8。 请使用 Markdown 表格形式输出,包含以下列:型号、屏幕尺寸、处理器、价格、核心卖点。”
结果瞬间清爽:
iPhone 15
6.1寸
A16
$799
生态系统、视频拍摄
Pixel 8
6.2寸
Tensor G3
$699
AI 拍照功能、原生安卓
场景 2:程序员写代码(使用 JSON)
“帮我提取这段新闻里的人物、地点和时间。 不要废话,直接输出 JSON 格式,字段为:
person,location,time。”
结果直接可用:
12.2.3 为什么要结构化?
结构化输出不仅仅是为了好看,它有两个巨大的价值:
可读性(Readability):信息密度极大提升,一目了然。
可连接性(Connectivity):结构化的数据(如 JSON/CSV)可以直接被 Excel、代码或其他软件读取。这时,AI 就不再只是一个聊天机器人,而变成了一个数据预处理器。
[!NOTE] API 级别的强校验 (JSON Schema)
如果仅依靠“请输出 JSON”的自然语言提示,模型在复杂场景下依然可能输出错误格式(例如少了个逗号、或多废话几句代码注释)。在工业级生产环境中,我们不仅要求输出格式,还需要进行 机器强约束与校验:
Structured Outputs / Function Calling:现代模型 API(如 OpenAI 的 Structured Outputs)支持直接在发送 API 请求时附带
JSON Schema(数据结构定义),通过引擎底层甚至是生成采样过程(Sampling)强迫其100%符合结构。本地校验阻断:即使收到了 JSON 内容,也要利用代码库(如 Pydantic 或 jsonschema)直接验证拦截。一旦失败立刻抛弃或交回模型自动重试。
代码实验: 请参阅本书配套的
labs/02_structured_output.py。其中展现了如何利用 Pythonjsonschema对 AI 生成的 JSON 数据格式执行本地化严谨校验并捕捉错误。
12.2.4 思考题
回想一下你最近一次让 AI 帮你做总结。
如果当时你加上一句 “请用列表形式展示核心观点”或者“请生成一个思维导图格式(Markdown)”,效果会不会好很多?
下次试试看。
最后更新于
