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

# オブジェクトの追跡とバージョン管理

> W&B Weave で任意の JSON シリアライズ可能なオブジェクトを追跡およびバージョン管理する

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

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

* **Datasets**: 評価用の例の集合
* **Models**: LLM ロジック用の設定とパラメーター
* **Prompts**: バージョン管理されたプロンプトテンプレート

```python lines theme={null}
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)
```

<div id="publishing-an-object">
  ## オブジェクトを公開する
</div>

Weave のシリアル化レイヤーは、オブジェクトを保存し、バージョン管理します。

<Tabs>
  <Tab title="Python">
    ```python lines theme={null}
    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 lines theme={null}
    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 がその最初のバージョンを作成します。

<div id="get-an-object-back">
  ## 保存したオブジェクトを取得する
</div>

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

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

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

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

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

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

    ```python lines theme={null}
    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={null}
    この機能は TypeScript ではまだ利用できません。
    ```
  </Tab>
</Tabs>

<div id="constructing-object-refs">
  ## object refs の構築
</div>

Weave では、完全修飾 object ref URI は次のようになります。

```text theme={null}
weave:///<your-team-name>/<your-project-name>/object/<object_name>:<object_version>
```

* *your-team-name*: W\&B entity (ユーザー名またはチーム名)
* *your-project-name*: W\&B プロジェクト
* *object\_name*: オブジェクト の名前
* *object\_version*: バージョンハッシュ、`v0` や `v1` のような文字列、または `:latest` のようなエイリアスのいずれかです。すべての オブジェクト には `:latest` エイリアスがあります。

ref はいくつかの異なる形式で構築できます。

* `weave.ref(<name>)`: オブジェクト の `:latest` バージョンを取得します。`weave.init(...)` の呼び出しが必要です。
* `weave.ref(<name>:<version>)`:  オブジェクト の指定したバージョンを取得します。`weave.init(...)` の呼び出しが必要です。
* `weave.ref(<fully_qualified_ref_uri>)`: 指定した完全修飾 object ref URI にある オブジェクト を取得します。`weave.init(...)` の呼び出しは不要です。
