agentevals 包提供了用于 Agent 轨迹的预构建评估器。你可以通过执行轨迹匹配(确定性比较)或使用LLM 评审器(定性评估)来进行评估:
安装 AgentEvals
轨迹匹配评估器
AgentEvals 提供了createTrajectoryMatchEvaluator 函数,用于将 Agent 的轨迹与参考轨迹进行匹配。共有四种模式:
| 模式 | 描述 | 使用场景 |
|---|---|---|
strict | 消息结构和工具调用必须完全一致,且顺序相同(消息内容可以不同) | 测试特定执行顺序(例如先查询策略再授权) |
unordered | 与参考轨迹具有相同的消息结构和工具调用,但工具调用顺序可以不同 | 验证信息检索结果,而不关心调用顺序 |
subset | Agent 只能调用参考轨迹中的工具(不允许额外工具) | 确保 Agent 不超出预期范围 |
superset | Agent 至少调用参考轨迹中的工具(允许额外工具) | 验证已执行最低要求的操作 |
get_weather 工具的 Agent。
严格匹配
严格匹配
strict 模式要求轨迹包含完全相同的消息,并按照相同顺序执行相同的工具调用,但允许消息内容有所不同。当你需要强制执行特定操作顺序时(例如要求先进行策略查询再授权操作),这种模式非常有用。无序匹配
无序匹配
unordered 模式允许相同的工具调用以任意顺序出现。当你只关心是否获取到了特定信息,而不关心获取顺序时,这种模式非常有帮助。例如,一个 Agent 可能通过不同的工具调用同时查询某城市的天气和活动信息。子集匹配与超集匹配
子集匹配与超集匹配
superset 和 subset 模式用于匹配部分轨迹。superset 模式验证 Agent 至少调用了参考轨迹中的工具,允许额外工具调用;subset 模式则确保 Agent 不会调用参考轨迹之外的工具。你还可以设置
toolArgsMatchMode 属性和/或 toolArgsMatchOverrides 属性,以自定义评估器判断实际轨迹与参考轨迹中的工具调用是否相等的方式。默认情况下,只有调用同一工具且参数完全相同的工具调用才会被视为相等。更多细节请参阅仓库文档。LLM 作为评审器(LLM-as-judge)评估器
你可以使用createTrajectoryLLMAsJudge 函数,通过 LLM 来评估 Agent 的执行路径。与轨迹匹配评估器不同,它不需要参考轨迹,但如果有参考轨迹,也可以提供。
不使用参考轨迹
不使用参考轨迹
使用参考轨迹
使用参考轨迹
如果你有参考轨迹,请使用预构建的
TRAJECTORY_ACCURACY_PROMPT_WITH_REFERENCE 提示词:如需对 LLM 如何评估轨迹进行更多自定义配置,请访问仓库。
在 LangSmith 中运行评估
为了跟踪长期实验,请将评估器结果记录到 LangSmith。首先,设置所需的环境变量:evaluate 函数。
使用 vitest/jest 集成
使用 vitest/jest 集成
使用 evaluate 函数
使用 evaluate 函数
创建一个 LangSmith 数据集,并使用
evaluate 函数。该数据集必须具有以下 Schema:- input:
{"messages": [...]},用于调用 Agent 的输入消息。 - output:
{"messages": [...]},Agent 输出中期望的消息历史。对于轨迹(trajectory)评估,你可以选择仅保留 Assistant 消息。
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

