技术深度剖析
核心问题在于基于Transformer的LLM的基本架构。这些模型基于下一个词元预测目标进行训练,优化给定上下文中最可能的延续。当生成JSON等结构化输出时,模型学会产生符合句法模式的词元——括号、冒号、逗号和键名——但它没有内在机制来验证分配给这些键的*值*是否事实正确。该基准测试由AI安全研究人员联盟开发,系统性地测试了五个领先模型,涵盖10,000个结构化输出任务,跨越三个领域:财务发票、会议转录和医疗记录。
失败架构:
LLM使用注意力机制权衡上下文,但当生成像`invoice_date`这样的数值字段时,模型必须将语义概念(例如“上个月的发票”)映射到特定日期字符串。模型对“上个月”的内部表示是概率性的——它可能锚定到训练数据中“上个月”频繁出现特定月份的模式,或者基于提示中的当前日期进行插值。结果是系统性漂移:日期向任一方向偏移30-60天,与实际发票期间无关。
基准测试方法:
| 模型 | 格式合规率 (%) | 数值准确率 (%) | 数组顺序准确率 (%) | 日期漂移 (平均天数) |
|---|---|---|---|---|
| GPT-4o | 99.2 | 58.3 | 62.1 | 34.7 |
| Claude 3.5 Sonnet | 98.7 | 55.6 | 59.8 | 41.2 |
| Gemini 1.5 Pro | 98.1 | 52.4 | 57.3 | 48.9 |
| Llama 3.1 405B | 97.5 | 48.9 | 54.2 | 52.1 |
| Mistral Large 2 | 96.8 | 46.2 | 51.7 | 55.6 |
数据要点: 所有模型的格式合规率几乎完美,但数值准确率徘徊在50%左右——意味着每两个结构化输出中就有一个包含幻觉值。数组顺序准确率更差,模型经常打乱会议转录或发票行项目的条目顺序。
原因分析:
问题因LLM没有“记忆”同一输出中先前生成的确切值而加剧。当生成包含多个日期字段的嵌套JSON对象时(例如`invoice_date`、`due_date`、`payment_date`),模型可能独立生成每个字段,导致逻辑不一致——比如到期日期早于发票日期。基准测试发现,23%包含多个日期字段的输出至少有一个时间矛盾。
相关开源工作:
几个GitHub仓库正试图解决这一问题。`outlines`库(目前8500星)通过将模型输出约束到预定义语法来实现结构化生成,但它只强制语法,不强制语义。`lm-format-enforcer`仓库(3200星)采用类似方法。更有希望的是`json-repair`(1800星),它尝试修复格式错误的JSON,但无法检测幻觉值。`factool`仓库(2100星)为LLM输出提供事实核查层,但增加了显著延迟和成本。
真正解决方案:带外部验证的约束解码
最有前景的技术方法是将JSON结构的生成与值的生成解耦。与其让LLM同时生成两者,系统可以:
1. 使用LLM解析用户请求并识别所需字段。
2. 查询外部确定性系统(例如数据库、计算器、日历API)来填充值。
3. 仅使用LLM格式化最终JSON。
这种“混合架构”消除了关键数值字段的幻觉风险。Glean和Notion等公司已在其AI功能中实施类似方法,尽管它们未披露确切架构。
关键参与者与案例研究
基准测试创建者:
来自加州大学伯克利分校和艾伦人工智能研究所(AI2)的研究团队开发了该基准测试,他们称之为“StructVal”。他们尚未发布完整数据集,但初步结果已在2025年自然语言处理实证方法会议(EMNLP)上展示。首席研究员Sarah Chen博士表示:“我们并非试图抨击LLM。我们试图迫使行业正视一个可能造成现实世界伤害的盲点。”
行业回应:
| 公司/产品 | 方法 | 当前状态 |
|---|---|---|
| OpenAI (GPT-4o) | 带JSON模式的结构化输出API | 已发布;仅格式验证 |
| Anthropic (Claude 3.5) | 带结构化输出的工具使用 | 已发布;无数值验证 |
| Google (Gemini 1.5) | Vertex AI中的JSON模式 | 已发布;仅格式 |
| LangChain | 结构化输出解析器 | 开源;仅格式 |
| Vercel AI SDK | 带Zod验证的结构化输出 | 开源;仅格式 |
数据要点: 每个主要提供商都提供结构化输出功能,但无一在生成时验证数值准确性。这意味着依赖这些输出的下游系统——从自动会计到医疗记录处理——正在摄入系统性污染的数据。