以编程方式使用文档

LangSmith 提供了用于管理和使用您的 数据集的工具。本页面介绍了数据集操作,包括:

您还将学习如何 导出筛选后的追踪实验 中导回数据集以进行进一步的分析和迭代。

对数据集进行版本控制

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

创建数据集的新版本

每次您在数据集中添加、更新或删除示例时,都会创建一个新的 版本 。这使您能够跟踪数据集随时间的变化,并了解数据集的演变过程。

默认情况下,版本由更改的时间戳定义。当您在 **示例** 选项卡中点击数据集的特定版本(按时间戳)时,您将找到该时间点的数据集状态。

!数据集版本控制

请注意,查看数据集的过去版本时,示例是只读的。您还可以看到在此版本和数据集最新版本之间执行的操作。

在 **测试** 选项卡中,您将找到在不同版本的数据集上运行的测试结果。

!数据集版本控制

标记版本

您也可以标记数据集的版本以提供更具可读性的名称,这对于标记数据集历史记录中的重要里程碑很有用。

例如,您可以将数据集的某个版本标记为"prod",并用它来针对您的 LLM 管道运行测试。

您可以通过点击 UI 中的 **+ 标记此版本** 来标记数据集的版本。在 **示例** tab.

!标记数据集

您也可以使用 SDK 为数据集的版本添加标签。以下是使用 Python SDK:

from langsmith import Client
from datetime import datetime

client = Client()
initial_time = datetime(2024, 1, 1, 0, 0, 0) # The timestamp of the version you want to tag

# You can tag a specific dataset version with a semantic name, like "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 argument.

from langsmith import Client

ls_client = Client()

# Assumes actual outputs have a 'class' key.
# Assumes example outputs have a 'label' key.
def correct(outputs: dict, reference_outputs: dict) -> bool:
  return outputs["class"] == reference_outputs["label"]

results = ls_client.evaluate(
    lambda inputs: {"class": "Not toxic"},
    # Pass in filtered data here:
    data=ls_client.list_examples(
      dataset_name="Toxic Queries",
      as_of="latest",  # specify version here
    ),
    evaluators=[correct],
)
await evaluate((inputs) => labelText(inputs["input"]), {
  data: langsmith.listExamples({
    datasetName: datasetName,
    asOf: "latest",
  }),
  evaluators: [correctLabel],
});
ExampleListParams listParams = ExampleListParams.builder()
    .datasetId(datasetId)
    .asOf("latest")
var examples = client.examples().list(listParams);

详细了解如何在 以编程方式创建和管理数据集 page.

Evaluate on a split / filtered view of a dataset

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

您可以使用 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",
)
await evaluate((inputs) => labelText(inputs["input"]), {
  data: langsmith.listExamples({
    datasetName: datasetName,
    metadata: {"desired_key": "desired_value"},
  }),
  evaluators: [correctLabel],
  experimentPrefix: "Toxic Queries",
});
ExampleListParams listParams = ExampleListParams.builder()
    .datasetId(datasetId)
    .metadata("{\"desired_key\":\"desired_value\"}")
    .build();
var examples = client.examples().list(listParams);

有关更多筛选功能,请参阅此 操作指南.

在数据集分割上评估

您可以使用 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",
)
await evaluate((inputs) => labelText(inputs["input"]), {
  data: langsmith.listExamples({
    datasetName: datasetName,
    splits: ["test", "training"],
  }),
  evaluators: [correctLabel],
  experimentPrefix: "Toxic Queries",
});
List splits = Arrays.asList("test", "training");

ExampleListParams listParams = ExampleListParams.builder()
    .datasetId(datasetId)
    .splits(splits)
    .build();
var examples = client.examples().list(listParams);

有关获取数据集视图的更多详细信息,请参阅 获取数据集.

共享数据集

公开共享数据集

从 **数据集和实验** 选项卡中,选择一个数据集,点击 **⋮** (页面右上角),点击 **共享数据集**。这将打开一个对话框,您可以在其中复制数据集的链接。

!共享数据集

取消共享数据集

  1. 点击 **取消共享** 通过点击 **公开** 在任意公开共享数据集的右上角,然后 **取消共享** 在对话框中。 !取消共享数据集
  1. 通过点击 **设置** -> **共享链接** or 此链接导航到您组织的公开共享数据集列表,然后点击 **取消共享** 在您想要取消共享的数据集旁边。

!取消共享跟踪列表

导出数据集

您可以将 LangSmith 数据集导出为 CSV、JSONL 或 OpenAI 的微调格式 ,从 LangSmith UI 中操作。

从 **数据集与实验** 选项卡中,选择一个数据集,点击 **⋮** (页面右上角),点击 **下载数据集**.

!导出数据集按钮

将过滤后的跟踪从实验导出到数据集

在 LangSmith 中运行 离线评估 后,您可能希望导出 跟踪 满足某些评估条件的数据到数据集中。

查看实验跟踪

!导出过滤后的跟踪

为此,首先点击实验名称旁边的箭头。这将引导您进入包含实验生成跟踪的项目。

!导出过滤后的跟踪

在那里,您可以根据评估条件过滤跟踪。在此示例中,我们正在过滤所有准确率分数大于 0.5 的跟踪。

!导出过滤后的跟踪

在项目上应用过滤后,我们可以多选运行记录添加到数据集中,然后点击 **添加到数据集**.

!导出过滤后的跟踪