模型层 开放阅读

Structured Outputs

Structured Outputs

概念 ID
structured-outputs
更新时间
2026-05-29
来源数量
待补

Structured Outputs

3 秒看懂

Structured Outputs(结构化输出) 是一项让大语言模型(LLM)生成严格符合预定义格式/模式文本的技术,如 JSON、SQL、特定业务表单、甚至受语法约束的自由文本。它不是简单的提示词引导,而是通过解码时对模型词汇表施加约束,从根上杜绝格式非法。在 Agent 与工具调用、数据自动录入、合规报告等场景,结构输出是决定系统可靠与否的关键生产级能力

3 分钟产业解释

在 LLM 应用大规模落地的今天,模型生成的文本能否被下游程序直接、确定性解析,已经成为瓶颈。结构输出技术旨在将“自然语言理解”的输出接入“结构化系统”,消除格式错误、字段缺失、非法令牌带来的解析失败。

  • 轻量方案:提示工程 + 后处理正则修复(成本低,鲁棒性差)。
  • 工程化方案:通过约束解码(constrained decoding),在每一步生成时动态屏蔽不符合语法/模式的 token,保证输出 100% 符合目标结构。
  • 产业位置:处在模型推理与下游应用之间,属于 LLM 工具层/中间件。上游对接模型服务商(OpenAI、Anthropic、Meta 等)的推理引擎,下游服务企业软件开发商、自动化平台。

当前,结构化生成已从“锦上添花”变成企业级 LLM 应用的刚性需求,尤其在金融合规填报、医疗单据、代码生成与 API 调用等领域。未来这一能力会内化成模型服务的默认功能,类似数据库的“约束”机制。

15 分钟专家深入

结构化输出并非单一技术,而是一条从无约束文本映射到强制格式的技术谱系,按约束强度可分为:

  1. 提示约束(Prompt-level):用 few-shot、角色说明、格式指令引导模型。有一定成功率,但存在幻觉,无法保证 100% 合规。
  2. 后处理修复:接收原始输出后进行正则匹配、JSON 修复、重采样。易实现,但修复失败或丢掉语义的风险高,且额外增加延迟。
  3. 约束采样(Constrained Sampling/Decoding):在自回归生成时,每一步对 logits 施加掩码,屏蔽掉与目标格式不兼容的 token,保证生成的序列被自动机或语法接受。
  4. 端到端训练:在模型微调阶段即加入格式约束数据,或使用结构化损失函数。成本高,但可减少推理时的约束开销,提升生成质量。

目前最具工程价值的是约束解码,它能以较低推理开销实现严格格式保证,常作为推理引擎插件(如 vLLM guided decoding、Hugging Face Transformers 通过 constraints 参数及 DisjunctiveConstraint 等支持约束生成)或独立库(Outlines、Guidance、LMQL)存在。OpenAI 在 ChatGPT/API 中提供的“JSON 模式”即为一种受限的约束解码实现(只能保证 JSON 语法正确,不保证 schema 完整),而 GPT‑4 Turbo 的 Structured Outputs 功能(2024 年发布)则更进一步,可绑定 JSON Schema,实现字段类型、枚举值的强制匹配。

技术原理(最深)

约束解码的核心思想是:将目标文本格式描述为一个有限状态自动机,然后在每一步生成时,仅允许能继续合法路径的 token 进入候选。深度展开其工作机制如下:

1. 格式转为状态机

给定 JSON Schema、正则表达式、或上下文无关文法(CFG),先编译成一个确定/非确定的有限自动机或下推自动机。以 JSON 生成为例:

  • 状态包括: start, key, colon, value, string, number, comma, end 等。
  • 每个状态下合法字符集明确,如 key 状态只能生成双引号开始;string 内部不能出现未转义的双引号。

将字符级自动机映射到 Token 级约束 是难点,因为 tokenizer 会切割字符串。一种做法是构建一个基于词表前缀的状态图,使每个 token 都能对应一条或多条状态转移路径。

2. 每一步的约束过程(伪代码表达)

for each generation step:
    logits = model.forward(prefix)     # 获得所有 token 的得分
    mask = build_token_mask(prefix, fsm)
    logits[~mask] = -inf               # 屏蔽非法 token
    next_token = sample(logits)        # 从合法集合采样
    prefix += next_token

掩码构建 build_token_mask 负责维护已生成序列对状态机的推进,返回当前可用的 token id 集合。一种高效实现是预先编译整个词表到自动机状态的映射表(从每个状态可到哪些 token),如同 Outlines 库所为。

3. 多模式支持

  • 正则约束:将正则表达式编译为确定有限自动机(DFA),再与词表进行交集运算生成令牌级状态转移表。
  • JSON Schema 约束:先展开为规范化的 JSON 语法,然后编译成自动机。过程中需处理可选字段、anyOf/oneOf、递归引用。某些实现通过惰性构建(lazy building)避免状态爆炸。
  • CFG 约束:适用于编程语言等复杂语法。使用 Earley 解析器或 GLR 解析器在线性化步骤实时过滤 token。但计算开销高于正则/JSON,通常需做性能裁剪。

4. 与采样策略的兼容

约束解码可以与温度、Top‑k、Top‑p 采样无缝结合:先施加格式掩码,再在合法 set 上应用温度缩放和截断。不过,当合法 token 过少时,采样分布可能极度集中,影响多样性。工程中会通过加回一个保底的低概率噪声 token 或动态调整温度介入。

5. 性能考量

约束解码带来的额外延迟主要体现在:

  • 状态追踪更新:O(1) 至 O(N) 不等,精心优化的哈希表可实现每次解码<1ms 的增量。
  • 掩码计算:通常需在 GPU 端完成 softmax 前将非法 logits 置 -inf,需传递 mask 张量。对于大 vocab (128k+) 来说内存和数据搬运有成本,但多数系统已做到吞吐几乎无感知。
     用户输入 JSON Schema
              │
              ▼
     Schema 编译为 Indexed FSM
              │
              ▼
   Token 词表 → T令牌-状态转移矩阵
              │
              ▼
  LLM 逐步解码 → 每一 logit 与掩码交互 → 采样合法 token
              │
              ▼
        100% 合法 JSON 字符串

技术演进史

  • 2016‑2019 预 LLM 时代:序列生成约束以自定义 RNN/Transformer 的小规模实验为主,如用 CFG 约束神经网络诗歌生成(学术 demo),产业应用未见。
  • 2020‑2022 提示工程为主:GPT‑3 出现后,“格式指令 + 后处理” 成主流。LangChain 推出 OutputParser 封装了部分修复逻辑。但格式错误率长期在 5‑15% 波动,企业级部署受阻。
  • 2023 约束解码爆发:微软推出 Guidance(基于 Handlebars 模板+受限生成),随后 NVIDIA NeMo Guardrails、LMQL、Outlines 等出现。OpenAI 引入 JSON mode,但只保证 JSON 语法,不保证 schema。Meta Llama 生态中,llama.cpp 和 Hugging Face Transformers 逐步集成语法约束功能。
  • 2024 功能内化为 API:OpenAI 在 GPT‑4 Turbo 中提供原生 Structured Outputs(schema 强约束),Anthropic 通过扩展提示中的“function calling”定义实现工具调用结构化。vLLM 及 SGLang 等推理引擎将约束解码作为标配,以低延迟支持复杂 schema。业界开始视其为模型服务的基线能力,不再是 add‑on。

技术路线对比(量化表)

(以下对比基于行业公开技术特性,非精确 benchmark 数据,仅供参考)

路线格式合规率语义保真度推理额外开销schema 支持实施复杂度
提示工程 + 后处理修复~90‑98%(场景依赖)较高极低简单 JSON
约束解码(正则/JSON 语法)100% 语法合法中等(可能丢失字段)低‑中(<5% latency)支持正则、基础 JSON
约束解码(全 schema)100% 字段/类型合规(理论上)保守(严格屏蔽可能降低流畅度)中(<10% latency)递归 schema, anyOf 等
端到端微调+解码约束近 100%高(模型习得格式节奏)低(解码约束弱化)依赖训练数据极高(训练成本)
  • 合规率:约束解码类在实现正确时可达确定性的 100% 结构正确,但语义正确性仍依赖模型。
  • 延迟开销:为经验估算,具体取决于词表大小、状态空间大小。轻量 JSON 约束在主流引擎上可做到吞吐下降 <2%。

上下游

上游

  • LLM 提供商/推理引擎:OpenAI、Anthropic、Google(Gemini 的 controlled generation)、Meta(通过 Llama 生态)、Mistral 等。这些厂商在推理管线中实现或面临集成结构化输出需求。
  • 约束引擎框架:Outlines(dottxt)、Guidance、LMQL、SGLang、vLLM、TensorRT-LLM 的 guided decoding 插件。
  • 标准格式定义组织:JSON Schema 规范、Apollo GraphQL、OpenAPI 等,间接影响约束表达力。

下游

  • Agent 与工具调用:当 LLM 需要生成精确函数调用参数时,结构化输出是必备件,如 LangChain、AutoGPT、AWS Bedrock Agents。
  • 垂直应用软件:智能表单、合同生成、医疗信息抽取、金融合规报告自动填报等。
  • 数据工程与 ETL:用 LLM 将非结构化文本转化为表结构(如GPT Crawler 到数据库),可靠的结构输出决定数据管道的稳定性。

关键指标

  • 格式正确率(Format Accuracy):输出字符串是否可通过目标编译器的解析,对 JSON 而言即 JSON.parse 不抛异常。高成熟度系统可达 >99.99%(仅受实现 bug 影响)。
  • Schema 合规率:在所有字段、类型、枚举值上完全符合给定 schema 的比例。这是更强指标,即便 JSON 合法仍可能缺少字段。
  • 解码吞吐量(Tokens per second):与无约束推理对比的吞吐下降百分比,是生产部署的主要关注点。典型值:<5%‑10%(估算,来源:社区分享)。
  • 首 token 延迟(TTFT):约束会轻微增加编译和状态初始化时间,但通常 <50ms。
  • 语义保真度:不易量化,通常以人工评估或下游任务指标衡量。过度约束可能导致模型用尴尬的措辞填充,可在弱约束(只验格式)与强约束间做权衡。

供需与市场数据

由于结构化输出属于 LLM 工具层的细分领域,暂无独立第三方市场规模报告。但从几个侧面可见其爆发性需求:

  • API 内化趋势:OpenAI 在 2024 年 8 月全面开放 Structured Outputs 功能,并免去此前 JSON mode 的额外费用,将其定位为 API 的基础功能。此举实质将大量第三方的解析/约束库市场空间压缩。
  • 开源生态热度:Outlines(GitHub star 超 8k,截至 2024 底)、 Guidance(Microsoft 出品,star >17k),表明开发者对低层控制的结构约束有刚性需要,尤其当所用模型没有原厂 API 时。
  • 企业付费意愿:据多份行业调研提及(无具体公开数据),落地 LLM 应用的企业最核心的痛点中,“不可靠输出格式”排在前三。能够解决此问题的中间件或服务因此拥有强议价能力,部分创业公司围绕“可靠的结构化提取”构建付费产品(如 V7 Go’s structured extraction)。市场处在早期快速增长阶段,但 API 层的“标准件”可能令独立中间件赛道集中化。

代表公司与资本映射

(以下为产业公开信息,部分公司的具体估值/营收未披露,故用定性描述)

  • OpenAI:已将结构化输出内化为 ChatGPT 与 API 的内置特性,与函数调用深度绑定。其在资本层面的影响是抬高了 LLM 基础设施的准入标准,让后来者必须有此功能才能竞争。
  • Anthropic:通过 tool_use 功能及系统 prompt 中的结构定义提供近似能力,走“长时间上下文+强遵循指令”路线,约束解码的透明度低但实战效果好。在安全性要求高的行业(如法律、政府)有差异化优势。
  • Meta (Llama):开源模型并无内置服务,但其开放权重使得社区能够自由施加约束解码。Meta 间接通过 vLLM 等社区项目获得此能力,在私有化部署市场占据庞大生态位。
  • dottxt (Outlines 商业实体):专注结构化生成的初创公司,提供高性能约束推理产品。定位为“企业级结构化输出基础设施”,获风投支持,与自托管模型市场深度绑定。
  • Guidance (Microsoft):微软研究院孵化的语言控制框架,与 Azure AI Studio 有集成潜力,代表传统云厂商通过工具链占领结构化应用程序构建。
  • SGLang (斯坦福/社区驱动):高效的 LLM 服务框架,内置 RadixAttention 与结构输出,开源生态活跃。反映学术界向推理级优化的渗透。

资本映射逻辑:结构化输出赛道并不大可能诞生百亿市值的独立公司,但它决定 LLM 平台竞争中的粘性效率护城河。研究中可把这一能力对 LLM API 提供商市场份额的影响,以及其对 Agent/自动化平台公司的赋能价值作为观察变量。

投资逻辑

  1. 集成商优先受益:最早将结构化输出做进 API 的平台(如 OpenAI)能吸引大量对可靠格式敏感的企业客户,推动其推理收入增长。这类改进会拉开与第二梯队的体验差距。
  2. Agent 落地催化剂:可靠的工具调用和互联是 Agent 的前提。结构输出技术成熟度直接决定 Agent 在金融交易、供应链管理等严肃场景的渗透节奏。应密切关注能提供“100% 可靠输出的 Agent 基础设施”的标的。
  3. 私有化部署提供窗口:在数据隐私要求高的行业(金融、医疗),企业倾向自部署模型。能够为开源模型提供高性能结构约束的中间件厂商(如 dottxt)存在成长空间,但需面对云厂商的挤压。
  4. 收益与风险:错误的结构约束引入可能导致生成质量下降(死循环、拒答),过度依赖单一厂商的格式实现会造成锁定。评估相关公司时需考量其约束引擎的灵活性和模型无关性。
  5. 估值逻辑:不应单独评估“结构输出”技术本身,而应将其视为 LLM 平台/AI 基础设施产品力的一部分。拥有卓越结构生成能力的平台公司应获得更高的 ARPU(每用户平均收入)和更低的流失率,从而在估值上有溢价。

常见误读纠偏

  • 误读1:“JSON mode 就是完全的结构化输出。” 纠正:JSON mode 仅保证输出为合法 JSON,不保证符合预期的字段、类型、或是完整的 Schema。例如一个 JSON mode 可能输出 &#123;"name": 123&#125;,虽为合法 JSON,但 name 字段类型错了。完全的结构化输出应将 Schema 约束下推至每一次 token 选择,确保字段存在且类型正确。
  • 误读2:“结构输出牺牲了太多创造力,只能用于格式化任务。” 纠正:约束只定义输出外壳,内容本身仍由模型自由生成。例如强制输出一个评论列表 &#123;"reviews": ["...", "..."]&#125;,每条评论的内容仍可天马行空。创造力损失更多发生在模型对齐阶段,而非格式约束。事实上,精细的约束还能防止模型说“废话”,反而提升有用性。
  • 误读3:“约束解码慢,不适合生产环境。” 纠正:现代实现(如 Outlines 的索引、vLLM 的 Guided Decoding)已将开销压缩到极低,多数场景下近乎零感知。对延迟敏感的应用,还可通过预编译缓存部分状态图进一步降低。一些 benchmark(社区测试)显示 JSON Schema 约束可比无约束推理吞吐降低约 2‑7%,这在多数生产系统的接受范围内。

学习路径

  1. 基础理解:阅读 OpenAI 的 Structured Outputs 文档 和 Anthropic 的 Tool use 指南,理解产品侧的能力边界。
  2. 学术/原理深度:读论文 “Outlines: A simple way to generate structured text from LLMs”(Willard & Louf, 2024),以及 “Grammar‑constrained decoding for structured NLP tasks” 系列文章,了解 FSM 与词表映射。
  3. 动手实践
    • 使用 Outlines 配合 Hugging Face 模型,实现一个带 Enum、递归的 JSON Schema 生成。
    • 用 vLLM 的 guided_decoding 参数部署一个 API,对比开/关约束下的格式正确率和延迟。
  4. 跟进前沿:关注 SGLang 的 constrained decoding 发展、Apache TVM 社区的讨论(讨论将约束下沉到计算图编译),以及 llama.cpp 的 grammar 支持更新。
  5. 产业视角:跟踪各大 LLM 厂商的 API 更新日志,哪些约束类型是差异化功能?如何影响定价?这有助于理解竞争格局的变化。

一句话总结

Structured Outputs 将 LLM 从“会说人话的创造者”转变为“会格式化数据的坚实 API 端点”,是 AI 从对话玩具走向生产系统必须打通的“最后二十米”。

延伸阅读与来源

  • OpenAI. Introducing Structured Outputs in the API (2024). [Blog post]
  • Anthropic. Tool use (function calling) documentation (2024). [Docs]
  • Willard, T., & Louf, A. “Outlines: Simple structured generation from large language models.” arXiv preprint (2024).
  • Microsoft. Guidance: A guidance language for controlling large language models. GitHub repository (2023). [github.com/guidance-ai/guidance]
  • SGLang. Efficient LLM serving with structured generation. Project documentation (2024). [sglang.ai]
  • vLLM. Guided Decoding proposal and implementation. GitHub discussions (2024).
  • 行业媒体分析:The Sequence, “Why Structured Outputs Are the Next Big Thing for LLMs”; SemiAnalysis 等评述。

(由于本次检索失效,以上信息基于公开资料与行业知识总结,未标注具体商业数据来源,仅供参考。)

source: 公开披露与公开资料整理 本页仅用于产业链学习、信息检索和研究辅助;不构成投资建议,不预测涨跌,不提供买卖、仓位或目标价建议。
完整概念页 复盘 13 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型