采样参数:temperature 与 top_p¶
模型每次生成的不是"答案",而是从概率分布里"抽"一个 token——采样参数就是你调这个分布的旋钮。 🟢 稳定 | 对位 W1 | 最后核实:2026-09-08
为什么要懂¶
做 QC 出身的你最敏感的问题一定是:"同样的输入,输出能复现吗?" 答案取决于采样参数。agent 场景下参数设错,轻则输出风格飘忽,重则工具调用参数乱飞。这是你从「会用 API」到「会调 API」的第一步。
核心解释¶
模型每生成一个 token,内部都会算出一个概率分布:下一个位置上几万个候选 token 各自的概率。比如输入「不良事件的英文缩写是」之后,分布可能是 AE 60%、Adverse 15%、不良 10%、其余长尾。
采样 = 从这个分布里挑一个。怎么挑,由参数决定:
- temperature(温度):调整分布的"尖锐程度"。
- 低温(0–0.3):分布变尖,大概率事件更大概率被选——输出保守、稳定、可预期
- 高温(0.7–1.5):分布变平,长尾候选也有机会——输出多样、有创意,但也更飘
- 类比:温度就是分布的"偏心程度"。温度 0 像每次都用最大概率的硬币(总出正面),温度高像把硬币捏得更圆(什么都可能出)
- top_p(核采样):只在累计概率前 p% 的候选里挑。top_p=0.1 表示只从最头部的候选里选——效果上也是一种"收紧"。
- 两个旋钮效果重叠,实践建议:调一个就好,别同时拧(官方文档通常也这么建议)。
动手试试¶
用同一个 prompt 调三次 API:temperature=0、0.7、1.5,各问「给这段 SAS 代码起个变量名」或「用一句话解释 SDTM」。观察从「每次几乎一样」到「每次都不一样」的变化——10 分钟建立的手感胜过读十篇文章。
实践准则(agent 场景)¶
| 场景 | 建议 |
|---|---|
| 工具调用的参数生成、结构化输出 | 低温度(0–0.2)——你要的是准确不是惊喜 |
| SAS log 分析、spec 提取等事实性任务 | 低温度 |
| 头脑风暴、文案起草 | 可以放宽到 0.7 |
| 调试 agent 行为飘忽时 | 先查温度,再怀疑 prompt |
常见误解¶
- ❌「temperature=0 就绝对可复现」→ 不保证。服务端浮点实现、批处理、模型版本静默更新都可能带来微小差异。QC 思维的正确姿势:低温 + 固定模型版本号 + 记录 API 返回的完整响应,而不是假设它是确定性的——这和你用
criterion=1E-8而不是假设两台机器算出来完全一样,是同一个哲学。 - ❌「温度低 = 更准确」→ 只是更稳定,不是更正确。模型不知道的还是不知道(见 训练管线 的幻觉讨论)。
现状与深挖¶
- 主流 API 均支持 temperature/top_p;部分推理模型(reasoning 模式)会忽略或限制采样参数——看各家文档的说明。
- 深挖:HuggingFace《How to generate text》的可视化对比图,见 resources.md W1 行。