评估 AI Agent:为什么只看结果会误导你
你构建的一个智能体在最终输出评估中获得了 82% 的分数。你发布了它。两周后,你的支持队列里塞满了用户的投诉,抱怨智能体获取了错误的数据,使用了错误的参数调用 API,并且在错误的中期工作基础上生成了听起来很自信的回复。你回头查看追踪记录(traces)—— 发现智能体在 40% 的查询中路由都是错误的。最终输出评估从未捕捉到这一点,因为智能体往往还是误打误撞地得到了正确答案。
这是智能体评估中的核心陷阱:仅衡量最后输出的结果,无法告诉你智能体是如何到达那里的,而“到达那里”的过程正是大多数失败发生的地方。
为什么智能体评估在结构上有所不同
评估标准的 LLM 调用相对直接。你给它输入,它产生输出,你给输出评分。非确定性虽然令人讨厌,但并不是根本性的障碍。
智能体同时在多个维度上打破了这种模式。一个执行研究任务的智能体可能需要 12 个步骤:检索上下文、决定下一步搜索什么、合成部分结果、调用外部 API,并在工具返回意外结果时循环返回。每一步都是一个决策点。第 3 步的一个错误转向可能会在第 4 步到第 12 步中产生静默的级联反应,但最终仍然产生一个看起来合理的输出。
传统的软件测试假设行为是确定性的。传统的机器学习(ML)评估假设输入-输出对是固定的。智能体系统同时打破了这两个假设。智能体的行为会根据工具返回的内容、它检索到的信息以及它决定采取的路径而变化 —— 而这些都是你事先没有指定的。
这产生了两个截然不同的评估问题。首先,你需要评估最终结果:智能体完成任务了吗?其次,你需要评估轨迹(trajectory):它是否以正确的方式、使用正确的工具、在可接受的成本内且不违反任何政策的情况下完成了任务?纯粹的结果指标会让那些运气好的智能体通过。纯粹的轨迹指标则会惩罚有效的替代方案。你需要两者结合,并根据风险大小给予不同的权重。
评分器光谱:将工具与问题匹配
并非所有的智能体行为都能以同样的方式进行评估,尝试对所有内容使用同一种评分器类型会导致评估结果要么太死板,要么太不一致而无法信任。
基于代码的评分器(Code-based graders) 是基石。它们评估二元条件:智能体是否调用了正确的工具?是否传递了必需的参数?数 据库的最终状态是否反映了该操作?输出是否包含所需的字段?基于代码的评分器快速、廉价、确定且可调试。如果评分器判定失败,你确切地知道原因。它们的弱点在于脆弱性 —— 它们会惩罚有效的替代方案,并且难以处理任何需要解释的内容。
LLM 评委(LLM-as-judge graders) 覆盖了代码无法触及的领域:连贯性、客户互动中的同理心、研究摘要是否真正回答了原始问题、生成的计划在逻辑上是否合理。它们很灵活并能捕捉细微差别,但它们自身也引入了非确定性。一个 LLM 评委在多次运行中可能会得出不一致的结论,在你信任它的评分之前,需要针对人类专家的判断进行仔细校准。带有明确维度标准的结构化评分标准(rubric)在表现上明显优于开放式的“这好吗?”之类的提示词。
人工评分器(Human graders) 仍然是处理高风险或真正模糊内容的金标准。它们昂贵且缓慢,但它们是校准另外两种评分器的唯一方法。如果没有定期对智能体追踪记录进行人工复核,你就无法知道你的自动评分器是否真的在衡量你认为它们在衡量的内容。来自大规模构建这些系统的从业者的经验法则是:在有人真正深入研究过样本记录之前,永远不要对评估分数听之任之。
一个实用的评估系统会将这三者分层。使用基于代码的评分器作为第一道防线 —— 快速、便宜,并能捕捉明显的失败。使用 LLM 评委处理主观质量维度。定期引入人工复核来校准并捕捉系统性的盲点。这些层级相互补偿弱点,就像重叠的安全控制措施一样。
