我构建的第一个代理之一非常简单: 它从向量存储中检索信息,将其格式化为HTML,并通过电子邮件发送给用户。 没有比这更简单的了,但这个代理仍然有大约1%的失败率。 没有错误。没有警告。它只是返回了垃圾。 这里是残酷的真相: 代理经常失败。而且它们是默默失败的。一直都是。你不能指望一个LLM每次都能做对。 到现在为止,我已经构建并部署了几十个代理,以下是一些实际有效的做法: 1. 从第一天起就具备可观察性。如果你看不到你的代理在做什么,你就无法调试、改进或信任它。每个代理都应该生成跟踪,显示完整的请求流程、模型交互、令牌使用情况和时间元数据。 2. 输入和输出的保护措施。进入和输出LLM的所有内容都应该由确定性代码进行检查。即使是不太可能出错的东西最终也会出错。 3. LLM作为评判者的评估。你可以使用LLM构建一个简单的评判者,自动评估你的代理输出。标记数据集,编写评估提示,并迭代,直到你的评判者捕捉到大多数失败。 4. 错误分析。你可以收集失败样本,对其进行分类,并诊断最常见的错误。 5. 上下文工程。代理失败的原因往往是上下文嘈杂、过载或不相关。学习如何保持上下文相关是非常重要的。 6. 人类反馈循环。有时,最好的保护措施是人类参与,特别是在高风险决策中。