根因一:工具调用的非确定性

Agent 的核心范式是"LLM 推理 → 选择工具 → 执行 → 观察结果 → 再推理"。这个链路里最脆弱的一环,是 LLM 选择工具这一步。

同样的 prompt,同样的上下文,你跑 10 次可能拿到 8 种不同的 function call 组合。有时候它调了正确的工具但传错参数,有时候它觉得"要不我再想想"然后死循环,有时候它直接跳过工具调用了——因为它"认为"自己知道答案。

我们在测试里见过一个典型案例:Agent 被要求"检查所有服务器的磁盘使用率",它正确地调了 list_servers,拿到 42 台机器后,只检查了前 3 台的磁盘,然后说"其余的都正常"。它编的。

这是 LLM 的根本特性,不是 bug。你不可能靠 prompt engineering 完全消除。