temperature 是什么
temperature 是控制采样随机性的参数。模型对下一个词会给出一整张概率分布,temperature 在采样前对分布做缩放:小于 1 时放大高概率项、让输出更集中稳定,大于 1 时拉平分布、让低概率词也有机会被选中。它不改变模型的知识,只改变每次在候选之间挑哪个,因此同一提示在不同温度下会得到风格不同、但知识基础相同的回答。
取值怎么定
各家接口的合法范围并不统一,常见是 0 到 2,也存在只接受 0 到 1 的实现,具体以官方文档为准。表中数值是实验起点,不是标准答案:抽取、判定类任务从低温起步,创作类从中高温起步,再用自己的测试集校准。评价一个温度值要看多次运行的整体分布,只看一次输出很容易误判。
场景与起点建议
| 场景 | 起点 | 原因 |
|---|---|---|
| 结构化抽取 / 分类 | 0 - 0.2 | 优先稳定与一致,减少字段漂移 |
| 代码生成 / 数学计算 | 0 - 0.3 | 减少分支猜测,便于复现与回归 |
| 改写 / 文案创作 | 0.6 - 0.9 | 保留多样表达,避免每次输出雷同 |
| 头脑风暴 / 起名 | 1.0 及以上 | 鼓励发散,注意跑题与事实漂移 |
| 带工具调用的多步流程 | 0 - 0.2 | 参数与动作序列需要可预测 |
机制与边界
| 机制 | 对词表概率分布做缩放后再采样:低温放大高概率项,高温拉平分布 |
|---|---|
| 不改变什么 | 不改变上下文里的事实,也不提升模型不具备的能力 |
| 与 top_p 的关系 | 两者都影响采样范围;官方文档多建议一次只调其中之一 |
| 可复现性 | 温度大于 0 时同输入未必同输出;要做回归对比需固定参数并记录版本 |
| 常见误区 | 把温度当成准确率旋钮:低温减少发挥,不能纠正知识错误 |
调参时的操作习惯
- 先固定提示版本,再动参数:否则分不清是提示改了还是参数改了
- 一次只改一个参数,其余保持不变,用同一批用例对比
- 每个候选配置至少跑 5-10 次,看通过率的分布而不是单次结果
- 把参数与提示版本一起存档,同一提示不同参数算两个版本
- 上线后保留切换开关,遇到线上问题时能快速回退到低温配置
调用参数示例
调用参数示例
# 抽取类任务:低温 + 结构化输出
{
"model": "<按平台文档填写>",
"temperature": 0.1, # 追求字段稳定,减少同义变体
"messages": [ ... ]
}
# 创作类任务:中高温,保留表达多样性
{
"temperature": 0.8, # 与抽取任务分开配置,不要共用一个值
"messages": [ ... ]
}推理类模型往往不暴露或不建议调整温度参数,行为由平台默认策略决定;迁移模型时要重新评估原参数是否仍然生效。
同一提示在温度 0 附近仍可能出现差异,原因包括并行计算顺序、上下文长度变化与模型版本更新,复现实验要把这些一起记录。