更新于

按任务类型设置 LLM temperature 速查表


temperature 的原理不再重复讲(原理和 top_p 的关系见下方相关阅读),本文只做一件事:给出一张能直接照抄进项目配置文件的速查表,按任务类型分类,省去每次都要重新试错的时间。

一、速查表

任务类型推荐 temperature推荐 top_p备注
代码生成 / 补全0.1–0.30.9–0.95追求语法正确性,过高会引入不存在的 API
结构化输出(JSON/XML 抽取)01.0优先用 schema 约束而不是靠低温度硬保证格式
SQL / 正则等强规则生成01.0错误容忍度极低,务必设为确定性输出
客服问答 / FAQ 机器人0.2–0.40.9需要稳定、可预测,避免答非所问
文档摘要0.3–0.50.9略高于纯问答,允许语言表达上的多样性
翻译0.2–0.30.9准确度优先,过高的多样性反而降低忠实度
RAG 问答(基于检索片段回答)0.1–0.30.9希望模型贴紧检索到的原文,减少发挥
Agent / 工具调用(Function Calling)0–0.20.9工具参数出错会导致整个链路失败,务必偏低
分类 / 打标签任务01.0本质是判别任务,不需要随机性
创意写作 / 文案脑暴0.7–1.00.9–1.0需要多样性和”意外感”,可适当调高
头脑风暴多个方案0.8–1.20.95配合 n(多次采样)一起用效果更好
数据合成 / 增强训练样本0.7–0.90.9需要覆盖多种表达变体,避免生成结果同质化
单元测试用例生成0.4–0.60.9略高于普通代码生成,鼓励覆盖边界情况

基本原则:判别类、抽取类、格式敏感类任务用低温;生成类、发散类、需要多样性的任务用高温。拿不准就从表里最接近的场景抄一个初始值,再按实际输出微调 0.1–0.2。

二、各家 API 的特殊限制

不同厂商对这个参数的支持有细节差异,直接套用别家的配置可能会报错或不生效:

  • OpenAI 推理模型(o 系列 / GPT-5 thinking 模式):不支持自定义 temperature,传参会被忽略或报错,模型内部固定使用确定性程度较高的采样策略
  • Anthropic Claude:官方建议 temperaturetop_p 二选一调整,不要同时改动两个参数,避免采样策略叠加导致行为难以预测
  • Google Gemini:默认 temperature 略高于 OpenAI 和 Anthropic 的默认值,如果是从其他家 API 迁移过来又没有显式设置该参数,实际生成结果可能会比预期更发散
  • 开源模型(Llama、Qwen 等自部署):部分推理框架(如 vLLM)的 temperature=0 实现方式是内部转换成贪心解码,个别版本存在数值精度导致的输出不完全确定的已知问题,追求严格确定性建议同时固定随机种子

三、一个容易被忽视的细节:temperature=0 不等于绝对确定

很多人以为把 temperature 设为 0 就能保证同样的输入永远得到完全一样的输出,但实际上:

  • 多数云端 API 出于批处理和硬件层面的浮点数精度问题,即使 temperature=0 也可能在极少数情况下出现字符级别的细微差异
  • 如果任务对逐字节确定性有强需求(比如需要做输出结果的哈希对比缓存),不要只依赖 temperature=0,最好在业务层加一层结果缓存或增加重试后的一致性校验

四、实战建议:从生产环境配置反推

与其纠结”理论上应该设多少”,不如参考实际生产系统里常见的做法:

  • Agent 类产品(工具调用密集)几乎清一色把 temperature 设到 0–0.1,因为一次工具参数解析错误的代价远高于回答略显生硬
  • 面向 C 端的聊天助手,多数产品把默认值设在 0.5–0.7 之间,在”够聪明”和”不啰嗦跑题”之间取平衡
  • 内容生成类工具(营销文案、社媒配文)普遍给用户暴露一个”创意程度”滑块,底层直接映射到 0.3–1.0 的 temperature 区间

五、相关阅读

不同任务切换不同模型和参数配置时,通过 YoTradeApi 一个统一的 API 入口即可调用 Claude、GPT、Gemini 等模型,不用为每家单独维护密钥和计费。