跳到内容

术语★★★★★7 分钟阅读

Temperature、top-p、top-k:采样参数解释

三个旋钮控制模型输出多有创意或多无聊。大部分人留默认;默认常常错。

登入以收藏

每个 LLM API 暴露 temperaturetop_ptop_k 的某种组合当采样参数。它们控制模型怎么从机率分布挑下一个 token。大部分 builder 永远留默认;某些默认值对特定任务产出明显比替代品差的输出。

模型怎么挑下一个 token

每一步,LLM 在它整个词汇(看模型 5 万到 20 万 token)上产出机率分布。「给定目前 context,下一 token 是『banana』机率 0.4、『apple』0.3、『orange』0.1、...」

采样参数决定实际从这分布挑哪个 token。不同参数产不同输出风格:

  • 永远挑最高机率 → 确定性、常常无聊
  • 按机率随机抽 → 多样、有时奇怪
  • 中间 → 有创意但连贯

Temperature

Temperature 控制采样前分布变得多「平」或「尖」。范围通常 0 到 2。

  • Temperature = 0 — 模型永远挑最高机率 token。输出确定性。同 input 永远产同 output。对一致性重要的任务(抽取、分类、结构化输出)有用。
  • Temperature = 0.3-0.5 — 轻微变化但仍聚焦。code 生成、事实 Q&A、技术写作好。
  • Temperature = 0.7 — 常见默认。创意跟连贯平衡。chat、摘要、一般任务好。
  • Temperature = 1.0 — 完整按模型分布的「自然」采样。创意写作、头脑风暴好。
  • Temperature > 1.0 — 越来越随机。打破 pattern 有用;1.5 以上很快变不连贯。

陷阱:大部分 API 默认 0.7 或 1.0。技术任务这太高。降下来。

Top-p(核采样)

Top-p 把采样限制到累积机率至少 p 的最小 token 集合。

  • Top-p = 1.0 — 停用、考虑所有 token。
  • Top-p = 0.9 — 常见有用值。只考虑共占 90% 机率质量的 token。
  • Top-p = 0.5 — 受限很多。只 top token。

Top-p 是动态:在自信情境(一个 token 80% 可能),它挑那一个 token。在不确定情境(机率散在多候选),它考虑更多。

Top-k

Top-k 把采样限制到 k 个最高机率 token。

  • Top-k = 1 — 同 temperature 0(永远挑顶)。
  • Top-k = 40 — 常见默认。考虑 top 40 token。
  • Top-k = 0 — 停用(从完整分布采样)。

Top-k 在现代 API 较少暴露(Anthropic Claude 不暴露;OpenAI 不暴露;Gemini 有)。

它们怎么组合

实际上多参数设定时:

  1. 先套 temperature 缩放(重塑分布)
  2. 套 top-k 过滤(只留 top k token)
  3. 套 top-p 过滤(只留累积到 p 的 token)
  4. 从剩下采样

大部分人单独用 temperature 或 temperature + top-p。三个都用是过头,会产混乱互动。

各任务的务实设定

结构化输出(JSON、code、分类):

  • Temperature: 0
  • Top-p: 1.0(temp=0 时无关)
  • 为什么:你要一致、可解析的输出

技术 Q&A:

  • Temperature: 0.2-0.4
  • Top-p: 0.9
  • 为什么:事实但允许措辞微变

创意写作:

  • Temperature: 0.7-1.0
  • Top-p: 0.9-0.95
  • 为什么:多样但保持连贯

头脑风暴 / ideation:

  • Temperature: 1.0-1.2
  • Top-p: 0.95
  • 为什么:探索分布、拿不寻常想法

Chat(默认):

  • Temperature: 0.5-0.7
  • Top-p: 0.9
  • 为什么:平衡;大部分 API 一般用的默认

常见错误

结构化任务 temperature 设太高。 「从这文字抽 email 地址」用 temperature 0.7 有时回对 email、有时回编造变体。抽取用 temperature 0。

创意任务 temperature 设太低。 「生 10 个产品名想法」用 temperature 0.2 回 10 个几乎一样的名字。用 temperature 0.9-1.2。

不必要混 top-p 跟 top-k。 挑一个加 temperature。三个的互动效果微妙、很少值得认知 overhead。

把 temperature 当音量。 高不是「更有创意」、是「更随机」。~1.2 以上有品质悬崖、输出变不连贯。

推理模型不同

像 o3、DeepSeek R1、有 extended thinking 的 Claude 等模型,采样参数对推理过程有不同影响。很多 API:

  • 推理模型不暴露 temperature
  • 默认建议 temperature 1.0(因为模型做自己的结构化探索)
  • 有时显示不同最佳实践

用推理模型的话,读 provider 特定指引。

什么时候不要想这些

随意 chat 使用。默认通常 OK。

规模化 production。测试后设一次 temperature,放着。

推理模型。信 provider 建议。

第一轮原型。先让 prompt work 再调采样。

调整重要的时候

  • 建结构化输出管线(抽取、分类):低 temperature 关键
  • 创意工具,输出多样性是产品:高 temperature 重要
  • 评估:在多 temperature 测模型行为揭示能力 vs 随机运气
  • 成本优化:不必要撞 max_tokens 的话低 temperature 能减 token 用量

决策树

  • 需要一致 JSON / 结构化输出:temperature = 0
  • 事实 Q&A 或技术内容:temperature = 0.2-0.4
  • 一般 chat:temperature = 0.5-0.7(默认 OK)
  • 创意写作或头脑风暴:temperature = 0.9-1.2
  • 没时间想:留默认;输出错时再回来

下一步

  • 在你具体任务测 temperature 0、0.5、1.0 — 挑 work 的
  • production 任务,记录 prompt 旁边的采样参数
  • 特别读推理模型的采样
  • 读 beam search 跟 contrastive search(较少见但对某些任务有用)

最后更新: 2026-04-29

We use cookies

Anonymous analytics help us improve the site. You can opt out anytime. Learn more

Temperature、top-p、top-k:采样参数解释 · BuilderWorld