Skip to main content
LangSmith 提供了用于管理和使用您的数据集的工具。本页描述了数据集操作,包括: 您还将学习如何将实验中的筛选跟踪记录导出回数据集,以进行进一步分析和迭代。

对数据集进行版本控制

在 LangSmith 中,数据集是版本化的。这意味着每次您在数据集中添加、更新或删除示例时,都会创建一个新版本的数据集。

创建数据集的新版本

每当您在数据集中添加、更新或删除示例时,都会创建一个数据集的新版本。这使您能够跟踪数据集随时间的变化,并了解数据集是如何演变的。 默认情况下,版本由更改的时间戳定义。当您在 Examples 选项卡中单击数据集的特定版本(按时间戳)时,您将看到该时间点的数据集状态。 版本控制数据集 请注意,查看数据集的过去版本时,示例是只读的。您还将看到在此版本数据集与最新版本数据集之间执行的操作。
默认情况下,Examples 选项卡中显示的是数据集的最新版本,Tests 选项卡中显示的是所有版本的实验。
Tests 选项卡中,您将找到在不同版本数据集上运行的测试结果。 版本控制数据集测试

为版本添加标签

您还可以为数据集的版本添加标签,使其具有更易于人类阅读的名称,这对于标记数据集历史中的重要里程碑非常有用。 例如,您可以将数据集的某个版本标记为 “prod”,并使用它来对您的 LLM 管道运行测试。 您可以通过在 Examples 选项卡中单击 + Tag this version 在 UI 中为数据集的版本添加标签。 为数据集添加标签 您也可以使用 SDK 为数据集的版本添加标签。以下是使用 Python SDK 为数据集版本添加标签示例:
from langsmith import Client
from datetime import datetime

client = Client()
initial_time = datetime(2024, 1, 1, 0, 0, 0) # 您要标记的版本的时间戳

# 您可以使用语义名称(如 "prod")标记特定的数据集版本
client.update_dataset_tag(
    dataset_name=toxic_dataset_name, as_of=initial_time, tag="prod"
)
要在特定标记版本的数据集上运行评估,请参阅在特定数据集版本上评估部分。

在特定数据集版本上评估

在阅读本节之前,您可能会发现参考以下内容很有帮助:

使用 list_examples

您可以使用 evaluate / aevaluate 传入一个示例可迭代对象,以在数据集的特定版本上进行评估。使用 list_examples / listExamples 通过 as_of / asOf 从特定版本标签获取示例,并将其传递给 data 参数。
from langsmith import Client

ls_client = Client()

# 假设实际输出有一个 'class' 键。
# 假设示例输出有一个 'label' 键。
def correct(outputs: dict, reference_outputs: dict) -> bool:
  return outputs["class"] == reference_outputs["label"]

results = ls_client.evaluate(
    lambda inputs: {"class": "Not toxic"},
    # 在此处传入筛选后的数据:
    data=ls_client.list_examples(
      dataset_name="Toxic Queries",
      as_of="latest",  # 在此处指定版本
    ),
    evaluators=[correct],
)
以编程方式创建和管理数据集页面上了解更多关于如何获取数据集视图的信息。

在数据集的拆分/筛选视图上评估

在阅读本节之前,您可能会发现参考以下内容很有帮助:

在数据集的筛选视图上评估

您可以使用 list_examples / listExamples 方法从数据集中获取示例子集以进行评估。 一个常见的工作流是获取具有特定元数据键值对的示例。
from langsmith import evaluate

results = evaluate(
    lambda inputs: label_text(inputs["text"]),
    data=client.list_examples(dataset_name=dataset_name, metadata={"desired_key": "desired_value"}),
    evaluators=[correct_label],
    experiment_prefix="Toxic Queries",
)
有关更多筛选功能,请参阅此操作指南

在数据集拆分上评估

您可以使用 list_examples / listExamples 方法在数据集的一个或多个拆分上进行评估。splits 参数接受您希望评估的拆分列表。
from langsmith import evaluate

results = evaluate(
    lambda inputs: label_text(inputs["text"]),
    data=client.list_examples(dataset_name=dataset_name, splits=["test", "training"]),
    evaluators=[correct_label],
    experiment_prefix="Toxic Queries",
)
有关获取数据集视图的更多详细信息,请参阅获取数据集指南。

共享数据集

公开共享数据集

公开共享数据集将使数据集示例、实验及相关运行以及此数据集上的反馈对任何拥有链接的人可访问,即使他们没有 LangSmith 帐户。请确保您没有共享敏感信息。此功能仅在 LangSmith 的云托管版本中可用。
Dataset & Experiments 选项卡中,选择一个数据集,单击 (页面右上角),单击 Share Dataset。这将打开一个对话框,您可以在其中复制数据集的链接。 共享数据集

取消共享数据集

  1. 通过单击任何公开共享数据集右上角的 Public,然后在对话框中单击 Unshare 来取消共享。 取消共享数据集
  2. 导航到您组织的公开共享数据集列表,方法是单击 Settings -> Shared URLs此链接,然后单击要取消共享的数据集旁边的 Unshare
取消共享跟踪记录列表

导出数据集

您可以从 LangSmith UI 将 LangSmith 数据集导出为 CSV、JSONL 或 OpenAI 的微调格式 Dataset & Experiments 选项卡中,选择一个数据集,单击 (页面右上角),单击 Download Dataset 导出数据集按钮

将筛选的跟踪记录从实验导出到数据集

在 LangSmith 中运行离线评估后,您可能希望将符合某些评估标准的跟踪记录导出到数据集。

查看实验跟踪记录

导出筛选的跟踪记录 为此,首先单击实验名称旁边的箭头。这将引导您到一个包含从您的实验生成的跟踪记录的项目。 导出筛选的跟踪记录 从那里,您可以根据评估标准筛选跟踪记录。在此示例中,我们筛选所有准确度分数大于 0.5 的跟踪记录。 导出筛选的跟踪记录 在项目上应用筛选器后,我们可以多选要添加到数据集的运行,然后单击 Add to Dataset 导出筛选的跟踪记录