> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wandb.ai/llms.txt
> Use this file to discover all available pages before exploring further.

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

> LLM アプリケーションの評価向けに、例を整理、収集、トラッキングし、バージョン管理します

Weave データセットは、LLM アプリケーションの評価や並べて比較する用途に向けて、例の整理、収集、トラッキング、バージョン管理に役立ちます。このページの手順に従うと、自分やチームメンバーが LLM アプリケーションの動作を継続的に評価し、改善を重ね、比較するために使える、再利用可能でバージョン管理された例のコレクションを作成できます。`Dataset` は、プログラムからも UI からも作成して操作できます。

このページは、コードまたは Weave UI を通じて評価データを管理したいエンジニアやチームメンバーを対象としています。内容は次のとおりです。

* Python と TypeScript での基本的な `Dataset` の操作と、使い始める方法。
* Weave の [Call](../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 twoslash lines theme={null}
    // @noErrors
    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">
  ## 他のオブジェクトからデータセットを作成する
</div>

このセクションでは、記録済みの Weave Call や既存の表形式データなど、すでに手元にあるデータから `Dataset` を作成する方法を示します。これにより、例を手動で再入力する必要がなくなります。

<Tabs>
  <Tab title="Python">
    Python では、`Dataset` は [Call](../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])
    # これで、モデルの評価などに dataset を使用できます。
    ```

    ### 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 でデータセットを作成、編集、削除する
</div>

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

以下の手順では、UI でこれらの各タスクを実行する方法を順に説明します。ノートブックやスクリプトではなく、元になったトレースとあわせて評価データを管理したい場合に使用してください。

<div id="create-a-new-dataset">
  ### 新しいデータセットを作成する
</div>

次の手順では、Weave プロジェクト内の既存の1つ以上の call から新しい `Dataset` を作成します。完了すると、評価で参照したりチームと共有したりできる公開済みの `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** のオプションが表示されます。

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

7. 任意: **Configure dataset fields** で、データセットに含める call のフィールドを選択します。
   * 選択した各フィールドの列名はカスタマイズできます。
   * 新しい `Dataset` に含めるフィールドを一部だけ選択することも、すべてのフィールドの選択を解除することもできます。

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

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

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

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

<div id="edit-a-dataset">
  ### データセットを編集する
</div>

既存の `Dataset` に新しい行を追加し、新しいバージョンを公開するには、次の手順を実行します。UI での編集は、コードを変更せずに評価データを拡張または修正したい場合に役立ちます。

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

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

   <img src="https://mintcdn.com/wb-21fd5541/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=c011e3f981712ffdb9e7b3c8b62b6747" 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/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=19ad98ae1a82a808f6ce1a5812213062" 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/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=8c58692bb63f9519592de60e90ea689b" 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/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit-green.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=718d02330b3b1f1a7dc8eb282dcc6ac2" 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/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit-addcol.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=e07cd4d2e808662d74658afae8082f5a" 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/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit-colsadded.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=16154c3e8bb487e193de7f8ade3499db" 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/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit-publish.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=654cedabe596f017448ae93cc527d17b" 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/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit-published-meta.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=f79f512ccf39735079c56b1daa790128" 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/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit-published-rows.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=7fac2d9b7665b77a931df37361ba8827" 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">
  ### データセットを削除する
</div>

不要になった `Dataset` を Weave プロジェクトから削除する場合は、以下の手順を使用します。

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

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

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

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

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

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

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

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

<div id="add-a-new-agent-trace-to-a-dataset">
  ### 新しいエージェントのトレースを `Dataset` に追加する
</div>

エージェントのターンやツールコールを `Dataset` に追加するには、[エージェントメッセージをデータセットに追加する](/ja/weave/guides/tracking/view-agent-activity#add-agent-messages-to-a-dataset) を参照してください。

<div id="add-a-new-trace-to-a-dataset">
  ### データセットに新しいトレースを追加する
</div>

`@weave.op` デコレータを使用する Ops と Calls から生成されたトレースを `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` の更新を確認します。

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

このセクションでは、作業対象の `Dataset` がすでにある場合に役立つ、追加の SDK 操作について説明します。

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

    `select` method を使用すると、インデックスを指定して `Dataset` から特定の行を選択できます。これは、データのサブセットを作成する際に便利です。たとえば、少数の examples の一部に対して Evaluate したい場合に役立ちます。

    ```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>
