🔗 技术协议

结构化输出(Structured Output)

别名:JSON 模式Schema 约束函数调用结构化生成JSON Mode
分类🔗 技术协议
阅读时间⏱️ 14 分钟
更新时间📅 2026-07-16
条目编号ENC-PROTOCOL-12-structured-output
结构化输出指让 LLM 严格按预设 Schema(如 JSON)生成结果,而非自由文本。它是 Agent 可靠调用工具、解析模型结果的前提,通常通过 JSON Mode、Function Calling 或约束解码实现。

关键要点 ✦

三种实现路径

① JSON Mode:要求模型只输出合法 JSON,再按约定结构解析。② Function Calling:模型不直接吐 JSON,而是输出符合工具 Schema 的参数对象,由运行时拼装。③ 约束解码(Constrained Decoding):在解码阶段用 Grammar/正则强制输出符合 Schema,从根上杜绝格式错误(如 outlines、guidance 库)。

为什么对 Agent 重要

Agent 的「行动」依赖对模型输出的程序化解析:要调用哪个工具、传什么参数,必须能从模型结果中确定性地提取。自由文本会让解析脆弱、易出错。结构化输出把「自然语言」变成「可执行的 typed 数据」,是工具闭环可靠性的底座。

工程实践

即便有 Schema,仍建议:用 JSON Schema 显式约束类型与必填对解析失败做带错误信息的重试对超长/递归结构分段生成。OpenAI、Anthropic 均提供 native structured output,显著优于仅靠提示「请输出 JSON」。

🎯 应用场景

工具调用
按工具 Schema 输出参数,驱动 Function Calling。
数据抽取
从非结构化文本抽取为结构化记录入库。
Agent 决策
输出带类型的计划/状态,供编排层消费。

✅ 最佳实践

  • 优先使用厂商 native 结构化输出而非纯提示约束
  • 对解析失败做带上下文的重试而非直接报错
  • Schema 设计保持最小必要字段,降低生成难度
  • 对关键输出做二次校验(范围/类型/必填)

🔮 未来展望

结构化输出将内建到模型推理中(原生约束解码),并支持更丰富的类型系统(枚举、引用、流式增量 JSON);Agent 框架会默认以 typed 接口消费模型输出,解析错误趋近于零。

📖 相关条目

🛠️ 相关产品

🏷️ 标签结构化输出Structured OutputJSONSchema函数调用约束解码