跳转到主要内容

Schema 驱动的 Prompt 设计:让你的数据模型主导 Prompt 结构

阅读需 2 分钟Tian PanTian Pan

你的数据模式(schema)就是你的提示词。大多数工程师将这两者视为独立的事物——你设计数据库模式是为了满足范式规则,而你设计提示词是为了清晰和具描述性。但实体模式的形状对 LLM 输出质量有着直接且可衡量的影响,忽视这种关系是生产环境 AI 系统中最昂贵的错误之一。

一家中型电子商务公司的团队在他们的产品提取流水线开始生成幻觉模型年份时发现了这一点。修复方法并不是更好的提示词,而是将 {"model": {"type": "string"}} 更改为一个具有明确描述和正则表达式约束的字段。这单一的模式更改——记录在 PARSE 研究中——在他们的提取基准测试中带来了高达 64.7% 的准确率提升。

问题比字段描述更深。它触及了规范化、字段排序、嵌套深度、枚举设计,以及一个根本问题:LLM 能从你提供给它的结构中推断出什么,以及不能指望它推断出什么。

规范化陷阱

关系数据库设计教导你要进行规范化:消除冗余,将关系推入外键,将每条数据保存在一个地方。一个 orders 表通过 product_id 引用 products 表。整洁、高效、规范。

对于 LLM 提示词来说,这恰恰相反。

当你的模式要求模型在大脑中重构一个连接——找出哪个 category_id 对应哪个类别名称,或者哪些属性属于哪个产品类型时——模型会利用其训练分布来填补空白。它会进行猜测。而在复杂的模式中,它猜错的概率会不断累积。

PARSE 研究(发表于 EMNLP 2025)分析了针对 LLM 使用优化模式时究竟发生了什么变化。在所有提高提取准确率的修改中,55% 是结构扁平化——即将规范化的模式进行去规范化,从而使模型永远不必推断关系。另外 34% 是增强的字段描述,使字段范围更加明确。

实际影响是:如果你的数据模型为了存储效率而进行了规范化,你需要一个独立的、为 LLM 使用而优化的去规范化“提示词模式”。模型应该接收 product_namecategory_namecategory_type 作为兄弟字段——而不是指向它无法访问的查找表的 product_idcategory_id

嵌套深度如何破坏准确率

现代 JSON Schema 支持任意深度的嵌套。LLM 无法统一处理。

DeepJSONEval 基准测试测试了跨嵌套层级的提取准确率,并发现了一个陡峭的下降悬崖。在中等嵌套(深度 3–4)时,严格准确率得分在 54% 到 71% 之间。在困难嵌套(深度 5–7)时,得分下降到 43–53%。即使是该研究中表现最好的模型,在深层嵌套模式上的严格准确率也仅为 52.63%。

故障模式是不对称的。格式错误——如缺少键或类型错误等结构性问题——在参数超过 70 亿的模型中基本消失了。LLMStructBench 研究(22 个模型,2026 年 2 月)发现,大型模型中 97–98% 的剩余错误是错误值错误——即结构完美但内容虚假或归因错误的语义失败。更深的嵌套增加了模型必须解决的语义模糊性,而它通过编造听起来合理的数值来解决。

可操作的阈值:将提取模式保持在 2–3 层嵌套。当你的领域需要更强的复杂性时,将提取分解为流水线:

  1. 先分类:使用一个带有文档类型枚举的小型专注模式。
  2. 按类型提取:使用一个仅包含与该文档类别相关的字段的特定类型模式。
  3. 验证交叉引用:运行最后一遍以验证提取的值是否一致。

每个阶段都使用更简单的模式。更简单的模式在每个层级都能产生更高的准确率。

字段顺序是因果性的,而非修饰性的

LLM 按顺序处理令牌。它们无法预测未来。这使得模式字段顺序在因果上处于输出质量的上游,这在传统软件开发中是无法比拟的。

具体例子:如果你的模式将 answer 字段放在 reasoning 字段之前,模型在生成任何思维链推理之前就已经确定了答案令牌。随后出现的推理是事后合理化——它是从答案开始的,而不是导向答案。

反转顺序——先 reasoning,后 answer——迫使模型在回答之前进行思考。这是在提取和分类任务中提高语义质量的最具杠杆作用的模式更改,且除了意识到字段顺序很重要之外,不产生任何成本。

同样的原则也适用于更广泛的模式设计。为后续字段提供上下文的字段应该更早出现。一个缩小 status_value 含义的 document_type 字段应该出现在 status_value 之前。模型对每个字段的理解都取决于它之前的所有内容。

枚举是安全护栏,而非风格选择

当你为分类值定义字段为 {"type": "string"} 时,你是在告诉模型任何字符串都是可以接受的。在约束解码(OpenAI 的 Structured Outputs、Guidance 及类似框架背后的机制)下,模型的 logits 在每一步都会被过滤,以便只有有效的 token 才能被产出。如果没有枚举约束,有效 token 的词汇表是无界的。

有了枚举约束,无效值将变得在语法上无法生成 —— 而不仅仅是可能性低。这就是“希望模型选择 'pending'”与“保证它无法选择 'in-progress'、'PENDING' 或 'awaiting'”之间的区别。

来自 JSONSchemaBench 的基准测试显示,约束解码框架在它们支持的 schema 上保持了近 100% 的格式合规性。更广泛的影响是:一项跟踪生产案例的研究发现,JSON schema 在结构化提取任务中将解析错误从 40% 降低到 2%,而函数调用(function calling)在金融服务应用中将审核准确性从 70% 提高到 95%。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 9 分钟

Schema 优先的 AI 开发:在编写提示词之前先定义输出契约

原始的 JSON 提示词在生产环境中往往有 15–20% 的失败率。Schema 优先的开发模式——即在编写提示词之前定义输出契约——能将这一比率降至接近于零。这种方法现在已成为每个自动化 LLM 流水线的正确默认选择。

insider
llm
阅读需 11 分钟

Markdown 优于 JSON:你正在支付却未察觉的输出格式税

严格的 JSON 模式在许多任务中悄悄削弱了推理准确率。本文将探讨解码时的机制,对比 Markdown、XML 和 JSON 之间的实测差距,并提供一个决策树,帮助你选择适合具体任务的格式。

insider
llm
阅读需 9 分钟

你不是选择了一个模型,而是和它结婚了:无人预估的提示词级锁定

更换你的 LLM 端点只需要一行配置;但让你的提示词在新模型上生效则需要一个你未曾预料的季度。本文探讨提示词级锁定是如何累积的,以及在被迫支付代价之前,如何衡量真实的迁移成本。

insider
llm
阅读需 10 分钟

系统提示词提供的人格,模型每次都会以同样的方式选择

当你的系统提示词要求模型在不同人格之间做出选择时,模型的训练先验决定了结果——在实验平台察觉到之前,你的 A/B 测试分支就已经坍缩了。

insider
llm
阅读需 9 分钟

上下文窗口是一个 API 界面:像对待合约一样对待你的提示词结构

为什么将上下文窗口布局视为正式的 API 合约——通过命名槽位、版本控制和 Diff 友好结构——能使 LLM 系统更易于调试和维护。

insider
prompt-engineering