输出控制的三个级别是什么?
输出控制在三个不同级别上运作——基于Prompt、基于Schema和受限解码——每个级别在对推理质量的权衡逐步增加的同时,提供逐步更强的格式保证。
基于Prompt的格式化通过自然语言指示模型("返回JSON,字段包括:name、email、score")。这80%至95%的情况下有效,但在边缘情况下会静默失败,无类型保证,需要为5%至20%的格式错误响应进行错误处理。基于Schema的方法(函数调用/工具使用)以95%至99%的合规率正式定义输出结构——但Schema仍是强提示而非绝对约束。原生受限解码使用有限状态机在生成时屏蔽无效词元,以数学确定性生成100%符合Schema的输出。
两阶段方法——让Claude Opus 4.7(Anthropic)或GPT-4o(OpenAI)在Stage 1自由推理,然后将输出送入Stage 2小型专业结构化模型(Osmosis-Structure-0.6B,经50万条合成非结构化→结构化转换训练)——在不受受限解码推理质量损失的情况下实现格式保证。
一句话总结:将输出约束级别与任务匹配——仅在格式正确性比推理深度更重要时使用受限解码。
| 级别 | 合规率 | 对推理的影响 | 最适用场景 |
|---|---|---|---|
| 基于Prompt("return JSON") | 80–95% | 无 | 原型开发;简单流水线 |
| 函数调用 / 工具使用 | 95–99% | 极小 | 大多数生产应用 |
| 原生受限解码(strict) | 100% | 质量下降2–10% | 数据提取;高吞吐量流水线 |
| 两阶段(自由推理→专业模型) | ~100% | 无 | 复杂推理+格式保证 |
如何通过Prompt Engineering控制输出格式?
明确的输出Schema指令——对Claude Opus 4.7放在系统Prompt开头,对GPT-4o放在用户内容之前——在不产生原生受限解码推理质量损失的情况下,可实现85%至95%的结构化输出合规率。
Claude Opus 4.7(Anthropic)对使用XML风格章节标签、置于系统Prompt开头的输出格式指令响应最佳。GPT-4o(OpenAI)在Schema以编号格式规则形式放在用户内容之前时表现最好。Gemini 3.1 Pro(Google DeepMind)在Prompt开头和结尾都明确说明Schema时生成最可靠的结构化输出。
不良Prompt——非结构化,无格式说明:
Analyse this customer review and tell me the sentiment, key issues, and urgency.
好的结构化输出Prompt是什么样的(Claude Opus 4.7)?
良好Prompt——Claude Opus 4.7
<output_format> Return only this JSON object, no prose: { "sentiment": "positive" | "neutral" | "negative", "key_issues": "string", // max 3 items "urgency": "low" | "medium" | "high", "confidence": 0.0–1.0 } </output_format> <task>Analyse the following customer review.</task> <review>REVIEW TEXT HERE</review>
XML结构化Prompt在`<task>`块内保留自由推理的同时,锚定了输出格式契约。无需受限解码——Claude Opus 4.7使用此结构在超过93%的生产调用中合规。
好的结构化输出Prompt是什么样的(GPT-4o)?
良好Prompt——GPT-4o
Analyse the following customer review. Format rules: 1. Return valid JSON only. No markdown fences. No explanation. 2. Fields: "sentiment" (string: "positive"|"neutral"|"negative"), "key_issues" (array of strings, max 3), "urgency" (string: "low"|"medium"|"high"), "confidence" (float: 0.0–1.0) 3. If no issues found, return empty array for key_issues. <REVIEW TEXT HERE>
各模型适用哪些输出格式规则?
各主要LLM对输出格式合规有不同的结构偏好:
- Claude Opus 4.7(Anthropic) — XML标签(`<output>`、`<format>`、`<constraints>`);Schema置于顶部;"仅输出JSON,不含其他内容"
- GPT-4o(OpenAI) — 编号格式规则;Schema置于主指令之后;"以有效JSON响应,无Markdown代码块,无解释。"
- Gemini 3.1 Pro(Google DeepMind) — 简洁、明确的Schema出现在开头和结尾;内嵌期望输出格式的单样本示例
- 通过Ollama运行的本地模型(LLaMA 3.1 7B、Mistral)— 对格式漂移更敏感;需要在Prompt中直接嵌入单样本格式示例才能可靠输出JSON
哪些采样参数控制输出生成?
Temperature(T)、Top-P、Top-K、max_tokens、frequency_penalty和presence_penalty是六个独立参数,共同决定输出长度、随机性和重复性——必须一致设置,不能相互冲突。
Temperature(T)缩放softmax输出分布:T=0.0时模型始终选择概率最高的词元(确定性);T=2.0时分布几乎平坦,输出变得不连贯。Top-P(核采样)从累积概率达到P的最小词元集合中采样——Top-P=0.9时模型只考虑覆盖概率质量前90%的词元。Top-K将每步生成限制在K个概率最高的词元;Top-K=1等同于贪婪解码。
softmax with temperature公式:P(token) = exp(logit / T) / sum(exp(logits / T))。T趋近0时,最高logit词元的概率趋近1.0;T趋近无穷时,所有词元概率趋近相等。
| 参数 | 取值范围 | 聚焦/事实型 | 创意/多样型 |
|---|---|---|---|
| Temperature (T) | 0.0–2.0 | 0.0–0.3 | 0.7–1.0 |
| Top-P | 0.0–1.0 | 0.3–0.5 | 0.9–1.0 |
| Top-K | 1–词汇表大小 | 10–20 | 50–100 |
| max_tokens | 取决于任务 | 256–512 | 2,048–8,192 |
| frequency_penalty | -2.0到2.0 | 0.3–0.5(减少重复) | 0.0–0.2 |
| presence_penalty | -2.0到2.0 | 0.0–0.2 | 0.5–0.8 |
关键规则: 不要同时将Temperature和Top-P设为高值。Temperature首先缩放整个分布;Top-P然后从已缩放的高概率质量中采样。将T=1.5和Top-P=0.95组合使用,产生的输出比单独使用任一参数都更混乱——这两个参数被设计为替代方案,而非叠加使用。
`frequency_penalty`按词元已出现次数比例降低其概率——正值消除重复性措辞;负值主动鼓励重复。`presence_penalty`对任何已出现过的词元施加一次性固定惩罚,无论频率如何——它推动模型引入新词汇和话题而非重复已有内容。
推理质量与输出格式保证之间的权衡是什么?
通过受限解码强制JSON输出会在函数调用基准测试上降低2.26个百分点的模型准确率——BAML的Schema对齐解析在BFCL上达到93.63%准确率,而OpenAI的严格受限解码在同一基准上仅为91.37%。
机制如下:受限解码应用有限状态机屏蔽与当前Schema位置不兼容的词元。如果Schema要求整数类型但模型想输出51.7,则被强制输出51——技术上有效但事实上有偏差。链式思维(CoT)Prompt与受限解码同样不兼容:将推理字段包含在内会迫使模型在JSON字符串中转义换行符、引号和特殊字符——在所有测试模型中可测量地降低推理质量。
对于既需要推理深度又需要格式保证的系统,生产级解决方案是:(1) Stage 1 — 不带约束发送给GPT-4o或Claude Opus 4.7:"分析这个,逐步推理,解释你的逻辑。" (2) Stage 2 — 将Stage 1输出送入小型专业模型(Osmosis-Structure-0.6B或带`strict: true`的GPT-4o-mini):"从这份分析中提取关键数据,并以此JSON Schema格式返回。"
此架构保留Stage 1推理质量,并在Stage 2以全尺寸前沿模型受限模式运行成本的一小部分实现100%格式合规。
顶级模型在输出控制上的表现如何?
在PromptQuorum中测试——30个输出控制Prompt分发到三个模型:Claude Opus 4.7使用XML标签格式指令(不启用受限解码)达到93% JSON合规率。GPT-4o使用编号格式规则达到89%合规率。Gemini 3.1 Pro在开头和结尾均说明Schema的情况下达到91%合规率。启用`strict: true`受限解码后,三个模型的推理更短、更不完整——与BFCL基准上观察到的2.26百分点准确率下降一致。
停止序列与负向约束有何区别?
停止序列——在生成时立即终止模型输出的词元——是最确定性的输出控制机制:模型在指定字符串出现的瞬间停止,无论剩余上下文如何。
停止序列作为字符串数组在API调用中传入(OpenAI的`stop`参数,Anthropic的`stop_sequences`)。常见生产用途:
- `"###"` — 在结构化章节标记后终止生成,防止延续到无关内容
- `"</output>"` — 在关闭XML标签后终止,确保只返回标记内容
- `"\n\n"` — 将输出限制为单段,用于分类或简短回答任务
- `"Human:", "User:"` — 防止模型幻觉出模拟的对话续写
Prompt正文中的负向约束——"不包含解释"、"无Markdown"、"不添加介绍性句子"——能减少不必要的输出模式,但无法像停止序列那样保证合规性。两者结合使用:停止序列用于结构性终止,负向约束用于内容塑造。
生产流水线应使用哪种输出格式?
JSON是LLM生产流水线的主流输出格式,因为它直接映射到API对象、数组和类型化数据——但通过受限解码强制JSON会牺牲2%至10%的推理质量,使格式选择成为重要的架构决策。
TOON(词元优化输出符号)已作为长结构化Prompt的高效输入格式出现——它使用空白最小化和简写键来减少模型生成输出前的输入词元消耗。对于输出,2026年推荐的生产架构是:TOON用于输入(词元效率)+ 受限解码JSON用于输出(格式保证)——仅在Stage 1自由推理完成后应用。
| 输出格式 | 使用场景 | 备注 |
|---|---|---|
| JSON | API、流水线、文档存储 | 所有主要提供商原生支持结构化输出 |
| JSONL | 事件流、批处理 | 每行一个JSON对象;适合流式传输和日志记录 |
| CSV | 旧系统集成 | 更简单但无嵌套结构;适合表格数据 |
| YAML | 配置文件 | 人类可读;用于CI/CD和基础设施场景 |
| XML | 企业集成 | 冗长;Claude偏好用于Prompt结构而非输出 |
| Markdown | 人类可读报告、文档 | 不适合下游解析;最适合人类阅读 |
中国与亚太地区的部署考量
中国(数据安全法与PIPL): 依据2021年《数据安全法》和《个人信息保护法》(PIPL),处理中国境内用户数据的LLM流水线必须将数据保留在境内——所有含个人信息的JSON输出均受PIPL第三章约束,不得未经明确同意跨境传输。Qwen 2.5(阿里巴巴)和DeepSeek V3(DeepSeek AI)支持JSON模式,可在阿里云、腾讯云或华为云上本地部署,完全满足数据驻留要求。金融和医疗领域的企业应将受限解码与本地推理结合,确保结构化输出不经过境外API端点。
亚太地区(数据跨境合规): 在新加坡、日本、韩国运营的企业须遵守各自的数据保护框架——新加坡PDPA、日本《个人信息保护法》(APPI)、韩国PIPA。在这些司法管辖区,通过Ollama在本地基础设施上使用LLaMA 3.1或Qwen 2.5运行JSON受限解码,是满足数据不出境要求的有效技术手段。Outlines和XGrammar可在自托管模型上实现受限解码,无需任何外部API调用。
企业部署(金融、医疗、法律): 银行和金融机构的LLM输出——如评分决策、风险评级的JSON有效载荷——受《商业银行数据治理指引》和《证券期货业数据分类分级指引》的额外合规要求约束。医疗机构的模型输出须符合《健康医疗数据安全指南》,要求字段级加密和访问日志记录。法律行业的结构化输出则须满足律师事务所数据留存要求。对于这些场景,两阶段架构(自由推理Stage 1 + 受限结构化Stage 2)既满足监管要求,又保持推理质量。
常见错误
❌ 同时将Temperature和Top-P设为高值
Why it hurts: 两者叠加——T=1.5 + Top-P=0.95产生的输出比单独使用任一参数都更混乱。
Fix: 将其中一个作为主要随机性控制,不要同时使用两者。
❌ 对复杂推理任务强制使用JSON
Why it hurts: 受限解码降低2–10%准确率。模型为维持Schema合规而牺牲推理质量。
Fix: 改用两阶段方法:先自由推理,再结构化提取。
❌ 写"返回JSON"但不提供精确Schema
Why it hurts: 模型猜测字段名、类型和嵌套结构——产生无效或格式错误的JSON。
Fix: 始终提供包含字段类型和枚举值的完整Schema。
❌ 依赖Prompt正文负向约束处理关键格式
Why it hurts: "不包含Markdown"可能被模型忽略,尤其在高Temperature下。
Fix: 在API层面使用停止序列——它们是唯一确定性的终止机制。
❌ 在不同模型间复制粘贴Temperature设置
Why it hurts: GPT-4o的T=0.7和Claude的T=0.7产生不同的概率分布。
Fix: 在你的生产流水线中逐模型测试每个参数设置。
延伸阅读
- 什么是Prompt Engineering? — AI结构化指令设计的基础原则
- Temperature和Top-P详解 — 两个主要随机性参数的深入解析
- 用AI编写更好的代码 — 将输出控制技术应用于代码生成工作流
- 工具使用和函数调用 — 通过工具定义和函数Schema实现结构化输出
- 词元与词元经济学 — 理解受限解码和两阶段流水线的词元成本
- LLM应用中的错误处理 — 在生产系统中检测和恢复格式错误输出
如何控制AI输出格式(分步指南)
- 1在Prompt中始终明确说明所需输出格式。 不要说"总结这个",而要说:"以5–7条项目的列表总结,每条1–2句话,使用主动语态,不包含个人观点。"明确说明结构:项目符号、表格、JSON、Markdown还是纯文本。
- 2可用时使用JSON Schema强制结构化输出(OpenAI、Anthropic)。 如果你在提取数据或生成机器可读内容,请定义Schema:字段名、类型、必填字段、枚举约束。模型将自动格式化输出以匹配。
- 3提供所需输出格式的示例。 向模型展示具体示例:"按此格式:{ \"topic\": \"...\",\"key_points\": ...,\"confidence\": \"high|medium|low\" }。"示例比描述更有效。
- 4使用约束性语言:"必须X,不得Y,始终Z。" 避免软性语言("尽量"、"争取")。说:"恰好返回3个步骤,不多不少。不使用技术术语。如果建议有局限性,始终包含警告。"
- 5大规模运行前先在一个示例上测试输出格式规范。 生成一个输出,检查是否符合规范,必要时调整Prompt。这能防止在处理100条数据后才发现格式问题。
常见问题解答
LLM中Temperature和Top-P有什么区别?
Temperature(T)缩放下一个词元预测的整个softmax概率分布:T=0.0始终选择概率最高的词元(确定性);T=1.0保留自然分布;T=2.0将其平坦化趋向随机性。Top-P(核采样)从累积概率达到P的最小词元集合中采样——在Top-P=0.9时只有累积概率前90%的词元有资格被选择。两者控制生成的不同方面,不应同时设为高值,否则会叠加产生更混乱的输出。
强制JSON输出会降低AI响应质量吗?
是的——可测量地降低。BAML在BFCL上的基准测试显示,Schema对齐的自由格式解析准确率为93.63%,而OpenAI的受限解码(严格函数调用)为91.37%——质量下降2.26个百分点。机制是词元屏蔽:受限解码阻止模型选择会违反Schema的词元,即使那些词元能产生更准确的答案。对于复杂推理任务,两阶段方法(自由推理→专业结构化)在实现100%格式合规的同时保持质量。
什么是受限解码,它如何保证JSON输出?
受限解码在模型的词元生成过程上应用有限状态机(FSM)。在每个生成步骤,FSM评估完整词汇表中哪些词元在当前位置会产生与目标Schema兼容的输出——并将所有其他词元的概率屏蔽为零。这在数学上使生成Schema无效的输出成为不可能。OpenAI通过`response_format: { type: "json_schema", strict: true }`实现。Anthropic通过严格工具使用模式实现。两者可在Anthropic的API上同时运行。
生产LLM流水线应使用哪种输出格式?
JSON是生产LLM流水线的标准,因为它直接映射到类型化API对象,并被所有主要提供商(OpenAI、Anthropic、Google Gemini)原生支持。批处理和事件流使用JSONL。仅在兼容旧系统时使用CSV。2026年推荐架构:输入使用TOON(词元效率)+ 仅在Stage 1自由推理完成后的Stage 2输出使用带受限解码的JSON。
停止序列与Prompt中的负向约束有何不同?
停止序列在API/推理层面强制执行——模型在生成指定字符串的瞬间停止生成,无一例外。Prompt正文中的负向约束("不包含解释"、"无Markdown")指示模型避免某些输出,但不具约束力——模型在高Temperature设置或长上下文漂移下仍可能违反。两者结合使用:停止序列用于结构性终止保证,负向约束用于内容风格塑造。
参考资料
- OpenAI, 2025. "Structured Outputs Guide" — 受限解码、严格JSON模式和Schema合规保证的官方文档
- BoundaryML / BAML, 2025. "Structured Outputs Create False Confidence" — 基准测试:Schema对齐解析93.63% vs. BFCL受限解码91.37%准确率
- Hannecke, 2025. "Beyond JSON: Picking the Right Format for LLM Pipelines" — 生产架构分析:TOON输入+受限JSON输出