很多人第一次在 API 里看到 temperature 这个字段,要么不管它、要么随手填个数字,结果同一段提示词有时答得稳、有时飘得离谱。这篇不背定义,直接说清它调的是什么、往高往低分别会发生什么,再给一套按任务分档的调参参考和排查顺序;如果你只是用聊天网页,也能看懂平台默认值背后在做什么取舍。
很多人第一次在 API 文档里看到 temperature 这个字段,要么直接无视它,要么随手填个数字,结果同一段提示词有时答得稳、有时飘得离谱,还以为是模型抽风。其实这个旋钮调的东西很具体:它不改变模型的知识,只改变模型在每一步挑下一个词时有多敢冒险。
这篇不背定义,先说清它调的是什么、往高往低分别会发生什么,再给一套按任务分档的调参方向和自查顺序,最后说清楚哪些场景根本不该动它。如果你只是用聊天网页,也能借此看懂平台默认值背后在做什么取舍。
温度参数到底在调什么
模型生成回答是一个词一个词往外蹦的。每蹦一个词之前,它会给所有候选词算一个分数,温度负责把这些分数变成的概率分布压平或者拉尖,然后再按概率抽一个。温度低,分布被拉尖,高概率词更容易被选中;温度高,分布被压平,原本没什么机会的词也开始有机会。
- 低温
- 候选词概率差距被放大,输出更集中、更可预测,但不等于唯一答案
- 高温
- 候选词机会被拉近,输出更发散,但不是乱答,只是更愿意选次优词
- 累积效应
- 每选一个词都会影响后面的上下文,一个词选偏,整段跟着偏,这就是两次结果差很远的常见来源
- top_p 配合
- 另一个采样参数,和温度同时往激进方向调,随机性会叠加放大,别两个一起猛推
理解这一点很关键:温度影响的不是「对不对」,而是「稳不稳」。它没法让一个没给清楚要求的提示词变得准确,只能让你在同样模糊的情况下,拿到差异更大或者更小的结果。
按任务类型选方向:一张对照表
调温度的第一步不是查数字,而是先问自己:这个任务有唯一正解吗?答案越唯一,越往低温走;答案越开放,越可以往高温走。下面这张表可以直接照着对号入座。
| 任务类型 | 调参方向 | 判断标准 |
|---|---|---|
| 抽取字段、分类打标 | 低温 | 换个说法就错了吗?错了说明要更稳 |
| 格式转换、代码改写 | 低温 | 输出结构容易跑偏就继续降 |
| 总结、解释、日常问答 | 平台默认附近 | 先别动,觉得不好再微调 |
| 起名、头脑风暴、多备选文案 | 高温 | 十个答案里有几个真的不一样 |
| 长文写作 | 分段低温 | 开头亮眼但后面跑题,就拆段写 |
- 有唯一正解的活,往低温方向走,宁可重复也别跑偏
- 要发散、要多个候选的活,往高温方向走,允许一部分答案没用
- 多数平台的默认值就在中间档,先按默认跑,觉得不对再调
- 长文尤其要小心:高温在开头几段可能很出彩,写到中后段容易跑题,拆成几段、每段用低温更稳
- 具体数值区间别记死,各家刻度口径不一样,到 /ai-dict/category/tips 对照当期说明
- 同一任务换模型后要重新试,变量名和取值范围都不一定一样
调参顺序与常见误区
很多人的排查顺序是反的:一上来先怀疑温度、再怀疑模型、最后才回头看提示词。更省时间的顺序是从最可控的地方开始。下面这套步骤可以照着走。
- 先审提示词检查有没有给输出格式、有没有说清什么算对什么算错。这一步没做,后面的调参都是白调。
- 锁定一个变量一次只动温度,提示词和模型都别换。同时动三个,出了问题你分不清是谁的锅。
- 小样本对比同一个提示词跑几遍,看差异集中在开头还是结尾。差异集中在结尾通常是长文问题,不是温度问题。
- 判断该不该降如果错法是格式漂移、字段漏填、说法换来换去,往低温调;如果错法是完全答非所问,调温度没用,回去改提示词。
- 确认是否值得追复现多数接口本身不保证逐字一致,要工程稳定应该靠结构化约束和结果校验,而不是死磕某个温度值。
什么时候不适用这套思路:做创意探索、陪聊、生成多样候选的时候,强行低温会让输出干瘪重复,这时候「稳定」反而是缺点,该让它多飘一点。
去站内哪几页核对口径
温度这个字段看着简单,坑在「各家不统一」。参数名、取值范围、默认值、甚至它和别的采样参数怎么配合,不同服务商写得都不一样,所以接入前一定要以你实际要调用的那家为准,别拿别处的经验硬套。
- 接入前先到 /models 找到目标模型,看它标注的参数说明和默认值
- 看到不认识的采样参数名,先到 /ai-dict/category/basics 查一眼再动手
- 想估算长输出带来的用量变化,可以在 /tools/model-cost-calculator 粗算一遍
- 怀疑中转站转发时没传这个字段、或者改写了默认值,可以到 /tools/verify 看检测口径
- 实际价格、限速这类会变的数字,以站内页面当期的展示为准
需要强调一句:温度通常和计费、限速没有直接关系,但温度调高后输出变长、跑偏重试变多,间接会用得更多。这不是温度本身的成本,是它带来的行为后果。
下一步把你手头最常跑的那个任务,先按上面的步骤只调温度、提示词不动,跑几遍对比差异;然后到 /models 核对目标模型的参数口径,确认你填的默认值和服务商说的是一回事。→常见问题
温度设成 0 是不是就能百分百复现同一个答案?
不一定。温度只是把采样压到最保守,服务端并行、版本更新、上下文稍有差别都可能让结果变化;真要可复现,得把提示词、参数、模型标识一起固定下来,再对输出做结构校验,而不是只盯着温度一个值。
网页聊天里能调温度吗?
多数对话产品不暴露这个参数,用的是平台预设值;想自己控制就得走 API,或者用支持填写参数的客户端。反过来说,你觉得网页回答太飘或太死板,未必是温度问题,先检查提示词是不是给足了约束。
写代码时温度该给多少?
代码类任务通常偏低温,因为它要的是能跑对而不是花样多;但补全、起变量名、写测试用例这类需要有差异的活,可以略高一点。别再靠猜具体值,改完跑一遍自己的用例集,看通过率变化再定。