同一个问题,你问了两遍。第一遍回答四平八稳,像照着模板念;第二遍突然开始发挥,扯出你根本没提的东西。你没换模型,也没改提示词,唯一动过的,是 API 里那个叫temperature的数字。很多人调了大半年,理解还停留在「数值越大越随机」这句玄学上。今天把 temperature 和 top-p 拆开看:它们到底动了模型的什么。
先给结论:这俩参数都不改变模型「想说什么」,只改变「从候选里挑哪个」。大模型不打草稿,它是在几万个候选词里反复掷骰子——这两个参数,一个管骰子偏不偏心,一个管骰子留几个面。
大模型是逐词生成的:每次只吐一个词,把这个词塞回输入,再吐下一个,重复几百上千次。单看其中一次,流程固定是三步:
- 打分(Logits):模型给词表里几万个候选词各打一个原始分;
- 换算(Softmax):把分数换算成加起来等于 100% 的概率分布;
- 抽签(采样):按概率随机抽一个词出来。
关键来了:temperature 作用在第二步,top-p 作用在第三步之前。位置不同,干的事就完全不同,谁也替代不了谁。写成伪代码就三行:
![]()
光说「越调越随机」没法干活。下面这组数字是我按 Softmax 公式实算的:假设用户问「推荐一个讲 AI 的频道」,模型给 5 个候选词打分,logits 分别是 3.0、2.9、2.8、2.2、2.0。注意「自行车」和「海浪」跟问题毫不相干,但它们也在候选池里,只是分低。
![]()
横向看:T 越小,头部词的优势被指数级放大,66.5% 对 24.5%,尾巴基本归零;T 越大,五个词几乎均分。温度没有新增任何一个词,它只干一件事:缩放分数之间的差距。
这里有个不对称值得记住:调高温度,对头部的伤害远小于对尾部的提携。所谓「调高更有创造力」,不是模型变聪明了,而是它开始愿意选那些平时没资格上场的词——包括「自行车」这种。你平时遇到的「AI 在胡说」,相当一部分就来自这里。
为什么这个参数偏偏叫温度?借的是物理直觉:低温时分子几乎不动,结构稳固;高温时热运动剧烈,一切趋于无序。T 趋近 0 是冰,T 趋近无穷是水蒸气。顺带说清取值范围:OpenAI 接口收 0–2,Anthropic 一般是 0–1,超范围通常直接报错,不会自动截断。
温度有个结构性缺陷:它只有一条曲线,罩着整个词表。你没法让「合理词」变多的同时让「离谱词」变少——两者共享同一条分布。高温下「自行车」也能拿到十几个百分点,抽的次数够多,总会中一次。
Top-p(核采样)换了个思路:不碰概率值,直接砍候选池。规则是按概率从高到低累加,累加到刚好达到阈值 p 就关门,剩下的全部丢弃。拿上面 T=1.0 那一列算:
![]()
p=0.9 时,前四个词累计 89.6%,第五个「海浪」出局;留下的人重新按比例放回 100%,再进抽签。要是把 p 压到 0.5,连「数码」都进不了名单。用 Python 十行就能复现:
![]()
和它长得像的是 Top-k:永远取前 K 个,名单大小固定。Top-p 的名单随分布形状自动伸缩——分布尖时可能只留一两个,分布平时自动放宽到几十个。这就是 Top-p 取代 Top-k 成为主流默认的原因:如今各家云 API 基本只暴露 temperature 和 top_p 两个参数,本地部署的推理框架才三者都支持。
![]()
- 「都调高 = 更随机」只在结果层成立。机制上完全不同:温度调高是把 5% 的垃圾词抬到 15%;top-p 调高只是门开得更大,不抬任何词的原始概率。温度只放大差距,不制造差距——差距在打分那一刻就写好了。
- T=0 不是代入公式。数学上会除零,实际取的是极限:工程上通常直接走贪心解码,每步取最高分,同一个输入永远同一个输出。
- 参数不能跨模型照抄。温度作用在 logits 上,各家模型的分数尺度本来就不同,同一个 0.7 在两个模型上的尖锐度完全不一样。参数只在你自己调用的链路上做对比才有意义。
- 温度不是越低越好。压尖之后,模型只会更自信地重复它本来就会犯的错。模型对问题本就没把握时,调低温度救不了。
- 调参救不了质量。这两个参数控制的是输出的随机程度,不是输出的对错。答案不对,先查提示词和上下文,别急着拧旋钮。
![]()
配套四条实践原则:
- 一次只动一个。官方建议二者调其一即可。temperature=0.7 配 top_p=0.7 常常是最糟组合——高温撑起来的多样性,又被小名单削回去,只剩不连贯。
- 基线 0.7 + 0.9。输出太飘就降温度,太僵就升温度;降了温度还跑题,再去动 p。
- 参数写进配置中心。别散落在代码里,否则同一个产品出现三种温度,出了问题连复现都做不到。
- 先修提示词,再调参数。把旋钮当灵感按钮,容易把检索质量问题误判成「模型不够聪明」,代价通常是白换一轮模型。
回到开头那组数字:28.2% 对 10.4%,差距在打分那一刻就定了。你手里两个旋钮,管的是两件不同的事:
- temperature:骰子偏心到什么程度——缩放分数差距,改分布的陡峭度;
- top-p:骰子保留几个面——按累计概率截断候选池。
要稳定降 T,要多样升 T;要防跑题动 p,跨模型别照抄。记住这句,比背一百篇调参攻略都管用。
评论区聊聊:你调 temperature 时踩过最离谱的坑是什么——是 AI 答着答着突然开始吟诗,还是同一个问题每次答案都不一样?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.