Skip to main content
概念:成对评估
LangSmith 支持以比较方式评估现有实验。您可以同时对多个实验的输出进行评分,而不是一次评估一个输出。在本指南中,您将使用 evaluate() 与两个现有实验来定义成对评估器运行成对评估。最后,您将使用 LangSmith UI 来查看成对实验

前提条件

  • 如果您尚未创建要比较的实验,请查看快速入门操作指南以开始进行评估。
  • 本指南需要 langsmith Python 版本 >=0.2.0 或 JS 版本 >=0.2.9
您也可以使用 evaluate_comparative() 来比较两个以上的现有实验。

evaluate() 比较参数

最简单的 evaluate / aevaluate 函数接受以下参数: 除了这些,您还可以传入以下可选参数:

定义成对评估器

成对评估器只是具有预期签名的函数。

评估器参数

自定义评估器函数必须具有特定的参数名称。它们可以接受以下任意子集的参数:
  • inputs: dict:与数据集中单个示例对应的输入字典。
  • outputs: list[dict]:每个实验在给定输入上产生的两个字典输出的列表。
  • reference_outputs / referenceOutputs: dict:示例关联的参考输出字典(如果可用)。
  • runs: list[Run]:两个实验在给定示例上生成的完整 Run 对象的两个项目列表。如果您需要访问中间步骤或每个运行的元数据,请使用此参数。
  • example: Example:完整的数据集 Example,包括示例输入、输出(如果可用)和元数据(如果可用)。
对于大多数用例,您只需要 inputsoutputsreference_outputs / referenceOutputsrunsexample 仅在您需要应用程序实际输入和输出之外的一些额外跟踪或示例元数据时有用。

评估器输出

自定义评估器应返回以下类型之一: Python 和 JS/TS
  • dict:包含以下键的字典:
    • key,表示将记录的反馈键
    • scores,是从运行 ID 到该运行分数的映射。
    • comment,是一个字符串。最常用于模型推理。
目前仅限 Python
  • list[int | float | bool]:一个包含两个分数的列表。假定列表的顺序与 runs / outputs 评估器参数相同。评估器函数名称用作反馈键。
请注意,您应选择一个与运行上标准反馈不同的反馈键。我们建议在成对反馈键前加上 pairwise_ranked_

运行成对评估

以下示例使用一个提示,要求 LLM 在两个 AI 助手回答之间决定哪个更好。它使用结构化输出来解析 AI 的响应:0、1 或 2。
在下面的 Python 示例中,我们从 LangChain Hub 拉取这个结构化提示,并与 LangChain 聊天模型包装器一起使用。LangChain 的使用完全是可选的。 为了说明这一点,TypeScript 示例直接使用 OpenAI SDK。
  • Python:需要 langsmith>=0.2.0
  • TypeScript:需要 langsmith>=0.2.9

查看成对实验

从数据集页面导航到“成对实验”标签页: 成对实验标签页 点击您要检查的成对实验,您将进入比较视图: 成对比较视图 您可以通过点击表头中的竖起大拇指/倒大拇指按钮来筛选第一个实验表现更好或反之的运行: 成对筛选