agentevals 包提供专门设计用于使用实时模型测试智能体轨迹的评估器。
本指南涵盖开源 LangChain
agentevals 包,它与 LangSmith 集成以进行轨迹评估。轨迹匹配
为给定输入硬编码参考轨迹,并通过逐步比较验证运行。非常适合测试您知道预期行为的明确定义的工作流程。当您对应该调用哪些工具以及以什么顺序调用有特定期望时使用。这种方法是确定性的、快速的且具有成本效益,因为它不需要额外的 LLM 调用。
LLM 作为评判者
使用 LLM 定性验证智能体的执行轨迹。“评判者”LLM 根据提示标准(可以包括参考轨迹)审查智能体的决策。更灵活,可以评估效率和适当性等细微方面,但需要 LLM 调用且不太确定性。当您想评估智能体轨迹的整体质量和合理性而不需要严格的工具调用或顺序要求时使用。
安装 AgentEvals
轨迹匹配评估器
AgentEvals 在 Python 中提供create_trajectory_match_evaluator 函数,在 TypeScript 中提供 createTrajectoryMatchEvaluator,以将智能体的轨迹与参考轨迹进行匹配。
您可以使用以下模式:
严格匹配
strict 模式确保轨迹以相同顺序包含具有相同工具调用的相同消息,尽管它允许消息内容有所不同。当您需要强制执行特定的操作序列时,这很有用,例如在授权操作之前需要策略查找。
无序匹配
unordered 模式允许以任何顺序进行相同的工具调用,当你想要验证正在调用正确的工具集但不关心顺序时,这很有用。例如,智能体可能需要检查城市的天气和事件,但顺序无关紧要。
子集和超集匹配
superset 和 subset 模式关注调用哪些工具而不是工具调用的顺序,允许你控制智能体的工具调用必须与参考对齐的严格程度。
- 当你想要验证在执行中调用了几个关键工具,但允许智能体调用其他工具时,使用
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 作为评判者评估器。无参考轨迹
有参考轨迹
如果你有参考轨迹,可以在提示中添加额外变量并传入参考轨迹。下面,我们使用预构建的TRAJECTORY_ACCURACY_PROMPT_WITH_REFERENCE 提示并配置 reference_outputs 变量:
有关 LLM 如何评估轨迹的更多可配置性,请访问存储库。
异步支持(Python)
所有agentevals 评估器都支持 Python asyncio。对于使用工厂函数的评估器,通过在函数名中的 create_ 后添加 async 来提供异步版本。
以下是一个使用异步评判者和评估器的示例: