Temperature=0.3 还是 0.7?工业诊断场景下调参实验

0 阅读3分钟

同一个诊断 Prompt,跑 5 个温度值 × 10 次,告诉你为什么工业 Agent 的 Temperature 不该超过 0.3。


问题:Temperature 对 Agent 影响有多大?

每次 LLM 调用都有一个 temperature 参数。很多人的配置是复制粘贴来的,不知道这个值具体影响什么。

我在 industrial-agent-long 中写了一个 TemperatureExperiment,用同一个诊断 Prompt 在 5 个温度值下各跑 10 次,测量输出的一致性。


实验设计

Prompt(固定不变):

你是一个工业设备诊断专家。请根据以下信息进行诊断:
设备 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.00.9810 次输出几乎一字不差
0.10.95极少量措辞变化,结论一致
0.30.88措辞有差异,但诊断方向一致(「轴承磨损」始终在前)
0.70.62偶尔出现不同诊断结论排序,「转子不平衡」有时排第一
1.00.41第 7 次跑出「建议联系设备厂商确认」——模型自我怀疑

t=0.0 的 10 次输出(首段):

每轮都是:
"根据提供的数据,CNC-001 振动值 4.8mm/s 超出正常范围 0-2.8mm/s 约 71%,
轴承温度 72°C 超出正常上限 65°C。初步诊断为轴承磨损导致的振动异常..."

→ 10/10 一致。

t=0.7 的第 7 次输出:

"CNC-001 出现转子不平衡迹象(振动 4.8mm/s,超限 71%),
建议进行振动频谱分析以排除轴承磨损可能性..."

→ 诊断结论方向变了,可能影响后续操作决策。

t=1.0 的「跑偏」输出:

"根据数据分析,建议联系设备厂商技术支持进行进一步确认。
在等待期间可减负荷运行..."

→ 模型开始「自我怀疑」,给的答案不再果断。


temperature-chart.png

结论

工业诊断场景,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,调用实验端点:

curl -X POST http://localhost:8080/api/agent/experiment/temperature

返回每个温度值的一致性分数和样本回复。挑你实际业务场景中的典型 Prompt 跑一遍,你就知道自己的 Agent 该设多少了。


一句话总结

Temperature 不是「创意度」,是「随机性」。工业 Agent 的随机性应该趋近于零——你不需要一个有「个性」的诊断报告,你需要一个准确的。


本文由 LaoLiang 原创,首发于掘金/知乎/微信公众号。转载请联系作者。