结构化输出是把“会说话的模型”变成“能接入系统的模块”的关键。本文总结2025年经验证的稳健方案,覆盖模式设计、提示工程、校验与自修复、函数调用与评估。
一、何时选择结构化输出?¶
- 场景:表单录入、票据/合同抽取、对账/报表、自动化工单、监控报警、RPA接入。
- 目标:可解析、可校验、可回放、可迭代优化。
二、JSON模式(Schema)与提示模板¶
Schema 示例:
{
"type": "object",
"properties": {
"title": {"type": "string"},
"amount": {"type": "number", "minimum": 0},
"date": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$"},
"tags": {"type": "array", "items": {"type": "string"}}
},
"required": ["title", "amount", "date"],
"additionalProperties": false
}
提示模板要点:
仅输出JSON,禁止自然语言。
遵循如下Schema,字段必须完整且类型正确;若缺失信息,用null或空数组表示,不可编造。
Schema: {schema}
文本:{input}
三、校验与自修复¶
- 先解析:捕获JSON解析异常(括号/引号/转义)。
- 再校验:用JSON Schema校验类型与约束。
- 自修复策略:
1) 轻度修复(括号/逗号/转义);
2) 带错误报告回送模型:提供错误位置与原因,请求“仅返回修正后的JSON”;
3) 限定重试次数并记录样本。
四、函数调用(Tool/Function Calling)¶
- 适用:需要模型下发“结构化指令”驱动外部工具时。
- 规范:
- 每个函数都有 name/description/parameters(JSON Schema);
- 模型只给出函数名与参数JSON;
- 执行器负责真实调用与错误返回,避免模型“想象结果”。
函数定义示例:
{
"name": "create_invoice",
"description": "创建发票",
"parameters": {
"type": "object",
"properties": {
"customer": {"type": "string"},
"items": {"type": "array", "items": {"type": "string"}},
"amount": {"type": "number"},
"due_date": {"type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$"}
},
"required": ["customer", "items", "amount"]
}
}
五、抽取与评估(IE & Eval)¶
- 指标:字段准确率、召回率、严格F1;
- 过程:
1) 建立小规模金标集;
2) 运行自动评估(比较JSON字段);
3) 人工抽检困难样本并迭代Schema与提示。
六、工程化建议¶
- 限流与幂等:为函数调用加请求ID;
- 审计:保留原文、模型输出、修复前后版本;
- 回放:以日志重放用于回归测试;
- 安全:PII脱敏、严格CORS与权限控制。
把自然语言变成结构化“接口”,你的自动化流水线就能无缝接入AI。更多实践指南尽在AI225导航。
