Weave Datasetは、LLMアプリケーション評価のための例を整理、収集、追跡、バージョン管理して簡単に比較できるようにします。プログラムでもUIでもDatasetを作成して操作できます。 このページでは以下について説明します:
  • PythonとTypeScriptでの基本的なDataset操作と始め方
  • PythonとTypeScriptでDatasetを作成する方法(Weave calls
  • UIでDatasetで利用可能な操作

Datasetクイックスタート

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

# Create a dataset
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."}
    ]
)

# Publish the dataset
weave.publish(dataset)

# Retrieve the dataset
dataset_ref = weave.ref('grammar').get()

# Access a specific example
example_label = dataset_ref.rows[2]['sentence']

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

Pythonでは、Datasetは、Weave callsなどの一般的なWeaveオブジェクトや、pandas.DataFrameなどのPythonオブジェクトからも構築できます。この機能は、特定の例から例のDatasetを作成したい場合に便利です。

Weave call

1つまたは複数のWeave callからDatasetを作成するには、コールオブジェクトを取得し、from_callsメソッドのリストに追加します。
@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])
# Now you can use the dataset to evaluate the model, etc.

Pandas DataFrame

Pandas DatasetオブジェクトからDataFrameを作成するには、from_pandasメソッドを使用します。を元に戻すには、Datasetを使用します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 Datasetまたはdatasets.Datasetオブジェクトからdatasets.DatasetDictを作成するには、まず必要な依存関係がインストールされていることを確認してください:
pip install weave[huggingface]
次に、from_hfメソッドを使用します。複数の分割(「train」、「test」、「validation」など)を持つDatasetDictを提供すると、Weaveは自動的に「train」分割を使用し、警告を発します。「train」分割が存在しない場合は、エラーが発生します。特定の分割を直接提供することもできます(例:hf_dataset_dict['test'])。を Hugging Face weave.Datasetに戻すには、Datasetメソッドを使用しますto_hf
# Ensure datasets is installed: pip install datasets
from datasets import Dataset as HFDataset, DatasetDict

# Example with 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)

# Convert back to HF Dataset
converted_hf_ds = weave_ds_from_hf.to_hf()

# Example with HF DatasetDict (uses 'train' split by default)
hf_dict = DatasetDict({
    'train': HFDataset.from_list(hf_rows),
    'test': HFDataset.from_list([{'id': '2', 'sentence': "Test sentence", 'correction': "Test correction"}])
})
# This will issue a warning and use the 'train' split
weave_ds_from_dict = Dataset.from_hf(hf_dict)

# Providing a specific split
weave_ds_from_test_split = Dataset.from_hf(hf_dict['test'])

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

UIでDatasetを作成、編集、削除できます。

新しいDataset

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

編集するDataset

  1. 編集したいDatasetを含むWeaveプロジェクトに移動します。
  2. サイドバーからDatasetsを選択します。利用可能なDatasetが表示されます。 Dataset UI
  3. Object列で、編集したいDatasetの名前とバージョンをクリックします。Datasetの名前、バージョン、作成者、Dataset行などの情報を表示するポップアウトモーダルが表示されます。 View Dataset information
  4. モーダルの右上隅にあるEdit datasetボタン(鉛筆アイコン)をクリックします。+ Add rowボタンがモーダルの下部に表示されます。 Dataset UI- Add row icon
  5. &#xNAN;+ Add rowをクリックします。既存のDataset行の上部に緑色の行が表示され、Datasetに新しい行を追加できることを示します。 Dataset UI
  6. 新しい行にデータを追加するには、その行内の目的の列をクリックします。デフォルトのid列はDataset行では編集できません。Weaveが作成時に自動的に割り当てるためです。TextCode、およびDiffのフォーマットオプションを含む編集モーダルが表示されます。 Dataset UI - Add data to a column and format.
  7. 新しい行でデータを追加したい各列に対してステップ6を繰り返します。 Dataset UI - Add data to all columns.
  8. Datasetに追加したい各行に対してステップ5を繰り返します。
  9. 編集が完了したら、モーダルの右上隅にあるDatasetPublishをクリックして公開します。または、変更を公開したくない場合はCancelをクリックします。 Dataset UI - Publish or cancel. 公開すると、更新された行を含む新しいバージョンのDatasetがUIで利用可能になります。 Dataset UI - Published metadata. Dataset UI - Published rows.

削除するDataset

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

新しい例を追加するDataset

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

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

行の選択

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

# Create a sample 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'},
])

# Select rows at index 0 and 2
subset_dataset = dataset.select([0, 2])

# Now subset_dataset contains only the first and third rows
# print(list(subset_dataset))
# Output: [{'col_a': 1, 'col_b': 'x'}, {'col_a': 3, 'col_b': 'z'}]