为什么 AI 每次回答都不一样?聊聊 Temperature 与随机性
同样的问题问两遍,AI 给的答案却不同——这不是 bug。一文讲清 Temperature、Top-p 等采样参数是什么,以及什么时候该调高、什么时候该调低。
同一个问题,你问两遍,AI 给的答案却不太一样——很多人以为是 bug 或者「它记性不好」。其实这是设计出来的。背后的关键叫 Temperature(温度)。这篇讲清它是什么、什么时候该调。
根源:模型给的是「概率」,不是唯一答案
回顾一下大模型的工作原理:它在预测下一个词。但它并不是只算出「一个正确答案」,而是给出一整份候选清单和各自的概率:
「今天天气真 ___」 → 好(72%)、不错(15%)、冷(6%)、糟糕(3%)…
接下来的关键动作是「从这份清单里挑一个」。如果每次都死板地挑概率最高的,回答就完全固定;如果允许偶尔挑一个概率低点的,回答就有了变化。
Temperature,就是控制「挑得有多大胆」的那个旋钮。
Temperature 怎么理解
- 温度低(如 0~0.3):几乎总选概率最高的词 → 保守、稳定、可复现,但可能刻板
- 温度中(如 0.7):兼顾合理与多样 → 大多数聊天的默认档
- 温度高(如 1.2+):更敢选小概率的词 → 发散、有创意,但也更容易跑偏、胡说
打个比方:温度就像「放飞程度」。低温是严谨的答题者,高温是天马行空的诗人。
还有 Top-p / Top-k
它们是另外两个常一起出现的旋钮,作用是先缩小候选范围,再让温度去挑:
- Top-k:只从概率最高的 k 个词里挑(比如只看前 40 个)
- Top-p(核采样):只从「累计概率达到 p」的那批词里挑(比如前 90%)
简单理解:Top-p / Top-k 负责划定候选圈,Temperature 负责在圈里挑得多大胆。 日常调一个 Temperature 通常就够了。
什么时候调低,什么时候调高
调低(0~0.3)—— 要「稳」的场景:
- 事实问答、查资料
- 写代码、改 bug
- 抽取结构化数据(如把文本转成 JSON)
- 需要每次结果一致、可复现的任务
调高(0.9~1.2)—— 要「花」的场景:
- 头脑风暴、起名、想创意
- 写诗、写文案的多个版本
- 需要多样性、不想每次都一个味儿
默认(0.7 左右):日常聊天、通用写作。
和「幻觉」的关系
温度调得越高,模型越敢挑小概率的词,也就越容易编出不实内容。所以在对准确性要求高的场景,低温 + RAG + 要求给出处,是压制幻觉的组合拳。
但也要清楚:温度调到 0 也不能完全消除幻觉——因为「概率最高」不等于「事实正确」。低温只是让它别再火上浇油。
我在网页版能调吗
- 网页版(ChatGPT / Claude 等):一般不给你调,平台已设好一个通用默认值
- API:可以自由设置
temperature、top_p等参数,这也是开发者用 API 的一大好处,见 API 充值攻略 - 网页版想要更稳? 用提示词约束:明确要求「只依据我给的资料回答」「不确定就说不知道」「用固定格式输出」,效果也很明显
小结
AI 每次回答不一样,不是故障,而是采样带来的随机性——Temperature 就是那个控制随机程度的旋钮。要准就调低,要创意就调高。理解了它,你就多了一个精细控制 AI 输出的手柄。