温度参数(temperature)是大模型生成回答时的一颗"随机性旋钮":它决定模型每次挑选下一个词时"掷骰子"的力度。温度调得低,模型几乎只选最稳妥的词,回答严谨但可能千篇一律;温度调得高,它更愿意冒险选冷门词,回答更发散,但也更容易一本正经地编造。记住这个基本盘:温度改的是输出的随机程度,不改变模型本身知道什么。
温度到底改变了什么:词表上的一次掷骰子
大模型写回答不是一口气吐出整句话,而是逐个"挑词":每挑一个词,它都会给词表里成千上万个候选词打分,形成一个概率分布。温度参数就作用在这个分布上——在模型做选择之前,先对分布做一次缩放。
温度低时,分布被"压陡":本来概率最高的词优势被进一步放大,模型几乎每次都选它;温度高时,分布被"压平":低概率词的相对机会变大,模型开始"冒险"。举个直观的例子:问"中国的首都是哪里",温度为 0 时模型几乎必然回答"北京";温度拉到 2,它可能还是答"北京",也可能冒出一句不知所云的话——随机性放大的代价,就是稳定性下降。
对照表:从 0 到 2,行为怎么变
| 温度区间 | 输出特点 | 适合场景 |
|---|---|---|
| 0–0.3 | 几乎确定,同一问题反复问答案稳定 | 事实问答、代码生成、分类打标 |
| 0.7–1.0 | 有变化但可控,主流产品的默认区间 | 日常对话、文案写作 |
| 1.0–2.0 | 明显发散,惊喜和胡话一起出现 | 头脑风暴、多样性采样 |
有两点要先说清楚:不同厂商的温度尺度和默认值不一样(常见范围是 0–2,多数产品默认在 1.0 附近),换模型要重新调;温度是一个连续旋钮,上表只是方便记忆的粗分,0.5 和 0.8 之间没有质变。
它和 top-p、top-k 是三道不同的阀门
不少人把温度、top-p、top-k 混为一谈,其实它们是三道不同的"阀门",而且经常叠加使用:
- 温度(temperature):对整个候选词的概率分布做缩放,是"软调节",不改变候选词的范围。
- top-k:直接截断,只保留概率最高的前 k 个词,是"硬筛选"。
- top-p:从概率最高的词往下累加,只保留累计概率达到 p 的词,是"动态截断",候选池大小随问题难度自动伸缩。
典型的工作顺序是:先由 top-k 或 top-p 圈定候选池,再由温度决定在这个池子里掷骰子的力度。理解了这层关系,就不会再问"温度和 top-p 哪个更好"——它们管的是不同环节。
关于温度的四个常见误解
误解一:温度越高,模型越聪明。 错。温度只改变随机性,不改变模型的知识边界。高温下模型更容易选中低概率词,回答更发散,但也更容易一本正经地编造细节——"有创造力"和"会胡说"在高温下是同一枚硬币的两面。
误解二:温度设为 0,结果就完全确定。 接近确定,但保证不了 100%。温度 0 让采样退化成"每次都选最高分",同一模型、同一版本下重复提问通常得到相同答案;但服务端的并行计算、浮点舍入差异,以及模型版本更新,都可能让结果轻微漂移。需要严格复现时,除了温度 0,还要固定随机种子(seed)并记录模型版本号。
误解三:调低温就能消灭大模型幻觉。 低温减少的是随机发散,但模型本身不知道的东西,低温下照样会编。事实性任务想靠谱,温度只是第一步,还要靠检索增强、要求引用来源和人工核验兜底。
误解四:所有模型的温度都一样。 不同厂商、不同模型的温度尺度、默认值和实际效果都有差异,A 模型上 0.7 的表现,搬到 B 模型上可能偏保守也可能偏发散。跨模型迁移参数设置时,温度是需要重新校准的一项。
实操:按场景给温度定个起点
- 要准确、要稳定(客服问答、数据抽取、代码生成):0–0.3,先保证答案可重复。
- 要自然、要变化(日常对话、营销文案):0.7–1.0,这是大多数聊天产品的默认手感。
- 要多样、要采样(一次生成多个候选、做评测对比):1.0 以上,配合人工筛选,别直接拿去用。
一个实用的顺序是:先按场景定温度,再写提示词,最后微调措辞。温度决定了输出的随机性基调,提示词是在这个基调上做内容约束;顺序反了,很容易陷入"提示词怎么写都不对"的误区。也别指望一个温度值包打天下——场景变了,温度就该跟着变。
Q:为什么有些产品不让用户调温度?
A:因为温度是"容易调坏"的参数。多数面向普通用户的产品会把温度固定在 0.7–1.0 的默认区间,避免用户调到 2 之后抱怨"AI 胡说八道"。开放温度调节的一般是 API 和开发者工具,普通用户用默认就好。
Q:温度对生成速度有影响吗?
A:几乎没有。温度只改变采样时选词的概率分布,不改变模型的计算量;生成速度主要由模型大小、硬件和输出长度决定。想提速要看量化、推理优化这些手段,而不是调温度。