Skip to main content
许多智能体行为只有在使用真实LLM时才会显现,例如智能体决定调用哪个工具、如何格式化响应,或者提示词修改是否会影响整个执行轨迹。LangChain的 agentevals 包提供了专门设计用于使用实时模型测试智能体轨迹的评估器。
本指南涵盖开源的 LangChain agentevals 包,它与LangSmith集成用于轨迹评估。
AgentEvals允许您通过执行 轨迹匹配 或使用 LLM评判 来评估智能体的轨迹(确切的消息序列,包括工具调用):

轨迹匹配

为给定输入硬编码一个参考轨迹,并通过逐步比较来验证运行。适用于测试定义明确的工作流,您知道预期行为。当您对应该调用哪些工具以及调用顺序有具体期望时使用。这种方法是确定性的、快速的且具有成本效益,因为它不需要额外的LLM调用。

LLM作为评判者

使用LLM定性地验证智能体的执行轨迹。“评判”LLM根据提示词标准(可以包括参考轨迹)审查智能体的决策。更灵活,可以评估效率和适当性等细微方面,但需要LLM调用且确定性较低。当您想评估智能体轨迹的整体质量和合理性,而没有严格的工具调用或顺序要求时使用。

安装AgentEvals

或者,直接克隆 AgentEvals仓库

轨迹匹配评估器

AgentEvals在Python中提供 create_trajectory_match_evaluator 函数,在TypeScript中提供 createTrajectoryMatchEvaluator 函数,用于将您的智能体轨迹与参考轨迹进行匹配。 您可以使用以下模式:

严格匹配

strict 模式确保轨迹包含相同顺序的相同消息和相同的工具调用,但允许消息内容存在差异。当您需要强制执行特定操作序列时(例如,要求在授权操作前进行策略查询),这很有用。

无序匹配

unordered 模式允许相同的工具调用以任何顺序出现,当您想验证是否调用了正确的工具集但不关心顺序时,这很有帮助。例如,智能体可能需要同时检查城市的天气和活动,但顺序无关紧要。

子集和超集匹配

supersetsubset 模式关注调用了哪些工具,而不是工具调用的顺序,允许您控制智能体的工具调用必须与参考轨迹对齐的严格程度。
  • 当您想验证执行中调用了几个关键工具,但允许智能体调用额外工具时,使用 superset 模式。智能体的轨迹必须至少包含参考轨迹中的所有工具调用,并且可以包含超出参考轨迹的额外工具调用。
  • 使用 subset 模式通过验证智能体没有调用参考轨迹之外的任何无关或不必要的工具来确保智能体效率。智能体的轨迹必须仅包含参考轨迹中出现的工具调用。
以下示例演示了 superset 模式,其中参考轨迹仅要求 get_weather 工具,但智能体可以调用额外工具:
您还可以通过设置 tool_args_match_mode(Python)或 toolArgsMatchMode(TypeScript)属性,以及 tool_args_match_overrides(Python)或 toolArgsMatchOverrides(TypeScript)属性来自定义评估器如何考虑实际轨迹与参考轨迹中工具调用的相等性。默认情况下,只有对相同工具具有相同参数的工具调用才被视为相等。访问 仓库 了解更多详情。

LLM作为评判者评估器

本节涵盖 agentevals 包中特定于轨迹的LLM作为评判者评估器。有关LangSmith中通用的LLM作为评判者评估器,请参阅 LLM作为评判者评估器
您也可以使用LLM来评估智能体的执行路径。与轨迹匹配评估器不同,它不需要参考轨迹,但如果有的话可以提供。

无参考轨迹

有参考轨迹

如果您有参考轨迹,可以在提示词中添加一个额外变量并传入参考轨迹。下面,我们使用预构建的 TRAJECTORY_ACCURACY_PROMPT_WITH_REFERENCE 提示词并配置 reference_outputs 变量:
有关如何配置LLM评估轨迹的更多选项,请访问 仓库

异步支持(Python)

所有 agentevals 评估器都支持Python asyncio。对于使用工厂函数的评估器,通过在函数名中的 create_ 后添加 async 可以获得异步版本。 以下是使用异步评判者和评估器的示例: