知识全景图/ 软件工程与系统/ 人工智能全景图/ 解码、采样与结构化输出

LLM 解码、采样与结构化输出底层图谱

从 logits、temperature、top-p、停止条件到 JSON Schema 和约束解码,理解模型怎样把概率分布变成可用输出

阅读定位: 这一页补 AI 底层理解线里经常被跳过的一层:模型已经算出下一步 token 概率之后,系统如何选择 token、控制随机性、停止生成、保证格式,并把文本变成可解析的结构化结果。解码面对的候选来自 Tokenizer / 词表 定义的 token 边界;如果你想先理解 hidden state 怎样经 LM head 变成 logits、softmax、logprob 和 cross entropy,先看 Logits / Softmax / 概率输出。它不替代推理计算页、推理模型页或 Tool Calling 页,而是连接它们的“输出生成层”。
一、从隐藏状态到下一个 token
上下文状态
hidden state
Logits
每个 token 的分数
Softmax
变成概率分布
采样策略
temperature / top-p
选中 token
追加进上下文
循环生成
直到停止
概念它是什么工程直觉常见误解
Logits模型对词表里每个 token 给出的原始分数还不是概率,只是下一步候选的相对偏好;禁词、logit bias 和结构约束都受 tokenizer 边界影响,细节见 Logits / Softmax以为最高 logit 就是唯一答案
Softmax把 logits 转成概率分布让系统能在多个候选 token 中按概率选择以为概率高就代表事实正确
Decode loop每次只生成一个 token,再把它放回上下文继续下一步LLM 的输出是逐步滚出来的,不是一次性写完整篇以为模型先想好全文再输出
Stopping遇到结束 token、长度上限、停词或结构完成时停止停止条件是产品稳定性的一部分只调 Prompt,不管 max tokens 和 stop sequence
二、贪心、温度、top-k、top-p
策略做法适合什么风险
Greedy每一步都选概率最高的 token格式严格、确定性强、低风险短输出容易机械、局部最优,开放写作不自然
Temperature调平或调尖概率分布控制随机性;低温稳,高温发散高温可能胡说,低温也不能保证正确
Top-k只在概率最高的 k 个 token 里采样限制候选范围,减少极低概率乱跳k 固定,遇到不同分布时不够自适应
Top-p / Nucleus只在累计概率达到 p 的候选集合里采样更自适应,常用于开放对话和写作p 太高会放进噪声,太低会变死板
Beam Search保留多个高分候选序列继续扩展翻译、摘要等较传统序列任务在开放生成里可能重复、乏味,成本更高
事实型任务
优先低温、强约束、证据引用和不可回答策略。随机性不能补事实缺口,事实缺口要靠 RAG、工具或人工校验。
创意型任务
可以适当提高温度或 top-p,让模型探索更多表达;但仍要用主题、风格、长度和禁区约束收住边界。
工具参数任务
优先结构化输出、schema 约束和低随机性。参数错一个字段,后面执行层就可能失败或越权。
三、随机性不是创造力开关
关键判断:

Temperature 控制的是概率分布的尖锐程度,不是“聪明程度”。高温可能带来新颖表达,也可能放大低概率错误;低温能提高稳定性,但不等于事实更可靠。

现象可能原因治理动作
同一个问题多次答案不同采样随机性、上下文轻微变化、模型版本变化降低温度、固定 seed、记录模型版本和完整 Prompt
答案越写越偏高温、输出太长、缺少中间约束分段生成、加检查点、限制 max tokens、增加 Eval
格式偶发错误自然语言生成不等于严格解析器用 JSON Schema、约束解码、解析失败重试和回退
模型重复句子解码陷入局部循环或惩罚参数不合适调整重复惩罚、停止条件、输出长度和提示结构
四、停止条件与输出长度控制
结束 token
模型学会在合适位置产生结束标记,但它不总是可靠。长文、代码块、列表和 JSON 尤其需要额外停止治理。
Max tokens
这是成本和延迟的硬刹车。上限太低会截断答案,上限太高会拖慢 decode 并放大跑题风险。
Stop sequence
适合模板化输出和多段协议,但要避免停词和正文内容冲突,否则会提前截断。

为什么输出长度也是系统设计

Decode 阶段逐 token 生成,输出越长,总耗时和费用越高。面向用户的产品要把“回答多详细”变成明确设计:默认简洁、必要时展开、后台任务才允许长输出。

五、结构化输出:从“像 JSON”到“可解析”
层级做法可靠性适合场景
Prompt 要求格式让模型“请输出 JSON”最低,容易多解释、漏字段、引号错误原型验证、低风险内部工具
解析后修复输出后用解析器校验,失败再让模型修中等,依赖重试和修复质量批处理、非实时任务、可容忍重试
JSON Schema / response format声明字段、类型、枚举、必填项较高,能把格式约束显式化业务表单、抽取、分类、工具参数
Constrained decoding解码时只允许合法 token 序列最高的格式约束,但表达空间受限严格 JSON、DSL、SQL 片段、协议输出
工具调用协议让模型选择函数并生成参数格式更稳,但执行风险转到工具层Agent、工作流、数据查询、外部动作
结构化输出的底线:

能被解析只是第一关。真正生产可用还要校验字段语义、权限、枚举、数值范围、幂等键和审计上下文。

六、Logit Bias、禁词与安全边界
手段能做什么不能做什么注意点
Logit bias提高或降低某些 token 出现概率不能保证复杂策略,也不能真正理解业务风险适合轻量词形控制,不适合当安全系统主体
禁词表阻止明确词面输出挡不住同义改写、编码绕过和上下文含义变化容易误伤,需要和语义安全模型配合
安全重写把危险输出改成安全替代不能替代源头拒答、权限控制和人工升级要保留原始 trace,便于审计和复盘
后置分类器对输出做风险判断和拦截可能漏判,也可能延迟用户反馈要看漏放率、误拒率和高风险样本召回
七、采样参数怎样进 Eval
固定变量
评测模型、Prompt、RAG、采样参数时要分开控制。否则你不知道质量变化来自模型能力,还是温度、输出长度或 schema 变化。
看稳定性
同一输入多跑几次,观察答案一致性、格式合法率、引用稳定性和坏例复发率。一次通过不代表线上稳定。
看代价
采样和结构化输出会影响输出 token、重试次数、解析失败率和端到端延迟。质量收益必须和成本一起看。
任务建议默认重点监控
分类 / 抽取低温、schema、枚举、严格校验字段缺失率、解析失败率、误分类
客服问答低到中温、引用证据、长度上限幻觉率、不可回答识别、用户追问率
写作 / 头脑风暴中温、top-p、风格约束重复度、跑题率、用户采纳率
代码补全低温、短输出、语法和测试验证编译率、测试通过率、补全延迟
Agent 工具调用低温、工具 schema、权限确认工具选择准确率、参数合法率、越权拦截
7.1 Decoding Decision 证据包:每个 token 为什么这样被选中
决策节点必须记录的字段用来排查什么
采样配置decoder_config_id、temperature、top_p、top_k、seed、max_tokens线上输出不稳定、评测不可复现、长度异常或成本漂移
候选裁剪candidate_count_before、candidate_count_after、filtered_by_top_p、filtered_by_schema候选 token 是被概率截断、schema 约束、禁词还是安全策略过滤?
token 选择step_index、selected_token_id、selected_logprob、rank_before_sampling、random_draw这一步是确定性选择,还是随机采样刚好选中了低概率路径?
停止与修复stop_rule_id、finish_reason、parse_error、repair_attempt、continuation_point输出结束、截断、修复、续写和格式漂移分别发生在哪里?
回归连接generation_id、output_hash、schema_version、eval_case_id、trace_id改采样参数、schema 或模型版本后,坏例能否稳定复现和比较?
八、常见误区
误区:低温就不会幻觉
低温只让输出更确定。若上下文没有事实依据,模型仍可能稳定地给出错误答案。
误区:高温等于更有创造力
高温只是放大低概率候选。创造力还依赖任务框架、素材、评价标准和迭代机制。
误区:输出 JSON 就能直接执行
JSON 合法不代表业务合法。执行前仍要做权限、范围、幂等、风险和人工确认检查。
误区:采样参数只影响文风
它还会影响格式稳定性、引用一致性、工具参数、评测复现性、成本和延迟。
九、回到 AI 主干
AI 全景 Tokenizer / 词表 Token / Attention / Transformer Logits / Softmax 推理计算 / KV Cache 推理模型 模型评测 / Eval Tool Calling / 执行协议 一次请求的一生

这张图在主干里的位置

推理计算解释 token 是怎样被算出来的,这一页解释 token 是怎样被选出来并组织成稳定输出的;推理模型解释为什么某些任务会在测试时多花计算;Tool Calling则把结构化输出进一步变成可审计、可恢复的动作。