メインコンテンツへスキップ
このページでは、W&B Weave でバージョン管理されたオブジェクトを公開、取得、削除、および参照する方法について説明します。データセット、モデル、プロンプトなどの構造化データを、複数の run や時間の経過にわたって追跡する必要がある場合にご利用ください。

オブジェクト

オブジェクト は、バージョン管理され、シリアライズ可能なデータです。Weave はオブジェクトが変更されると自動的にバージョン管理を行い、不変の履歴を作成します。オブジェクトには次のものが含まれます。
  • Datasets: 評価用の例の集合
  • Models: LLM ロジック用の設定とパラメーター
  • Prompts: バージョン管理されたプロンプトテンプレート
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)

オブジェクトを公開する

Weave のシリアル化レイヤーは、オブジェクトを保存し、バージョン管理します。
import weave
weave.init("your-team-name/your-project-name")
# リストを 'cat-names' という名前で保存します
weave.publish(['felix', 'jimbo', 'billie'], 'cat-names')
名前を付けてオブジェクトを保存すると、そのオブジェクトがまだ存在しない場合は、Weave がその最初のバージョンを作成します。

保存したオブジェクトを取得する

公開後は、参照を使って保存済みのオブジェクトを取得できます。
weave.publish() は Ref を返します。任意の Ref に対して .get() を呼び出すことで、元のオブジェクトを取得できます。Ref を作成しておき、あとからオブジェクトを取得することもできます。
weave.init("your-team-name/your-project-name")
cat_names = weave.ref('cat-names').get()

オブジェクトを削除する

オブジェクトの特定のバージョンが不要になった場合は、その ref を使って削除できます。
オブジェクトのバージョンを削除するには、そのオブジェクトの ref で .delete() を呼び出します。
weave.init("your-team-name/your-project-name")
cat_names_ref = weave.ref('cat-names:v1')
cat_names_ref.delete()
削除されたオブジェクトにアクセスするとエラーが返されます。削除されたオブジェクトへの ref を解決すると、削除されたオブジェクトの代わりに DeletedRef が返されます。

object ref を作成する

Ref は、保存されているオブジェクトとそのバージョンを一意に識別します。以下のセクションでは、URI の構造と、ref を作成する方法について説明します。 Weave では、完全修飾された object ref URI は次のようになります。
weave:///[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]/object/[OBJECT-NAME]:[OBJECT-VERSION]
  • [YOUR-TEAM-NAME]: W&B entity (ユーザー名またはチーム名)
  • [YOUR-PROJECT-NAME]: W&B project
  • [OBJECT-NAME]: オブジェクト名
  • [OBJECT-VERSION]: バージョンハッシュ、v0v1 のような string、または :latest のような エイリアス のいずれかです。すべてのオブジェクトには :latest エイリアス があります。独自の エイリアス を作成するには、タグ と aliases でオブジェクトのバージョンを整理するを参照してください。
ref はいくつかの異なる形式で構築できます。
  • weave.ref([NAME]): オブジェクトの :latest バージョンを取得します。weave.init(...) を呼び出す必要があります。
  • weave.ref([NAME]:[VERSION]): オブジェクトの指定したバージョンを取得します。weave.init(...) を呼び出す必要があります。
  • weave.ref([FULLY-QUALIFIED-REF-URI]): 指定した完全修飾オブジェクト ref URI にあるオブジェクトを取得します。weave.init() を呼び出す必要はありません。

タグとエイリアスでオブジェクトのバージョンを整理する

タグsaliases を使用して、DatasetModelPrompt、または weave.publish で公開したその他のオブジェクトを含む、任意の Weave オブジェクトの特定のバージョンにラベルを付けます。これらのラベルはすべての ObjectRef で機能するため、同じ API をオブジェクトのタイプを問わず使用できます。
  • Alias: 単一のバージョンに解決される一意の名前です。エイリアスはいつでも別のバージョンに付け替えられるため、productionstaging のような安定した参照に便利です。すべてのオブジェクトには、最新バージョンを指す :latest エイリアスが自動的に付与されます。
  • タグ: バージョンに付与する説明用のラベルです。1 つのバージョンに複数のタグを付けることができ、同じタグを複数のバージョンに付けることもできます。reviewedpassed-eval のように、タグを使ってバージョンを分類したりフィルターしたりできます。
エイリアスまたは特定のバージョンは、ref 内のオブジェクト名に追加して解決できます。 次の例では、データセットの 2 つのバージョンを公開し、その後、各バージョンに対してタグとエイリアスを割り当てたり更新したりします。
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()

# --- Tags: 特定のバージョンに付くラベル。 ---

# バージョンにタグを追加します。
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()