Skip to main content
评估(“evals”)通过评估 Agent 的执行轨迹(即其产生的消息和工具调用序列)来衡量其表现。与验证基本正确性的集成测试不同,评估会根据参考标准或评分标准对 Agent 行为进行评分,因此在更改提示、工具或模型时,它们对于捕获回归问题非常有用。 评估器是一个函数,它接收 Agent 的输出(以及可选的参考输出)并返回一个分数:
agentevals 包提供了用于 Agent 轨迹的预构建评估器。你可以通过执行轨迹匹配(确定性比较)或使用 LLM 评判(定性评估)来进行评估:

安装 AgentEvals

或者,直接克隆 AgentEvals 仓库

轨迹匹配评估器

AgentEvals 提供了 create_trajectory_match_evaluator 函数,用于将你的 Agent 轨迹与参考轨迹进行匹配。有四种模式: 以下示例共享一个通用设置,即一个带有 get_weather 工具的 Agent:
strict 模式确保轨迹包含完全相同的消息,顺序相同,工具调用也相同,但允许消息内容存在差异。当你需要强制执行特定的操作序列时(例如,要求在授权操作之前进行策略查询),这很有用。
unordered 模式允许相同的工具调用以任意顺序出现。当你想验证是否检索到了特定信息但不在乎顺序时,这很有帮助。例如,一个 Agent 使用不同的工具调用来检查城市的天气和活动。
supersetsubset 模式匹配部分轨迹。superset 模式验证 Agent 至少调用了参考轨迹中的工具,允许额外的工具调用。subset 模式确保 Agent 没有调用参考轨迹之外的任何工具。
你还可以设置 tool_args_match_mode 属性和/或 tool_args_match_overrides 来自定义评估器如何考虑实际轨迹与参考轨迹中工具调用之间的相等性。默认情况下,只有对同一工具具有相同参数的工具调用才被视为相等。访问仓库了解更多详情。

LLM 作为评判的评估器

你可以使用 LLM 通过 create_trajectory_llm_as_judge 函数来评估 Agent 的执行路径。与轨迹匹配评估器不同,它不需要参考轨迹,但如果有的话可以提供。
如果你有参考轨迹,请使用预构建的 TRAJECTORY_ACCURACY_PROMPT_WITH_REFERENCE 提示:
要了解更多关于 LLM 如何评估轨迹的可配置性,请访问仓库

异步支持

所有 agentevals 评估器都支持 Python asyncio。异步版本可通过在函数名中的 create_ 后添加 async 来使用。

在 LangSmith 中运行评估

为了跟踪随时间变化的实验,请将评估器结果记录到 LangSmith。首先,设置所需的环境变量:
LangSmith 提供两种主要方法来运行评估:pytest 集成和 evaluate 函数。
使用 pytest 运行评估:
创建一个 LangSmith 数据集并使用 evaluate 函数。数据集必须具有以下模式:
  • input: {"messages": [...]} 用于调用 Agent 的输入消息。
  • output: {"messages": [...]} Agent 输出中的预期消息历史记录。对于轨迹评估,你可以选择仅保留助手消息。
要了解更多关于评估你的 Agent 的信息,请参阅 LangSmith 文档