同一个诊断 Prompt,跑 5 个温度值 × 10 次,告诉你为什么工业 Agent 的 Temperature 不该超过 0.3。
问题:Temperature 对 Agent 影响有多大?
每次 LLM 调用都有一个 temperature 参数。很多人的配置是复制粘贴来的,不知道这个值具体影响什么。
我在 industrial-agent-long 中写了一个 TemperatureExperiment,用同一个诊断 Prompt 在 5 个温度值下各跑 10 次,测量输出的一致性。
实验设计
Prompt(固定不变):
bash
你是一个工业设备诊断专家。请根据以下信息进行诊断:
设备 CNC-001 当前振动值为 4.8mm/s(正常范围 0-2.8mm/s),
轴承温度为 72°C(正常范围 40-65°C)。
请给出:1) 可能的故障原因 2) 建议的维修措施 3) 是否需要立即停机。
变量 :Temperature = {0.0, 0.1, 0.3, 0.7, 1.0} 每档跑 10 次 ,共 50 次调用。 测量指标:关键词一致性(Jaccard 相似度)------ 10 次输出中出现相同诊断关键词的比例。
结果
| Temperature | 一致性 | 表现 |
|---|---|---|
| 0.0 | 0.98 | 10 次输出几乎一字不差 |
| 0.1 | 0.95 | 极少量措辞变化,结论一致 |
| 0.3 | 0.88 | 措辞有差异,但诊断方向一致(「轴承磨损」始终在前) |
| 0.7 | 0.62 | 偶尔出现不同诊断结论排序,「转子不平衡」有时排第一 |
| 1.0 | 0.41 | 第 7 次跑出「建议联系设备厂商确认」------模型自我怀疑 |
t=0.0 的 10 次输出(首段):
arduino
每轮都是:
"根据提供的数据,CNC-001 振动值 4.8mm/s 超出正常范围 0-2.8mm/s 约 71%,
轴承温度 72°C 超出正常上限 65°C。初步诊断为轴承磨损导致的振动异常..."
→ 10/10 一致。
t=0.7 的第 7 次输出:
arduino
"CNC-001 出现转子不平衡迹象(振动 4.8mm/s,超限 71%),
建议进行振动频谱分析以排除轴承磨损可能性..."
→ 诊断结论方向变了,可能影响后续操作决策。
t=1.0 的「跑偏」输出:
arduino
"根据数据分析,建议联系设备厂商技术支持进行进一步确认。
在等待期间可减负荷运行..."
→ 模型开始「自我怀疑」,给的答案不再果断。

结论
工业诊断场景,Temperature 不超过 0.3。
| 场景 | 推荐 Temperature | 原因 |
|---|---|---|
| 工业诊断 / 告警分析 | 0.0-0.1 | 需要确定性,同一个输入必须给同一个答案 |
| 数据查询 / 报表生成 | 0.1-0.3 | 允许措辞变化但事实不能变 |
| 对话式运维助手 | 0.3-0.5 | 适度的口语变化让交互更自然 |
| 创意 / 头脑风暴 | 0.7+ | Agent 的「发散思维」 |
为什么不直接用 0.0?
t=0.0 虽然最确定,但有一个副作用:措辞僵化。用户连续问三个设备,回答格式完全一样------「根据提供的数据...根据提供的数据...根据提供的数据...」。t=0.1-0.3 在「确定性」和「自然的措辞变化」之间取得平衡。
怎么验证你自己的 Agent?
启动 industrial-agent-long,调用实验端点:
bash
curl -X POST http://localhost:8080/api/agent/experiment/temperature
返回每个温度值的一致性分数和样本回复。挑你实际业务场景中的典型 Prompt 跑一遍,你就知道自己的 Agent 该设多少了。
一句话总结
Temperature 不是「创意度」,是「随机性」。工业 Agent 的随机性应该趋近于零------你不需要一个有「个性」的诊断报告,你需要一个准确的。
本文由 LaoLiang 原创,首发于掘金/知乎/微信公众号。转载请联系作者。