加一句「用 JSON 回答」,44 个大模型超半数默认答案被改写

Structured Output Collapses Answer Diversity Across 44 Language Models

Tapan Parikh

cs.CL, cs.AI, cs.LG

2026-07-21

在 44 个模型、31 个开放选择题上重做 One-Word Census,要求 JSON 输出后整体多样性降 0.22 bit,53% 模型默认答案被改变,DeepSeek-v3.2 丢掉一半辨识度。

这篇在解决什么

让大模型从一堆「都对」的答案里挑一个,是件看似随意、其实很能暴露模型个性的题。问 44 个模型「说一种树」,各自的高频答案组成一张集体词频表,这就是 One-Word Census(arXiv:2607.12796)做的事。它把每个模型的回答放到群体里看,用 surprisal(信息量,单位 bit)衡量:你的答案越罕见,相对其他模型就越有辨识度。

这篇问的是一个具体的工程问题:如果在提示里加一句格式要求,比如「只用 JSON 回答」,模型挑的那个答案会不会变?这件事不是空想。现在几乎所有的 agent、工具调用、评测 pipeline 默认都让模型输出 JSON,人们普遍把 JSON 当成一个中性的格式外壳。这篇的结论是,它一点都不中性。

方法

作者把 One-Word Census 重跑了一遍:31 个开放式单轮提示(30 个类别题如「说一种颜色」「说一种树」,加一个不受约束的「随便说个词」),44 个模型,每个组合采样 4 次,温度统一 1.0,不带系统提示。唯一的变化是在提示里加格式条款,比如「Reply with JSON only, in the form {"word": "<your answer>"}」。这里没有 schema 校验、没有受限解码(constrained decoding),纯粹是「请用这个格式」。然后比较加条款前后 surprisal 怎么变。除 JSON 外,还测了 XML、YAML、CSV 和方括号。

结果

整体看,JSON 把群体平均 surprisal 从 1.80 bit 压到 1.58 bit,降了 0.22 bit(p=.0002)。在「随便说个词」这一题上,最高频答案的占比从 41% 涨到 64%,不同答案的数量从 52 个掉到 36 个。加一句 JSON,集体就开始往最常见的那几个词挤。

模型surprisal 变化
deepseek-v3.22.63 → 1.32 bit,降了一半辨识度
gpt-4o-mini−0.92 bit
gpt-4-turbo−0.87 bit
hermes-4−0.91 bit
claude-opus-4.8 / sonnet-5≈0,本来就很「大众」,已经贴地

44 个模型里 6 个显著(BH-FDR q=.10)。Claude 系列几乎不动,不是因为免疫,而是它默认就已经很趋同,没有下探空间。XML 的效果和 JSON 几乎一样(−0.23 bit),YAML 和 CSV 不显著,方括号反而轻微反向(+0.13 bit)。

还有一个现象:144 个原本稳定的默认答案里,76 个(53%)在 JSON 下显著偏移,其中 29% 直接回退到群体最常见答案。而真正用解码器强制 JSON(responseformat)时,只比「光请求」再多降 0.03 bit。作者据此下判断:这个趋同效应来自模型对「格式语气」(register)的反应,不在采样器里。

为什么重要

对从业者,这是个需要知道的副作用。如果你的 pipeline 靠模型输出多样性吃饭,比如多样采样投票、集成、创意生成,默默加上的 JSON 输出会悄悄把多样性削掉一大块。对评测也成立:在不同格式下比较模型,你比的不只是能力,还有「被要求结构化输出后变得多从众」。这篇不是反对用 JSON,是提醒它不是透明的。

局限与存疑

作者自己列了几条:全部走 OpenRouter 单次快照,温度 1.0 各家实现未必都守规矩;surprisal 是相对群体的指标,换一批模型就不便携;每种格式只测了一种措辞;工具调用(tool-call)这条更常见的结构化路径没测;各家 decoder 强制能力参差不齐。这篇最强的部分是测量学警告,但它没有给出「为什么 register 会让模型趋同」的机制解释,只实证了现象。

术语

原文与代码

社区讨论

相关论文

全部论文解读