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

# オブジェクトをトラッキングしてバージョン管理する

> W&B Weave で JSON シリアライズ可能な任意のオブジェクトをトラッキングし、バージョン管理します

このページでは、W\&B Weave でバージョン管理されたオブジェクトをパブリッシュ、取得、削除、参照する方法について説明します。データセット、モデル、プロンプトなどの構造化データを、複数の run をまたいで継続的にトラッキングしたい場合に参照してください。

<h2 id="objects">
  オブジェクト
</h2>

**オブジェクト** は、バージョン管理されたシリアライズ可能なデータです。Weave はオブジェクトの変更時に自動でバージョンを付与し、不変の履歴を作成します。オブジェクトには次のものがあります。

* **データセット**: 評価に使用するサンプルのコレクション
* **モデル**: LLM ロジックの設定とパラメーター
* **プロンプト**: バージョン管理されたプロンプトテンプレート

```python lines theme={"system"}
dataset = weave.Dataset(
    name="test-cases",
    rows=[
        {"input": "What is 2+2?", "expected": "4"},
        {"input": "What is the capital of France?", "expected": "Paris"},
    ]
)
weave.publish(dataset)
```

<h2 id="publish-an-object">
  オブジェクトをパブリッシュする
</h2>

Weave のシリアライズレイヤーは、オブジェクトの保存とバージョン管理を行います。

<Tabs>
  <Tab title="Python">
    ```python lines theme={"system"}
    import weave
    weave.init("your-team-name/your-project-name")
    # リストを 'cat-names' という名前で保存します
    weave.publish(['felix', 'jimbo', 'billie'], 'cat-names')
    ```
  </Tab>

  <Tab title="TypeScript">
    TypeScript でのパブリッシュのサポートは限定的です。すべてのオブジェクトがサポートされるわけではありません。

    ```typescript twoslash lines theme={"system"}
    // @noErrors
    import * as weave from 'weave'

    const client = await weave.init("your-team-name/your-project-name")

    // 配列を 'cat-names' という名前で保存します
    client.publish(['felix', 'jimbo', 'billie'], 'cat-names')
    ```
  </Tab>
</Tabs>

名前を付けてオブジェクトを保存すると、その名前のオブジェクトがまだ存在しない場合は、Weave によって最初のバージョンが作成されます。

<h2 id="get-an-object-back">
  オブジェクトを取得する
</h2>

パブリッシュした後は、その ref を使って保存済みオブジェクトを取得できます。

<Tabs>
  <Tab title="Python">
    `weave.publish()` は Ref を返します。任意の Ref に対して `.get()` を呼び出すと、オブジェクトを取得できます。

    ref を作成し、そこからオブジェクトを取得することもできます。

    ```python lines theme={"system"}
    weave.init("your-team-name/your-project-name")
    cat_names = weave.ref('cat-names').get()
    ```
  </Tab>

  <Tab title="TypeScript">
    ```plaintext lines theme={"system"}
    This feature isn't available in TypeScript yet.
    ```
  </Tab>
</Tabs>

<h2 id="delete-an-object">
  オブジェクトを削除する
</h2>

オブジェクトの特定のバージョンが不要になった場合は、その ref を使って削除できます。

<Tabs>
  <Tab title="Python">
    オブジェクトのバージョンを削除するには、そのオブジェクトの ref に対して `.delete()` を呼び出します。

    ```python lines theme={"system"}
    weave.init("your-team-name/your-project-name")
    cat_names_ref = weave.ref('cat-names:v1')
    cat_names_ref.delete()
    ```

    削除済みのオブジェクトにアクセスすると、エラーが返されます。削除済みのオブジェクトを参照しているオブジェクトを解決すると、削除済みのオブジェクトの代わりに `DeletedRef` が返されます。
  </Tab>

  <Tab title="TypeScript">
    ```plaintext theme={"system"}
    This feature isn't available in TypeScript yet.
    ```
  </Tab>
</Tabs>

<h2 id="construct-object-refs">
  オブジェクトの ref を構築する
</h2>

ref は、保存済みオブジェクトとそのバージョンを一意に識別します。以下のセクションでは、URI の構造と ref の構築方法について説明します。

Weave では、完全修飾されたオブジェクト ref URI は次のような形式になります。

```text theme={"system"}
weave:///[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]/object/[OBJECT-NAME]:[OBJECT-VERSION]
```

* `[YOUR-TEAM-NAME]`: W\&B の entity (ユーザー名またはチーム名)
* `[YOUR-PROJECT-NAME]`: Weights & Biases の project
* `[OBJECT-NAME]`: オブジェクト名
* `[OBJECT-VERSION]`: バージョンハッシュ、`v0` や `v1` のような string、または `:latest` のようなエイリアスのいずれかです。すべてのオブジェクトには `:latest` エイリアスが付いています。独自のエイリアスを作成する方法については、[タグとエイリアスでオブジェクトのバージョンを整理する](#organize-object-versions-with-tags-and-aliases)を参照してください。

ref は、次のいずれかの形式で作成できます。

* `weave.ref([NAME])`: オブジェクトの `:latest` バージョンを取得します。事前に `weave.init(...)` を呼び出す必要があります。
* `weave.ref([NAME]:[VERSION])`: オブジェクトの指定したバージョンを取得します。事前に `weave.init(...)` を呼び出す必要があります。
* `weave.ref([FULLY-QUALIFIED-REF-URI])`: 指定した完全修飾オブジェクト ref URI にあるオブジェクトを取得します。`weave.init()` を呼び出す必要はありません。

<h2 id="organize-object-versions-with-tags-and-aliases">
  タグとエイリアスでオブジェクトのバージョンを整理する
</h2>

**タグ** と **エイリアス** を使用すると、`Dataset`、`Model`、`Prompt` をはじめ、`weave.publish` でパブリッシュしたあらゆる Weave オブジェクトの特定のバージョンにラベルを付けられます。これらのラベルはどの `ObjectRef` でも機能するため、オブジェクトのタイプを問わず同じ API を使用できます。

* **エイリアス:** 単一のバージョンに解決される一意の名前です。エイリアスはいつでも別のバージョンに付け替えられるため、`production` や `staging` のような固定の参照先として便利です。すべてのオブジェクトには、最新バージョンを指す `:latest` エイリアスが自動的に付与されます。
* **タグ:** バージョンに関連付ける説明用のラベルです。1 つのバージョンに複数のタグを付けられ、同じタグを複数のバージョンに付けることもできます。タグは、`reviewed` や `passed-eval` のようにバージョンを分類したりフィルターしたりするのに使用します。

エイリアスまたは特定のバージョンを解決するには、ref 内のオブジェクト名の後に付加します。

次の例では、データセットの 2 つのバージョンをパブリッシュし、各バージョンにタグとエイリアスを割り当てて更新します。

<CodeGroup>
  ```python Python lines theme={"system"}
  import weave

  client = weave.init("[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]")

  # オブジェクトの 2 つのバージョンをパブリッシュします。
  dataset_v0 = weave.publish(
      weave.Dataset(name="test-cases", rows=[{"input": "ping", "expected": "pong"}]),
  )
  dataset_v1 = weave.publish(
      weave.Dataset(name="test-cases", rows=[{"input": "ping", "expected": "pong!"}]),
  )

  # バージョンにエイリアスを設定します。
  client.set_aliases(dataset_v0, "staging")
  client.set_aliases(dataset_v1, "production")

  # エイリアスを使用してオブジェクトを取得します
  dataset = weave.ref("test-cases:production").get()

  # project 内のすべてのエイリアスを一覧表示します。
  client.list_aliases()

  # --- タグ: 特定のバージョンに付けるラベル。 ---

  # バージョンにタグを追加します。
  client.add_tags(dataset_v0, ["reviewed", "passed-eval"])
  client.add_tags(dataset_v1, ["reviewed", "needs-improvement"])

  # バージョンのタグを取得します。
  client.get_tags(dataset_v0)  # ["passed-eval", "reviewed"]

  # project 内のすべての一意なタグを一覧表示します。
  client.list_tags()
  ```

  ```plaintext TypeScript lines theme={"system"}
  この機能は TypeScript SDK ではまだ利用できません。
  ```
</CodeGroup>


## Related topics

- [コードをトレースする](/ja/products/wandb/weave/guides/tracking/create-call.md)
