AI Tech News
By D.L.

结构化输出之战:Claude、GPT 和 Gemini 实现为何分化——以及如何为生产环境构建

核心问题:LLM 输出需要确定性,而非对话式

您需要 LLM 返回经过验证的 JSON。您传递一个模式。您期望一致性。但每个主要供应商保证这一结果的方式——或者说没有保证——将塑造您整个生产集成策略。

结构化输出通过确保 API 响应符合定义的模式,消除了与模式相关的解析错误和失败的工具调用 。但当您在生产环境中大规模运行时,实现细节就显得至关重要。投资 LLM 基础设施的组织在承诺使用特定技术栈之前,需要理解这些差异。

Claude:受约束的采样与工具使用强制

Claude 的结构化输出采用受约束的采样和编译语法工件 ,其架构反映了 Anthropic 的理念:在 JSON 输出和工具保证之间分离关注点。

Claude 的结构化输出现已在 Claude Developer Platform 和 Amazon Bedrock 上正式发布(GA),支持 Claude Sonnet 4.5、Opus 4.5 和 Haiku 4.5 。该平台还与 Amazon Bedrock 集成,其中结构化输出已正式发布支持 Claude Opus 4.6、Claude Sonnet 4.6、Claude Sonnet 4.5、Claude Opus 4.5 和 Claude Haiku 4.5 。

关键的运维细节是: output_format 参数已移至 output_config.format,旧版 beta 头部(structured-outputs-2025-11-13)将在过渡期继续工作 。这表明该功能已成熟,但也需要明确的迁移工作。

独特之处在于双轨制方法。 当您定义一个工具时,Claude 必须返回与您的 JSON 模式相匹配的结构化响应。它在物理层面无法偏离该模式——API 在输出层强制执行 。这是代理系统可靠性的黄金标准,但它要求您使用工具定义而非独立的响应格式参数来结构化您的请求。

OpenAI 的 GPT:受约束的解码,但存在特定于模型的限制

结构化输出在最新的大型语言模型中可用,从 GPT-4o 开始 。这是标题新闻。但这是生产环节的关键点: OpenAI 采取了确定性的、基于工程的方法,通过受约束的采样或受约束的解码将模型的输出约束为 100% 的可靠性 。

其机制是坚实的。 OpenAI 训练其最新模型 gpt-4o-2024-08-06 理解复杂模式,但尽管该模型的性能有所提高(基准测试中达到 93%),仍然无法满足开发者构建健壮应用程序所需的可靠性 。这就是为什么他们添加了确定性层。

但可用性是碎片化的。 带有 response_format 的结构化输出仅支持 gpt-4o-mini、gpt-4o-mini-2024-07-18 和 gpt-4o-2024-08-06 模型快照及更新版本 。较旧的模型如 GPT-4 Turbo 回退到 JSON 模式 ——它保证有效的 JSON,但不保证模式符合性。

对于使用 GPT 的团队来说,真正的问题是模型年龄。 response_format 参数的新选项允许开发者通过 json_schema 提供 JSON Schema,当模型不是调用工具,而是以结构化方式响应用户时这很有用 。这与 Claude 的方法根本不同:它是一个响应格式契约,而非工具定义。

Gemini:合作伙伴模型支持,但受外部约束

Google 的 Gemini 在 Gemini API 本身上没有原生结构化输出支持。相反, Gemini Enterprise Agent Platform 支持结构化输出,让您约束 Claude 模型生成的输出以严格符合特定的 JSON 模式,这对于确保您的 Claude 模型的响应始终采用下游应用程序所需的精确格式很有用 。没错,这是在 Google 的基础设施上运行的 Claude。

这是一个关键的运维区别。如果您在 Gemini 的主 API 上构建,您没有原生结构化输出。如果您在通过 Gemini Enterprise Agent Platform 的 Google Cloud 上,您实际上是在使用具有结构化输出支持的 Claude 模型,并附加了 Google 组织策略约束的治理层。

生产决策框架

在这些选项之间进行选择不是关于哪个"更好"——而是关于哪种运维约束适合您的组织。

供应商 模式强制方法 覆盖范围 工具使用 关键运维成本
Claude 带工具定义的受约束采样 Claude Fable 5、Claude Mythos 5、Claude Opus 4.8 及更新版本 内置,严格模式可用 迁移到 output_config 参数;工具优先设计
OpenAI (GPT) 推理时受约束的解码 仅 GPT-4o 和 GPT-4o-mini 支持函数调用;模式强制分离 模型版本管理;不支持较旧的 GPT-4
Gemini(直接 API) 非原生 不适用 通过工具的函数调用 需要自定义解析和验证
Gemini Enterprise(Claude 合作伙伴) Claude 的受约束采样 Claude Opus 4.6+ Claude 工具使用 Google Cloud 治理开销

生产团队的三个架构影响

1. 模式演化和版本控制。 Claude 的工具使用方法意味着您的模式被烘焙到函数签名定义中。更改模式需要对您的工具定义进行版本控制。GPT 的 response_format 方法与工具调用解耦,因此模式更改不需要重新定义工具——但您失去了函数调用和结构化响应保证之间的集成。

2. 回退和降级策略。 GPT 中的结构化输出仍然存在边界情况,如由于达到 max_tokens 限制而导致的不完整响应,以及在处理用户生成输入时可能不符合您定义模式的模型拒绝 。Claude 的受约束采样避免了不完整输出,但您需要防御性地设计工具定义。相应地规划您的错误处理。

3. 成本和延迟权衡。 受约束的解码(OpenAI)和受约束的采样(Claude)具有不同的计算特征。Claude 中的采样方法可能与解码方法相比具有边际不同的延迟特征。如果您以高请求量运营(例如,每月 10 万次以上推理),请根据每个供应商的实现对您的特定工作负载进行基准测试——在规模上,数字很重要。

现有系统的迁移路径

如果您当前使用基于提示的 JSON 提取(在系统提示中嵌入模式并解析正则表达式),原生结构化输出的价值是显而易见的:无需自定义解析的可靠性。但切换不是瞬间完成的。

从一个生产模式开始——不是您最关键的那个。 使用您的请求传递 JSON Schema,每个响应都严格符合该模式。返回的数据已准备好使用——无需后处理、无需验证、无需意外 。衡量相对于您的基线实际错误率的减少。然后扩展。

对于已使用 Claude 的团队:工具使用模式在代理系统中已经过实战考验。如果您已经在使用工具调用,迁移到用于结构化输出的显式工具定义通常是一个小转变。

对于使用 GPT 的团队:确保您使用的是受支持的模型版本。如果您无法从 GPT-4 Turbo 升级,JSON 模式仍然是相对于仅提示提取的升级,但它不如结构化输出提供的保证那样强。

对于考虑 Gemini 的团队:主 API 上缺乏原生结构化输出是一个真正的约束。如果结构化输出可靠性对您的用例是不可协商的,Gemini Enterprise Agent Platform 路径(运行 Claude 模型)或迁移到具有直接支持的供应商值得认真考虑。

这对您的团队意味着什么

结构化输出实现不再是锦上添花的功能——它们是生产 AI 系统的基线。但数据表上的"结构化输出支持"在供应商之间并不意味着相同的东西。模式强制的实现方式、哪些模型支持它、它如何与工具调用交互,以及当模型遇到边界情况时会发生什么,都差异显著。

在标准化供应商之前,针对每个实现测试您的实际工作负载。衡量模式符合性、延迟、错误率和成本。不要假设最新的模型是您基础设施的正确选择。决定不是在营销材料中做出的——它是在部署时在真实流量下做出的。