结构化输出与JSON
AI 应用经常需要把模型输出交给程序继续处理。此时不能只让模型“随便回答”,而要要求它输出稳定的 JSON、表格或固定字段。
# 1. 为什么需要结构化输出
模型生成文本
-> 程序解析
-> 业务处理
-> 存库 / 调接口 / 展示
如果输出格式不稳定,后续系统就会出现解析失败、字段缺失或业务异常。
# 2. JSON Prompt 示例
请从用户输入中抽取任务信息,只输出 JSON,不要输出解释。
JSON Schema:
{
"title": "string",
"priority": "low | medium | high",
"deadline": "string | null",
"assignee": "string | null",
"risks": ["string"]
}
规则:
1. 没有明确出现的信息填 null。
2. 不要编造负责人和截止日期。
3. priority 只能是 low、medium、high。
用户输入:
{input}
# 3. 结构化输出常见形式
| 形式 | 适合场景 |
|---|---|
| JSON | 程序解析、接口调用、任务抽取 |
| Markdown 表格 | 人类阅读和轻量整理 |
| 固定列表 | 总结、分类、行动项 |
| YAML | 配置类内容 |
| XML | 需要明确标签边界的场景 |
# 4. 稳定性策略
- 明确要求“只输出 JSON”。
- 提供字段名、类型、枚举值和 null 规则。
- 给出完整示例。
- 降低随机性。
- 程序侧做 JSON 解析和 Schema 校验。
- 解析失败时自动重试或请求模型修复格式。
# 5. 错误处理流程
模型输出
-> JSON parse
-> Schema validate
-> 业务规则校验
-> 成功:进入后续流程
-> 失败:修复 / 重试 / 人工处理
不要把模型输出直接传给核心业务接口,尤其是涉及金额、权限、生产操作时。
# 6. 常见坑
| 问题 | 原因 | 修复 |
|---|---|---|
| JSON 前后有解释文本 | Prompt 没有禁止额外内容 | 明确只输出 JSON |
| 字段缺失 | Schema 不清晰 | 给完整字段和默认规则 |
| 枚举值乱写 | 未限制可选值 | 明确枚举并做校验 |
| 编造数据 | 没说明缺失时填什么 | 要求未知填 null |
# 7. Tips 快问快答
Q:只靠 Prompt 能保证 JSON 一定合法吗?
A:不能。Prompt 可以提高概率,但程序侧必须解析和校验。
Q:模型输出 JSON 后可以直接调用接口吗?
A:不建议。还要做权限、参数范围、业务规则和风险校验。
Q:字段很多怎么办?
A:拆分任务或分层输出。字段过多会增加模型遗漏和格式错误概率。
上次更新: 2026/06/25, 17:53:09