LangSmith—评估数据集
本文介绍了LangSmith中创建和管理数据集的多种方法。创建数据集可通过SDK或UI界面实现,支持从样本列表、运行结果、CSV文件或DataFrame导入数据。SDK提供了丰富的API,包括创建、查询和更新数据集及样本的功能。数据集支持分块管理,可将样本划分为不同分组进行评估。此外,还详细说明了如何使用UI界面手动创建数据集或从文件导入数据。管理功能包括查询数据集、样本更新以及分块数据的创建和使
1.创建数据集
创建评估数据集有两种方法,一种是使用LangSmith的SDK,另一种是直接在LangSmith页面。下面分别进行说明。
1.1使用SDK
1.1.1从样本列表创建
样本列表由很多的测试样本组成,每个样本包括输入、输出(可选)和元数据(可选,比如来源),
from langsmith import Client
client = Client()
dataset = client.create_dataset(
dataset_name="1th-dataset", description="A sample dataset in LangSmith."
)
examples = [
{
"inputs": {"question": "简单总结一下北京市政府工作报告中关于城市发展有哪些规划?"},
"outputs": {"answer": "北京市政府*保障。"},
},
{
"inputs": {"question": "北京市政府工作报告中关于保障就业有哪些举措?"},
"outputs": {"answer": "北京市政*.7万人."},
},
{
"inputs": {"question": "简述一下将如何推动京津冀协同发展,不要超过200字"},
"outputs": {"answer": "推动京津*链延伸和协同配套"}
},
{
"inputs": {"question": "如何提升公共服务水平?,不要超过200字"},
"outputs": {"answer": "提升公*满意度"}
},
{
"inputs": {"question": "如何节能减排,不要超过200字"},
"outputs": {"answer": "提升公共服*增强民众的满意度"}
},
]
client.create_examples(dataset_id=dataset.id, examples=examples)
1.1.2从已有运行结果创建
从项目中已经运行过的实验结果可以直接创建新的评估数据集,此时需要使用client.list_runs获取,可以获取所有的运行结果,也可以根据元数据、创建时间和id获取指定的运行结果,如下代码用evaluators项目下所有的运行结果创建一个新的数据集:
from langsmith import Client
client = Client()
dataset_name = "1th-dataset"# 获取运行结果数据列表
runs = client.list_runs(
project_name="evaluators",
is_root=True,
error=False,
)dataset = client.create_dataset(dataset_name, description="A clone of example dataset")
# 创建新的测试用例数据,可根据实际请求调整对应的字段
examples = [{"inputs": run.inputs, "outputs": run.outputs} for run in runs]# 创建新的数据集
client.create_examples(
dataset_id=dataset.id,
examples=examples
)
1.1.3从CSV文件创建
可以使用upload_csv从CSV文件加载测试数据并创建新的评估数据集,如下示例代码说明和使用从CSV文件创建数据集:
from langsmith import Client
import osclient = Client()
csv_file = 'yourpath/csvfile.csv'
input_keys = ['question', 'column2'] #输入列名
output_keys = ['output1', 'output2'] #输出列名dataset = client.upload_csv(
csv_file=csv_file,
input_keys=input_keys,
output_keys=output_keys,
name="1th-dataset",
description="Dataset created from a CSV file",
data_type="kv"
)
1.1.4从pandas DataFrame创建
还可以直接从pandas的DataFrame创建数据集,具体代码如下:
from langsmith import Client
import os
import pandas as pdclient = Client()
df = pd.read_parquet('yourpath/yourfile.parquet')
input_keys = ['column1', 'column2'] # 输出列名
output_keys = ['output1', 'output2'] # 输出列名dataset = client.upload_dataframe(
df=df,
input_keys=input_keys,
output_keys=output_keys,
name="Your Parquet Dataset",
description="Dataset created from a parquet file",
data_type="kv" # The default
)
1.2.使用UI
1.2.1从零开始创建
操作过程如下:
Datasets & Experiments—>New Dataset—>Create from scratch—>输入名字和说明—>create,至此完成数据集创建。
点击【+Example】,可以录入测试样本数据。
1.2.2从CSV或JSON格式文件创建
操作过程如下:
Datasets & Experiments—>New Dataset—>Create from file,然后上传CSN或JSONL文件完成数据集创建。
2.管理数据集
2.1查询数据集
使用client.list_datasets可以查询数据集,可以查询所有数据集,也可以根据条件查询指定数据集。
#查询所有数据集
datasets = client.list_datasets()
#查询指定名字数据集
datasets = client.list_datasets(dataset_name="your dataset name")
#简单的模糊查询
datasets = client.list_datasets(dataset_name_contains="some substring")
#根据类型查询数据集
datasets = client.list_datasets(data_type="chat")
2.2查询样本
使用client.list_examples可以查询数据集中的样本,可以查询全部样本,也可以根据条件查询。
#查询指定数据集中全部样本
examples = client.list_examples(dataset_id="your dataset id")
#根据元数据查询
examples = client.list_examples(dataset_name="your dataset name", metadata={"foo": "bar"})
#根据样本id查询指定样本
example_ids = ['97c678d0-4d26-4721-846a-397f4dee70cd',
'c92b4867-11b0-4791-826b-891164a0b47a',
'1e655d82-1f44-40d0-afa1-48900d3b21e5',
'1be184e4-409c-4a5c-a26f-7c66927b033a',
'e1c3f54a-aa78-4db9-b0c7-fc3471eb5e30']examples = client.list_examples(example_ids=example_ids)
2.3更新样本
使用client.update_examples可以更新数据集中的样本数据,支持进行批量更新。
example_udpate = {
"id": example_id,
"input": "updated input",
"output": "updated output",
"metadata": {"foo": "bar"}
}
client.update_example(dataset_id=dataset.id, updates=[example_update]
3.数据集分块
一个数据集可以划分成多块,可以在分块数据上进行评估。
3.1创建分块
创建分块非常简单。在一个数据集的样本列表页面,选择多个样本,然后选择【Add to Split】,在对话框中输入分块的名字,分块就被创建起来的。
3.2使用分块
可以查询分块中的样本数据,也可以更新分块中的样本数据,还可以在指定的分块进行评估。
#查询分块数据
client.list_examples(dataset_id="4b167d68-c11f-4b0d-938a-ffc29b4dffa0", splits=["test", "training"])
#更新分块数据
example_udpate = {
"id": example_id,
"input": "updated input",
"output": "updated output",
"metadata": {"foo": "bar"}
}
client.update_example(dataset_id="4b167d68-c11f-4b0d-938a-ffc29b4dffa0", updates=[example_update], split="train")
#使用分块数据进行评估
from langsmith import evaluate
results = evaluate(
lambda inputs: label_text(inputs["text"]),
data=client.list_examples(dataset_id="4b167d68-c11f-4b0d-938a-ffc29b4dffa0", splits=["test"]),
evaluators=[correct_label],
experiment_prefix="Illegal Queries",
)
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)