AI 结构化输出怎么做?用 OpenAI JSON Schema 固定字段并校验结果

用 Pydantic 和 Structured Outputs 固定 JSON 字段,验证缺失值,并处理拒答、解析异常和事实校验。

当下游程序需要固定字段时,只在提示词里说“请输出 JSON”还不够。Structured Outputs 会让模型按提供的 JSON Schema 生成结果。Python 项目可以用 Pydantic 模型解析,再做业务规则校验。

定义字段和约束

下面把客服消息提取为类别、紧急程度和订单号。订单号允许为空,避免模型为缺失字段编造值:

AI 结构化输出怎么做?用 OpenAI JSON Schema 固定字段并校验结果

from typing import Literal
from pydantic import BaseModel
from openai import OpenAI

class Ticket(BaseModel):
    category: Literal["物流", "退款", "其他"]
    urgent: bool
    order_id: str | None

client = OpenAI()
response = client.responses.parse(
    model="gpt-6-astra",
    input=[
        {"role": "system", "content": "只提取原文信息;缺失订单号填 null。"},
        {"role": "user", "content": "包裹三天没更新,我明天出差。订单号 A102。"},
    ],
    text_format=Ticket,
)

ticket = response.output_parsed
print(ticket.model_dump())

怎样验收结构化结果

预期字段应为 category=物流、urgent=true、order_id=A102。再测试一条没有订单号的消息,确认得到 null 而不是虚构编号。最后用非法类别测试 Pydantic 是否会阻止下游直接使用。

结构正确不等于事实正确

JSON Schema 约束的是形状和类型,不能保证提取事实一定正确。对金额、日期、身份、医疗信息等关键字段,还要与原文逐项比对。也要处理拒答、内容不完整、请求失败和解析异常,不得把空对象当作成功结果。

与工具调用的区别

如果模型只是把回答交给你的界面或数据库,使用结构化 text.format。如果模型要请求你的程序执行查库存、退款或发邮件等动作,使用函数或工具调用,并在应用端验证参数与权限。

本文依据 2026 年 10 月 1 日官方 Structured Outputs 文档,示例未在你的 SDK 版本、模型权限和业务数据上实测。

相关问题

所有模型都支持同样的 Schema 吗?

不要假定。应在模型目录确认支持情况,并把复杂 Schema 缩减后逐步测试。

可以直接把解析结果写入数据库吗?

先做业务校验、权限检查和幂等控制;高风险字段还需人工复核。

参考:OpenAI Structured model outputs

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31251.html

赞 (0)
AI小管家的头像AI小管家
ChatGPT API 是什么、能做什么?用 OpenAI API 能力地图选对接口
上一篇 1天前
智能体联网搜索怎么测试?用 OpenAI Web Search 核对引用与来源
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部