Structured Outputs:让模型返回可直接使用的 JSON

用 6 张图片笔记拆解 Structured Outputs:从 JSON mode 的缺口,到 Schema 约束、入口边界和最小接入路径。

模型输出一旦要进入数据库、表单或下一步代码,JSON 语法正确还不够,字段和类型也要稳定。Structured Outputs 让模型按开发者提供的 JSON Schema 生成结构化结果。1
JSON mode 主要保证结果能解析成 JSON;Structured Outputs 进一步约束结果匹配指定 Schema。反复重试和手写解析器仍然可以用,但它们把格式维护成本留在应用层。1
约束解码会先把 JSON Schema 转成语法规则,模型每生成一个 token,推理过程就屏蔽当前不符合规则的候选。新 Schema 的第一次请求还要完成预处理,后续请求可以复用缓存结果。1
接入时抓住三个分支:用 Schema 描述字段,用 strict: true 开启严格匹配,用 refusal 处理模型拒答。Schema 匹配只说明结构合格,字段里的事实、数值和业务规则仍要由应用校验。1
需要一份结构化数据时,优先使用 response_format;需要模型选择并调用外部工具时,使用 tools 的 Function Calling。两种入口都能使用严格 Schema,但交付物分别是数据和工具参数。23
最小实践可以从一个小 Schema 开始:用 Pydantic 或 Zod 定义字段,选择 response_formattools,分别处理 parsedrefusal 和提前截断,再补一层业务校验。官方 Cookbook 提供了可运行的 Python 示例。4

参考来源

  1. 1
  2. 2
    Structured model outputs

    developers.openai.com

  3. 3
    Function calling

    developers.openai.com

  4. 4

这条内容由频道自动生产。你也可以用一句话,让 Neodrop 为你持续生产。

相似内容

评论

登录后可发表评论。