代理
LLM 驱动的自主代理结合了三个组件:(1) 工具调用,(2) 记忆,和 (3) 规划。代理使用工具调用与规划(例如,通常通过提示)和记忆(例如,通常是短期消息历史记录)来生成响应。工具调用允许模型通过生成两件事来响应给定的提示:(1) 要调用的工具和 (2) 所需的输入参数。
assistant node 是一个 LLM,它根据输入决定是否调用工具。tool condition 查看 assistant node 是否选择了工具,如果选择了,则路由到 tool node。tool node 执行工具并将输出作为工具消息返回给 assistant node。这个循环一直持续到 assistant node 选择了一个工具。如果没有选择工具,那么代理直接返回 LLM 响应。 
最终响应:评估代理的最终响应。单步:独立评估任何代理步骤(例如,它是否选择了适当的工具)。轨迹:评估代理是否采取了预期的路径(例如,工具调用)以得出最终答案。

评估代理的最终响应
评估代理的一种方法是评估其在任务中的整体性能。这基本上涉及将代理视为一个黑盒,并简单地评估它是否完成了工作。 输入应该是用户输入和(可选)工具列表。在某些情况下,工具作为代理的一部分硬编码,它们无需传入。在其他情况下,代理更通用,这意味着它没有固定的工具集,工具需要在运行时传入。 输出应该是代理的最终响应。 评估器因您要求代理执行的任务而异。许多代理执行相对复杂的一系列步骤并输出最终文本响应。与 RAG 类似,LLM-as-judge 评估器在这些情况下通常有效,因为它们可以直接从文本响应评估代理是否完成了工作。 然而,这种评估类型有几个缺点。首先,它通常需要一段时间才能运行。其次,您没有评估代理内部发生的任何事情,因此在发生故障时可能难以调试。第三,有时可能难以定义适当的评估指标。评估代理的单步操作
代理通常执行多个动作。虽然对它们进行端到端评估很有用,但评估这些单独的动作也很有用。这通常涉及评估代理的一个步骤——LLM 调用,它决定要做什么。 输入应该是单步的输入。根据您正在测试的内容,这可能只是原始用户输入(例如,提示和/或一组工具),或者它也可能包括先前完成的步骤。 输出只是该步骤的输出,通常是 LLM 响应。LLM 响应通常包含工具调用,指示代理下一步应该采取什么行动。 对此的评估器通常是一个二进制分数,用于判断是否选择了正确的工具调用,以及一个用于判断工具输入是否正确的启发式方法。参考工具可以简单地指定为字符串。 这种评估有几个好处。它允许您评估单个动作,这使您能够查明应用程序可能在哪里失败。它们运行也相对较快(因为它们只涉及一个 LLM 调用),并且评估通常使用所选工具相对于参考工具的简单启发式评估。一个缺点是它们不能捕获完整的代理——只有特定的一步。另一个缺点是数据集创建可能具有挑战性,特别是如果您想在代理输入中包含过去的历史记录。为代理轨迹早期步骤生成数据集非常容易(例如,这可能只包括输入提示),但为轨迹后期步骤生成数据集可能很困难(例如,包括许多先前的代理动作和响应)。评估代理的轨迹
评估代理的轨迹涉及评估代理所采取的所有步骤。 输入再次是整个代理的输入(用户输入,以及可选的工具列表)。 输出是工具调用列表,可以将其表示为“精确”轨迹(例如,预期的工具调用序列),或者只是预期的一组工具调用(按任何顺序)。 这里的评估器是所采取步骤的某个函数。评估“精确”轨迹可以使用一个二进制分数来确认序列中每个工具名称的精确匹配。这很简单,但有一些缺陷。有时可能存在多条正确路径。这种评估也无法捕捉轨迹仅偏离一步与完全错误之间的区别。 为了解决这些缺陷,评估指标可以侧重于“不正确”步骤的数量,这更好地解释了接近的轨迹与明显偏离的轨迹之间的差异。评估指标还可以侧重于是否以任何顺序调用了所有预期工具。 然而,这些方法都不能评估工具的输入;它们只关注所选的工具。为了解决这个问题,另一种评估技术是将完整的代理轨迹(以及参考轨迹)作为一组消息(例如,所有 LLM 响应和工具调用)传递给 LLM 作为判断者。这可以评估代理的完整行为,但它是最难编译的参考(幸运的是,使用 LangGraph 这样的框架可以帮助解决这个问题!)。另一个缺点是评估指标可能有点难以提出。检索增强生成 (RAG)
检索增强生成 (RAG) 是一种强大的技术,它涉及根据用户输入检索相关文档并将其传递给语言模型进行处理。RAG 通过利用外部知识使 AI 应用程序能够生成更明智、更具上下文意识的响应。有关 RAG 概念的全面回顾,请参阅我们的
RAG 从零开始系列。数据集
在评估 RAG 应用时,一个关键的考虑因素是您是否为每个输入问题拥有(或可以轻松获取)参考答案。参考答案作为评估生成响应正确性的事实依据。然而,即使没有参考答案,仍然可以使用无参考 RAG 评估提示执行各种评估(下面提供了示例)。评估器
LLM-as-judge 是 RAG 的常用评估器,因为它是一种评估事实准确性或文本之间一致性的有效方法。 
- 需要参考输出:将 RAG 链生成的答案或检索结果与参考答案(或检索结果)进行比较,以评估其正确性。
- 不需要参考输出:使用不需要参考答案的提示执行自洽性检查(在上图中以橙色、绿色和红色表示)。
应用 RAG 评估
应用 RAG 评估时,请考虑以下方法-
离线评估:对于依赖参考答案的任何提示,使用离线评估。这最常用于 RAG 答案正确性评估,其中参考是真实(正确)答案。 -
在线评估:对于任何无参考提示,采用在线评估。这使您能够在实时场景中评估 RAG 应用的性能。 -
成对评估:利用成对评估比较不同 RAG 链生成的答案。此评估侧重于用户指定的标准(例如,答案格式或样式),而不是正确性,正确性可以使用自洽性或真实参考进行评估。
RAG 评估总结
总结
总结是一种特定类型的自由形式写作。评估目标通常是根据一组标准检查写作(摘要)。开发人员策划的摘要文本示例通常用于评估(请参见此处的数据集示例here)。但是,生产(总结)应用程序的用户日志可用于使用下面的任何无参考评估提示进行在线评估。 LLM-as-judge 通常用于使用遵循提供标准来评分摘要的无参考提示对总结(以及其他类型的写作)进行评估。提供特定参考摘要不太常见,因为总结是一项创造性任务,并且存在许多可能的正确答案。 由于使用了无参考提示,在线或离线评估是可行的。成对评估也是在不同总结链(例如,不同总结提示或 LLM)之间进行比较的强大方法:分类和标记
分类和标记将标签应用于给定输入(例如,用于毒性检测、情感分析等)。分类/标记评估通常采用以下组件,我们将在下面详细回顾: 分类/标记评估的一个核心考虑是您是否拥有带有参考标签的数据集。如果没有,用户通常希望定义一个评估器,该评估器使用标准将标签(例如,毒性等)应用于输入(例如,文本、用户问题等)。但是,如果提供了真实类标签,则评估目标侧重于根据真实类标签对分类/标记链进行评分(例如,使用准确率、召回率等指标)。 如果提供了真实参考标签,那么通常只需定义一个自定义启发式评估器来比较真实标签与链输出。然而,鉴于 LLM 的出现,越来越普遍的做法是简单地使用LLM-as-judge根据指定标准(无需真实参考)对输入执行分类/标记。 当使用LLM-as-judge和无参考提示时,在线或离线评估是可行的。特别是,当用户希望标记/分类应用程序输入(例如,毒性等)时,这非常适合在线评估。| 用例 | 详情 | 需要参考输出 | LLM-as-judge? | 成对相关 |
|---|---|---|---|---|
| 准确率 | 标准定义 | 是 | 否 | 否 |
| 精确率 | 标准定义 | 是 | 否 | 否 |
| 召回率 | 标准定义 | 是 | 否 | 否 |
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。