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 os

client = 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 pd

client = 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",
)

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐