大语言模型通常逐个 token 生成文本:每一步先为候选 token 计算分数,再按解码和采样策略选择下一个 token。Temperature、Top-p、Top-k 和重复惩罚都在这个选择阶段发挥作用,但它们不是模型能力或事实准确性的开关。

最重要的前提是:参数名称相似,不代表不同供应商、端点和模型具有相同范围、默认值或实现。 使用前必须查看目标模型的当前 API 文档。

先看职责边界

参数改变什么不保证什么
temperature调整候选 token 概率分布的尖锐或平缓程度不保证事实正确、格式正确或绝对可复现
top_p只保留累计概率达到阈值的最小候选集合不等于固定保留前多少个 token
top_k最多保留概率最高的 K 个候选并非每个 API 或模型都支持
frequency_penalty按 token 已出现的次数累积调整后续分数不理解“重复表达”的语义
presence_penaltytoken 出现过后施加一次固定调整不保证段落或观点一定更多样
max_output_tokens设置输出 token 数量的上限不是目标长度,也不保证模型用满额度
stop / stop_sequences遇到指定序列时停止生成如果序列自然出现在正文中,也可能提前截断

Temperature 改变概率分布

Temperature 较低时,原本概率较高的 token 通常更占优势;较高时,概率分布通常更平缓,低概率候选更有机会被选中。

较低 Temperature
高概率候选 ━━━━━━━━━━━━━
其他候选   ━━ ━ ━
 
较高 Temperature
高概率候选 ━━━━━━━
其他候选   ━━━━━ ━━━━ ━━━

因此低温输出往往更集中,高温输出往往更多样,但“集中”不等于“正确”,“多样”也不等于“有创造力”。模型可能在低温下稳定地产生同一个错误,也可能在高温下只是更不稳定。

temperature: 0 也不能被跨平台地理解成“每次输出完全相同”。服务端实现、并行计算、模型版本、工具结果和供应商路由都可能带来差异;有些 API 还明确说明零温度并不保证完全确定性。

Top-p 是动态候选集

Top-p 又称 nucleus sampling。它把候选 token 按概率从高到低排列,保留累计概率达到阈值的最小集合,再从集合中采样。

假设候选概率如下:

候选概率累计概率
A0.400.40
B0.300.70
C0.150.85
D0.080.93
E0.071.00

top_p 为 0.9 时,候选集需要包含 A、B、C、D 才能越过 0.9。它保留多少个 token 取决于当时的概率分布,因此不是固定的“前 90% 词汇”。

Top-k 则直接限制候选数量。例如 top_k: 3 只保留概率最高的三个候选。某些实现会组合 Top-k、Top-p 和 Temperature,但具体顺序属于实现细节,不应把某个供应商的流程图当作通用标准。

Frequency 与 Presence 惩罚的是 token

两种惩罚都根据已经生成的 token 调整后续分数:

  • Frequency penalty 与出现次数有关,同一 token 出现越多,正惩罚通常越强。
  • Presence penalty 只关心是否出现过,出现一次和出现多次使用同一档调整。
  • 正值通常抑制重复,负值通常鼓励复用;可用范围取决于 API。

它们操作的是 token,不是“词语”或“话题”的语义。例如一个中文词可能被拆成多个 token,同义词也可能完全不受已出现 token 的惩罚。惩罚过高还可能破坏专业术语、代码标识符、JSON 字段或长文的一致性。

因此,遇到重复问题时不应立即拉高 penalty。还要检查提示词是否要求重复格式、上下文是否塞入重复材料、停止条件是否合理,以及模型是否陷入循环。

为什么不存在通用推荐值

固定的“代码用 0.2、写作用 0.9”表格看起来方便,却忽略了模型差异:

  • OpenAI 的部分 API 提供 Temperature 和 Top-p,并建议通常只调整其中一个;具体模型可能限制这些参数。
  • Anthropic 已在 Claude 4.7 及之后的模型中停止支持非默认的 temperaturetop_ptop_k,建议通过提示词引导行为。
  • Google 对 Gemini 3.x 建议保留采样参数默认值,因为修改它们可能让推理任务出现循环或性能下降。
  • 同一个参数值换到另一模型、另一版本或另一服务商,不代表相同的实际随机程度。

所以参数配置应该绑定到明确的供应商、API 端点和模型版本,而不是写成跨模型常量。

更可靠的调参流程

  1. 固定模型版本、系统提示词、输入样本、工具配置和输出格式。
  2. 从供应商默认值开始,先建立基线,不要一次修改多个参数。
  3. 明确要改善的指标,例如事实正确率、Schema 通过率、重复率或表达多样性。
  4. 每组配置运行多次,因为单次样本不能代表随机生成的稳定表现。
  5. 优先改提示词、结构化输出和上下文质量;只有确认问题来自采样行为时再调采样参数。
  6. 用评测集比较结果,并记录模型版本、参数、成功率、延迟和成本。
固定任务与评测集

使用默认参数建立基线

一次只改变一个参数

重复采样并计算指标

保留有可重复收益的配置

如果目标是稳定的 JSON、函数参数或分类标签,优先使用供应商提供的结构化输出、Schema 约束或工具调用能力。降低 Temperature 只能减少部分变化,不能替代输出验证。

一句话总结

Temperature 控制概率分布的形状,Top-p 和 Top-k 控制候选集合,Frequency 与 Presence penalty 调整已出现 token 的分数;它们都是生成策略参数,不是准确性旋钮。先确认目标模型是否支持,再用评测数据决定是否偏离默认值。

参考:OpenAI Responses APIOpenAI Chat APIClaude Messages APIUsing the Claude Messages APIGemini prompt design strategiesGemini GenerateContent API