跳到主要内容

如何在 UI 中将评估器绑定到数据集

虽然您可以编程方式指定评估器来对您的实验结果进行评分(有关更多信息,请参阅本指南),但您也可以在 UI 中将评估器绑定到数据集。这允许您配置自动评估器,以对您的实验结果进行评分。我们支持基于 LLM 的评估器和自定义 Python 代码评估器。

配置此过程与配置追踪的在线评估器的过程非常相似。

仅影响后续实验运行

当您为数据集配置评估器时,它只会影响在配置评估器之后创建的实验运行。它不会影响在配置评估器之前创建的实验运行的评估。

  1. 通过单击侧边栏中的数据集和测试并选择您要为其配置评估器的数据集,导航到数据集详细信息页面
  2. 单击 添加自动评估器 按钮以向数据集添加评估器。这将打开一个模态框,您可以使用它来配置评估器。

接下来的步骤因评估器类型而异。

LLM 即法官评估器

  1. 选择 LLM 即法官类型评估器
  2. 为您的评估器命名,并设置内联 Prompt 或从 Prompt Hub 加载 Prompt,这将用于评估实验中运行的结果。

Add evaluator name and prompt

重要的是,评估器 Prompt 只能包含以下输入变量

  • input(必需):您正在评估的目标的输入
  • output(必需):您正在评估的目标的输出
  • reference:参考输出,取自数据集
注意

您在应用程序中配置的自动评估器仅在以下情况下有效:您的评估目标的 inputs、评估目标的 outputs 和数据集中的 examples 都是单键字典。 LangSmith 将自动从字典中提取值并将它们传递给评估器。

LangSmith 当前不支持在应用程序中设置对 inputsoutputsexamples 字典中的多个键进行操作的评估器。

您可以在“schema”字段中指定评分标准。在此示例中,我们要求 LLM 根据参考答案对输出的“正确性”进行评分,并输出布尔值 0 或 1。Schema 中字段的名称将被解释为反馈键,类型将是分数的类型。

Evaluator prompt

  1. 保存评估器并导航回数据集详细信息页面。来自数据集的每个后续实验运行现在将由您配置的评估器进行评估。请注意,在下面的图片中,实验中的每次运行都有一个“正确性”分数。

Playground evaluator results

自定义代码评估器

  1. 选择 自定义代码 类型评估器
  2. 编写您的评估函数
自定义代码评估器的限制。

允许的库:您可以导入所有标准库函数,以及以下公共软件包

  numpy (v2.2.2): "numpy"
pandas (v1.5.2): "pandas"
jsonschema (v4.21.1): "jsonschema"
scipy (v1.14.1): "scipy"
sklearn (v1.26.4): "scikit-learn"

网络访问:您无法从自定义代码评估器访问互联网。

在 UI 中,您将看到一个面板,您可以在其中内联编写代码,并带有一些入门代码

自定义代码评估器接受两个参数

  • 一个 Run参考)。这表示您的实验中的新运行。例如,如果您通过 SDK 运行实验,这将包含您正在测试的链或模型的输入/输出。
  • 一个 Example。这表示您正在测试的链或模型使用的数据集中的参考示例。Run 和 Example 的 inputs 应该相同。如果您的 Example 有参考 outputs,那么您可以使用它来与运行的输出进行比较以进行评分。

它们返回单个值

  • 反馈(Feedback)字典:一个字典,其键是您要返回的反馈类型,值是您将为该反馈键给出的分数。例如,{"correctness": 1, "silliness": 0} 将在您的实验运行中创建两种类型的反馈,一种表示它是正确的,另一种表示它不愚蠢。

在下面的屏幕截图中,您可以看到一个简单函数的示例,该函数验证实验中的每次运行是否都有一个已知的 json 字段

import json

def perform_eval(run, example):
output_to_validate = run['outputs']
is_valid_json = 0

# assert you can serialize/deserialize as json
try:
json.loads(json.dumps(output_to_validate))
except Exception as e:
return { "formatted": False }

# assert output facts exist
if "facts" not in output_to_validate:
return { "formatted": False }

# assert required fields exist
if "years_mentioned" not in output_to_validate["facts"]:
return { "formatted": False }

return {"formatted": True}
  1. 测试并保存您的评估函数

在保存之前,您可以单击“测试”,LangSmith 将在过去的运行+示例对上运行您的代码,以确保您的评估代码有效。

此自动评估器现在将对任何类型的未来实验留下反馈,无论是来自 SDK 还是通过 Playground。

  1. 查看实际结果

要可视化在新实验上留下的反馈,请尝试通过 Playground 运行新实验。

在数据集上,如果您现在单击 experiments 选项卡 -> + Experiment -> Run in Playground,您可以看到实际结果。您的实验中的运行将自动标记有您在上面的代码示例中指定的键(此处为 formatted

如果您导航回数据集,您将在 experiments 选项卡中看到该实验的摘要统计信息


此页面是否对您有帮助?


您可以留下详细的反馈 在 GitHub 上.