> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-hivemind-launch.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# データセットを収集してトラッキングする

> LLM アプリケーション評価用のサンプルを整理、収集、トラッキングし、バージョン管理する

Weave の `Dataset` を使うと、LLM アプリケーション評価用のサンプルを整理、収集、トラッキングし、バージョン管理して簡単に比較できます。`Dataset` はプログラムからも UI からも作成・操作できます。

このページでは、次の内容を説明します。

* Python と TypeScript での基本的な `Dataset` の操作と、使い始める方法
* Weave の [calls](../tracking/tracing) などのオブジェクトから、Python と TypeScript で `Dataset` を作成する方法
* UI で `Dataset` に対して実行できる操作

<div id="dataset-quickstart">
  ## `Dataset` クイックスタート
</div>

以下のコードサンプルでは、Python と TypeScript を使って基本的な `Dataset` 操作を行う方法を示します。SDK を使用すると、次のことができます。

* `Dataset` を作成する
* `Dataset` を公開する
* `Dataset` を取得する
* `Dataset` 内の特定の例にアクセスする

タブを選択すると、Python と TypeScript それぞれのコードを確認できます。

<Tabs>
  <Tab title="Python">
    ```python lines theme={null}
    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']
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript lines theme={null}
    import * as weave from 'weave';

    // Weave を初期化する
    const client = await weave.init('intro-example');

    // データセットを作成する
    const dataset = new weave.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."}
        ]
    });

    // データセットを公開する
    const ref = await dataset.save();

    // データセットを取得する
    const retrievedDataset = await client.get(ref);

    // または URI 文字列を使って取得する
    const datasetUri = 'weave:///my-entity/intro-example/object/grammar:abc123def456';
    const refFromUri = weave.ObjectRef.fromUri(datasetUri);
    const retrievedDatasetFromUri = await client.get(refFromUri);

    // 特定の例にアクセスする
    const exampleLabel = retrievedDataset.getRow(2).sentence;
    ```
  </Tab>
</Tabs>

<div id="create-a-dataset-from-other-objects">
  ## 他のオブジェクトから `Dataset` を作成する
</div>

<Tabs>
  <Tab title="Python">
    Python では、`Dataset` は [calls](../tracking/tracing) のような一般的な Weave オブジェクトや、`pandas.DataFrame` のような Python オブジェクトから作成することもできます。この機能は、特定のサンプルから例示用の `Dataset` を作成したい場合に便利です。

    ### Weave call

    1 つ以上の Weave call から `Dataset` を作成するには、call オブジェクトを取得し、`from_calls` method に list として渡します。

    ```python lines theme={null}
    @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` を使用します。

    ```python lines theme={null}
    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 がインストールされていることを確認します。

    ```bash theme={null}
    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 を使用します。

    ```python lines theme={null}
    # 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'])
    ```
  </Tab>

  <Tab title="TypeScript">
    ```plaintext theme={null}
     この機能は現在 TypeScript ではまだ利用できません。
    ```
  </Tab>
</Tabs>

<div id="create-edit-and-delete-a-dataset-in-the-ui">
  ## UI で `Dataset` を作成、編集、削除する
</div>

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

<div id="create-a-new-dataset">
  ### 新しい `Dataset` を作成する
</div>

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** のオプションが表示されます。

   <Note>
     Dataset 名は英字または数字で始める必要があり、使用できるのは英字、数字、ハイフン、アンダースコアのみです。
   </Note>

7. (任意) **Configure dataset fields** で、データセットに含める call のフィールドを選択します。

* 選択した各フィールドの列名はカスタマイズできます。
* 新しい `Dataset` に含めるフィールドを一部だけ選択することも、すべてのフィールドの選択を解除することもできます。

8. データセットフィールドの設定が完了したら、**Next** をクリックします。新しい `Dataset` のプレビューが表示されます。

9. (任意) **Dataset** 内の編集可能なフィールドをクリックして、エントリを編集します。

10. **Create dataset** をクリックします。新しいデータセットが作成されます。

11. 確認ポップアップで、**View the dataset** をクリックして新しい `Dataset` を表示します。別の方法として、**Datasets** タブに移動することもできます。

<div id="edit-a-dataset">
  ### `Dataset` を編集する
</div>

1. 編集する `Dataset` が含まれている Weave プロジェクトにアクセスします。

2. サイドバーで **Datasets** を選択します。利用可能な `Dataset` が表示されます。

   <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/HbhUDAG_r2i2K_Pk/weave/guides/core-types/imgs/datasetui.png?fit=max&auto=format&n=HbhUDAG_r2i2K_Pk&q=85&s=58329a8544dd977af60ce929e2889ac0" alt="Dataset UI" width="277" height="395" data-path="weave/guides/core-types/imgs/datasetui.png" />

3. **Object** 列で、編集する `Dataset` の名前とバージョンをクリックします。名前、バージョン、作成者、`Dataset` の行などの情報が表示されたポップアウト モーダルが開きます。

   <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/HbhUDAG_r2i2K_Pk/weave/guides/core-types/imgs/datasetui-popout.png?fit=max&auto=format&n=HbhUDAG_r2i2K_Pk&q=85&s=e8489cf687ec883b51fd42de563b9c7b" alt="Dataset 情報を表示" width="341" height="306" data-path="weave/guides/core-types/imgs/datasetui-popout.png" />

4. モーダルの右上にある **Edit dataset** ボタン (鉛筆アイコン) をクリックします。モーダルの下部に **+ Add row** ボタンが表示されます。

   <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/HbhUDAG_r2i2K_Pk/weave/guides/core-types/imgs/datasetui-popout-edit.png?fit=max&auto=format&n=HbhUDAG_r2i2K_Pk&q=85&s=c98afcd397a3792e81e4546efddc7d96" alt="Dataset UI- Add row icon" width="48" height="65" data-path="weave/guides/core-types/imgs/datasetui-popout-edit.png" />

5. **+ Add row** をクリックします。既存の `Dataset` の行の上に緑色の行が表示され、`Dataset` に新しい行を追加できることを示します。

   <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/HbhUDAG_r2i2K_Pk/weave/guides/core-types/imgs/datasetui-popout-edit-green.png?fit=max&auto=format&n=HbhUDAG_r2i2K_Pk&q=85&s=0a5e763208574c62be50cdb9ece00b70" alt="Dataset UI" width="841" height="194" data-path="weave/guides/core-types/imgs/datasetui-popout-edit-green.png" />

6. 新しい行にデータを追加するには、その行の追加先の列をクリックします。`Dataset` の行にあるデフォルトの **id** 列は、Weave によって作成時に自動的に割り当てられるため、編集できません。編集モーダルが表示され、書式設定用の **Text**、**Code**、**Diff** オプションを選択できます。

   <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/HbhUDAG_r2i2K_Pk/weave/guides/core-types/imgs/datasetui-popout-edit-addcol.png?fit=max&auto=format&n=HbhUDAG_r2i2K_Pk&q=85&s=592aec13f3f0974c098356056e4ed969" alt="Dataset UI - 列にデータを追加して書式設定する。" width="243" height="233" data-path="weave/guides/core-types/imgs/datasetui-popout-edit-addcol.png" />

7. 新しい行でデータを追加する各列について、step 6 を繰り返します。

   <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/HbhUDAG_r2i2K_Pk/weave/guides/core-types/imgs/datasetui-popout-edit-colsadded.png?fit=max&auto=format&n=HbhUDAG_r2i2K_Pk&q=85&s=7d06ca8d93031b5a637eb8081c1592a5" alt="Dataset UI - すべての列にデータを追加。" width="853" height="194" data-path="weave/guides/core-types/imgs/datasetui-popout-edit-colsadded.png" />

8. `Dataset` に追加する各行について、step 5 を繰り返します。

9. 編集が完了したら、モーダルの右上にある **Publish** をクリックして `Dataset` を公開します。変更を公開しない場合は、**Cancel** をクリックします。

   <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/HbhUDAG_r2i2K_Pk/weave/guides/core-types/imgs/datasetui-popout-edit-publish.png?fit=max&auto=format&n=HbhUDAG_r2i2K_Pk&q=85&s=ccba7ec7768d8a4b115f7260ab8da938" alt="Dataset UI - 公開またはキャンセル。" width="224" height="135" data-path="weave/guides/core-types/imgs/datasetui-popout-edit-publish.png" />

   公開後、更新された行を含む新しいバージョンの `Dataset` を UI で利用できます。

   <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/HbhUDAG_r2i2K_Pk/weave/guides/core-types/imgs/datasetui-popout-edit-published-meta.png?fit=max&auto=format&n=HbhUDAG_r2i2K_Pk&q=85&s=0e3d4c6227ca71e95aab4a0305b18f37" alt="Dataset UI - 公開済みメタデータ。" width="560" height="137" data-path="weave/guides/core-types/imgs/datasetui-popout-edit-published-meta.png" />

   <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/HbhUDAG_r2i2K_Pk/weave/guides/core-types/imgs/datasetui-popout-edit-published-rows.png?fit=max&auto=format&n=HbhUDAG_r2i2K_Pk&q=85&s=a05189e59835c43e9c910b3f8ce1e606" alt="Dataset UI - 公開済みの行。" width="838" height="219" data-path="weave/guides/core-types/imgs/datasetui-popout-edit-published-rows.png" />

<div id="delete-a-dataset">
  ### `Dataset` を削除する
</div>

1. 削除したい `Dataset` が含まれる Weave プロジェクトにアクセスします。

2. サイドバーから **Datasets** を選択します。利用可能な `Dataset` が表示されます。

3. **Object** 列で、削除する `Dataset` の名前とバージョンをクリックします。名前、バージョン、作成者、`Dataset` の行などの情報を表示するポップアウト モーダルが開きます。

4. モーダルの右上にあるゴミ箱アイコンをクリックします。

   `Dataset` の削除確認を求めるポップアップモーダルが表示されます。

   <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/HbhUDAG_r2i2K_Pk/weave/guides/core-types/imgs/datasetui-delete-modal.png?fit=max&auto=format&n=HbhUDAG_r2i2K_Pk&q=85&s=a6ef8fe73f16a6323cbcb46b9d3ec08f" alt="Dataset UI - 削除確認モーダル。" width="560" height="358" data-path="weave/guides/core-types/imgs/datasetui-delete-modal.png" />

5. ポップアップモーダルで、赤い **Delete** ボタンをクリックして `Dataset` を削除します。削除したくない場合は、**Cancel** をクリックします。

   これで `Dataset` は削除され、Weave ダッシュボードの **Datasets** タブには表示されなくなります。

<div id="add-a-new-example-to-a-dataset">
  ### `Dataset` に新しいサンプルを追加する
</div>

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` の更新を確認します。

<div id="other-dataset-operations">
  ## その他のデータセット操作
</div>

<Tabs>
  <Tab title="Python">
    ### 行の選択

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

    ```python lines theme={null}
    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'}]
    ```
  </Tab>

  <Tab title="TypeScript">
    ```plaintext theme={null}
     この機能は現在、TypeScript ではまだ利用できません。
    ```
  </Tab>
</Tabs>
