メインコンテンツへスキップ
Weave の Dataset を使うと、LLM アプリケーション評価用のサンプルを整理、収集、トラッキングし、バージョン管理して簡単に比較できます。Dataset はプログラムからも UI からも作成・操作できます。 このページでは、次の内容を説明します。
  • Python と TypeScript での基本的な Dataset の操作と、使い始める方法
  • Weave の calls などのオブジェクトから、Python と TypeScript で Dataset を作成する方法
  • UI で Dataset に対して実行できる操作

Dataset クイックスタート

以下のコードサンプルでは、Python と TypeScript を使って基本的な Dataset 操作を行う方法を示します。SDK を使用すると、次のことができます。
  • Dataset を作成する
  • Dataset を公開する
  • Dataset を取得する
  • Dataset 内の特定の例にアクセスする
タブを選択すると、Python と TypeScript それぞれのコードを確認できます。
import weave
from weave import Dataset
# Weave を初期化する
weave.init('intro-example')

# データセットを作成する
dataset = Dataset(
    name='grammar',
    rows=[
        {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."},
        {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."},
        {'id': '2', 'sentence': "They plays video games all day.", 'correction': "They play video games all day."}
    ]
)

# データセットを公開する
weave.publish(dataset)

# データセットを取得する
dataset_ref = weave.ref('grammar').get()

# 特定の例にアクセスする
example_label = dataset_ref.rows[2]['sentence']

他のオブジェクトから Dataset を作成する

Python では、Datasetcalls のような一般的な Weave オブジェクトや、pandas.DataFrame のような Python オブジェクトから作成することもできます。この機能は、特定のサンプルから例示用の Dataset を作成したい場合に便利です。

Weave call

1 つ以上の Weave call から Dataset を作成するには、call オブジェクトを取得し、from_calls method に list として渡します。
@weave.op
def model(task: str) -> str:
    return f"Now working on {task}"

res1, call1 = model.call(task="fetch")
res2, call2 = model.call(task="parse")

dataset = Dataset.from_calls([call1, call2])
# これで、このデータセットを使用してモデルを評価するなどの操作ができます。

Pandas DataFrame

Pandas の DataFrame object から Dataset を作成するには、from_pandas method を使用します。Dataset を Pandas に戻すには、to_pandas を使用します。
import pandas as pd

df = pd.DataFrame([
    {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."},
    {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."},
    {'id': '2', 'sentence': "They plays video games all day.", 'correction': "They play video games all day."}
])
dataset = Dataset.from_pandas(df)
df2 = dataset.to_pandas()

assert df.equals(df2)

Hugging Face Datasets

Hugging Face の datasets.Dataset または datasets.DatasetDict object から Dataset を作成するには、まず必要な dependencies がインストールされていることを確認します。
pip install weave[huggingface]
次に、from_hf method を使用します。複数の split (‘train’、‘test’、‘validation’ など) を持つ DatasetDict を指定すると、Weave は自動的に ‘train’ split を使用し、警告を表示します。‘train’ split が存在しない場合はエラーになります。特定の split を直接指定することもできます (例: hf_dataset_dict['test']) 。weave.Dataset を Hugging Face の Dataset に戻すには、to_hf method を使用します。
# datasets がインストールされていることを確認してください: pip install datasets
from datasets import Dataset as HFDataset, DatasetDict

# HF Dataset の例
hf_rows = [
    {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."},
    {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."},
]
hf_ds = HFDataset.from_list(hf_rows)
weave_ds_from_hf = Dataset.from_hf(hf_ds)

# HF Dataset に戻す
converted_hf_ds = weave_ds_from_hf.to_hf()

# HF DatasetDict の例(デフォルトでは 'train' split を使用)
hf_dict = DatasetDict({
    'train': HFDataset.from_list(hf_rows),
    'test': HFDataset.from_list([{'id': '2', 'sentence': "Test sentence", 'correction': "Test correction"}])
})
# 警告を表示し、'train' split を使用します
weave_ds_from_dict = Dataset.from_hf(hf_dict)

# 特定の split を指定
weave_ds_from_test_split = Dataset.from_hf(hf_dict['test'])

UI で Dataset を作成、編集、削除する

Dataset は UI で作成、編集、削除できます。Weave UI でデータセットを作成すると、コードを編集しなくても、あなたやチームの非エンジニアのメンバーが、例や質問、そのほかのエージェント テスト用データを含む共有可能なデータセットを作成し、キュレーションできます。

新しい Dataset を作成する

  1. 編集する Weave プロジェクトにアクセスします。
  2. サイドバーで Traces を選択します。
  3. 新しい Dataset を作成する対象の call を1つ以上選択します。
  4. 右上のメニューで、Add selected rows to a dataset アイコン (ごみ箱アイコンの横にあります) をクリックします。
  5. Choose a dataset ドロップダウンで、Create new を選択します。Dataset name フィールドが表示されます。
  6. Dataset name フィールドにデータセット名を入力します。Configure dataset fields のオプションが表示されます。
    Dataset 名は英字または数字で始める必要があり、使用できるのは英字、数字、ハイフン、アンダースコアのみです。
  7. (任意) Configure dataset fields で、データセットに含める call のフィールドを選択します。
  • 選択した各フィールドの列名はカスタマイズできます。
  • 新しい Dataset に含めるフィールドを一部だけ選択することも、すべてのフィールドの選択を解除することもできます。
  1. データセットフィールドの設定が完了したら、Next をクリックします。新しい Dataset のプレビューが表示されます。
  2. (任意) Dataset 内の編集可能なフィールドをクリックして、エントリを編集します。
  3. Create dataset をクリックします。新しいデータセットが作成されます。
  4. 確認ポップアップで、View the dataset をクリックして新しい Dataset を表示します。別の方法として、Datasets タブに移動することもできます。

Dataset を編集する

  1. 編集する Dataset が含まれている Weave プロジェクトにアクセスします。
  2. サイドバーで Datasets を選択します。利用可能な Dataset が表示されます。 Dataset UI
  3. Object 列で、編集する Dataset の名前とバージョンをクリックします。名前、バージョン、作成者、Dataset の行などの情報が表示されたポップアウト モーダルが開きます。 Dataset 情報を表示
  4. モーダルの右上にある Edit dataset ボタン (鉛筆アイコン) をクリックします。モーダルの下部に + Add row ボタンが表示されます。 Dataset UI- Add row icon
  5. + Add row をクリックします。既存の Dataset の行の上に緑色の行が表示され、Dataset に新しい行を追加できることを示します。 Dataset UI
  6. 新しい行にデータを追加するには、その行の追加先の列をクリックします。Dataset の行にあるデフォルトの id 列は、Weave によって作成時に自動的に割り当てられるため、編集できません。編集モーダルが表示され、書式設定用の TextCodeDiff オプションを選択できます。 Dataset UI - 列にデータを追加して書式設定する。
  7. 新しい行でデータを追加する各列について、step 6 を繰り返します。 Dataset UI - すべての列にデータを追加。
  8. Dataset に追加する各行について、step 5 を繰り返します。
  9. 編集が完了したら、モーダルの右上にある Publish をクリックして Dataset を公開します。変更を公開しない場合は、Cancel をクリックします。 Dataset UI - 公開またはキャンセル。 公開後、更新された行を含む新しいバージョンの Dataset を UI で利用できます。 Dataset UI - 公開済みメタデータ。 Dataset UI - 公開済みの行。

Dataset を削除する

  1. 削除したい Dataset が含まれる Weave プロジェクトにアクセスします。
  2. サイドバーから Datasets を選択します。利用可能な Dataset が表示されます。
  3. Object 列で、削除する Dataset の名前とバージョンをクリックします。名前、バージョン、作成者、Dataset の行などの情報を表示するポップアウト モーダルが開きます。
  4. モーダルの右上にあるゴミ箱アイコンをクリックします。 Dataset の削除確認を求めるポップアップモーダルが表示されます。 Dataset UI - 削除確認モーダル。
  5. ポップアップモーダルで、赤い Delete ボタンをクリックして Dataset を削除します。削除したくない場合は、Cancel をクリックします。 これで Dataset は削除され、Weave ダッシュボードの Datasets タブには表示されなくなります。

Dataset に新しいサンプルを追加する

  1. 編集したい Weave プロジェクトにアクセスします。
  2. サイドバーで Traces を選択します。
  3. 新しいサンプルを作成したい Datasets を含む call を 1 つ以上選択します。
  4. 右上のメニューで、Add selected rows to a dataset アイコン (ごみ箱アイコンの横) をクリックします。必要に応じて Show latest versions をオフにすると、利用可能なすべてのデータセットの全バージョンが表示されます。
  5. Choose a dataset ドロップダウンから、サンプルを追加する Dataset を選択します。Configure field mapping オプションが表示されます。
  6. (任意) Configure field mapping では、call のフィールドを対応するデータセット列にどうマッピングするかを調整できます。
  7. フィールドマッピングの設定が完了したら、Next をクリックします。新しい Dataset のプレビューが表示されます。
  8. 空の行 (緑色) に、新しいサンプルの値を追加します。id フィールドは編集できず、Weave によって自動的に作成されることに注意してください。
  9. Add to dataset をクリックします。Configure field mapping 画面に戻るには、Back をクリックします。
  10. 確認ポップアップで、変更を確認するには View the dataset をクリックします。あるいは、Datasets タブにアクセスして Dataset の更新を確認します。

その他のデータセット操作

行の選択

select method を使用すると、インデックスを指定して Dataset から特定の行を選択できます。これは、データのサブセットを作成する場合に便利です。
import weave
from weave import Dataset

# サンプルのデータセットを作成
dataset = Dataset(rows=[
    {'col_a': 1, 'col_b': 'x'},
    {'col_a': 2, 'col_b': 'y'},
    {'col_a': 3, 'col_b': 'z'},
    {'col_a': 4, 'col_b': 'w'},
])

# インデックス 0 と 2 の行を選択
subset_dataset = dataset.select([0, 2])

# subset_dataset には 1 行目と 3 行目だけが含まれます
# print(list(subset_dataset))
# 出力: [{'col_a': 1, 'col_b': 'x'}, {'col_a': 3, 'col_b': 'z'}]