メインコンテンツへスキップ
プロンプトを作成して公開した後、コード内や本番環境で特定のバージョンを参照、取得、使用できます。 weave.publish でプロンプトを公開すると、W&B Weave は不変バージョンを作成します。各バージョンを名前とバージョンで参照し、weave.ref(...).get() を使ってコード内で取得し、Weave UI で確認できます。

プロンプトのバージョン

Weave のプロンプトは、バージョン付きオブジェクトとして保存されます。これにより、評価、Experiments、本番システムが、実行時に使用した正確なプロンプトのバージョンを参照できるようにしつつ、プロンプトを安全に反復改善できます。 プロンプトのバージョンには、Weave の object ref を使ってアクセスします。このページでは、Weave がプロンプトのバージョンをどのように作成するか、コードで特定のバージョンを取得する方法、そして Weave UI でバージョンを確認・比較する方法を説明します。

プロンプトのバージョンがどのように作成されるか

Weave はプロンプトのすべてのバージョンを自動的にトラッキングし、プロンプトがどのように変化していくかの完全な履歴を作成します。このバージョン管理システムは、プロンプトエンジニアリングのワークフローで重要です。これにより、安全に試行錯誤しながら、どの変更がパフォーマンスを改善または悪化させたかをトラッキングし、必要に応じて以前のバージョンにロールバックできます。同じ名前で内容の異なるプロンプトを公開するたびに、Weave は過去のすべてのバージョンを保持したまま新しいバージョンを作成します。 各バージョンは不変です。いったん作成されると、そのバージョンの内容は変更できません。プロンプトを更新して再度公開すると、Weave は以前のバージョンを保持したまま新しいバージョンを作成します。 バージョン管理により、次のことが可能になります。
  • 過去の実験を再現する。
  • プロンプトの変更を安全に繰り返し改善する。
  • プロンプトの更新を制御された形でロールアウトする。

完全修飾された ref URI を作成する

コードでプロンプトのバージョンを取得する前に、Weave が保存済みオブジェクトをどのように識別するかを理解しておくと役立ちます。完全修飾された ref URI は、Weave オブジェクトを一意に識別します。 完全修飾された 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プロジェクト
  • object_name: オブジェクト名
  • object_version: バージョンハッシュ、v0v1 のようなバージョンインデックス、または :latest:production のようなエイリアスのいずれかです。すべてのオブジェクトには :latest エイリアスがあります。
たとえば、完全修飾の Weave プロンプト URI は次のようになります。
weave:///your-team-name/your-project-name/object/support_prompt:v3

コードでプロンプトのバージョンを取得する

プロンプトを取得するには、その名とバージョンへの参照を作成し、.get() を呼び出して読み込みます。ref は保存済みのオブジェクトを指し、.get() はそのオブジェクトを取得して、アプリケーションで使用できるようにします。 ref はいくつかの方法で作成できます。
  • weave.ref(<name>): プロンプトの :latest バージョンを取得します。weave.init(...) の呼び出しが必要です。
  • weave.ref(<name>:<alias_or_version>): エイリアス、バージョンハッシュ、またはバージョンインデックスでプロンプトを取得します。weave.init(...) の呼び出しが必要です。
  • weave.ref(<fully_qualified_ref_uri>): 指定した完全修飾された ref URIにあるプロンプトを取得します。weave.init(...) を呼び出す必要はありません。
次の例では、アプリケーションで使用できるように support_prompt:v3 を読み込みます。
import weave

weave.init("your-team-name/your-project-name")

prompt = weave.ref("support_prompt:v3").get()

本番環境でプロンプトを使用する

本番システムにプロンプトをデプロイする際は、バージョンインデックスや最新バージョンではなく、production のような エイリアス を使用します。本番アプリケーションでは、weave.ref(<name>:<alias>).get() でプロンプトを読み込みます。 エイリアス を使用すると、本番環境の動作を安定的かつ予測可能に保てます。新しいバージョンを本番に昇格する準備ができたら、そのバージョンに エイリアス を移動します。すると、すべての利用側でその変更が自動的に反映されます。 一般的なワークフローは次のとおりです。
  1. 新しいバージョンのプロンプトを開発してテストします。
  2. データセットまたは評価スイートに対して新しいプロンプトを評価します。
  3. client.set_aliases(new_ref, "production") を使用して、production エイリアス を新しいバージョンに移動します。
この方法により、チームは本番環境の動作を意図せず変更することなく、安全にプロンプトを繰り返し改善できます。

プロンプトのバージョンを表示して比較する

Weave UI では、プロンプトのすべてのバージョンを参照し、それらの差分を並べて表示できます。これは、プロンプトがどのように変化してきたかを確認する際に役立ちます。 UIでプロンプトのバージョンを表示するには、次の手順に従います。
  1. wandb.ai にアクセスし、project を選択します。
  2. Weave の project のサイドバーで Assets をクリックします。Assets ページが開きます。
  3. Assets ページで Prompts をクリックします。project 内のプロンプトが一覧表示された Prompts ページが開きます。
  4. Versions 列で、表示したいプロンプトの (x) Versions をクリックします。プロンプトのバージョン一覧が開きます。
選択したプロンプトのバージョンを示す Prompt Assets の UI。
  1. (任意) プロンプトのバージョンを比較するには、一覧に表示されたプロンプトの横にあるチェックボックスを選択し、表のツールバーにある Compare ボタンをクリックします。これにより、プロンプト間の差分を確認できます。
2 つの異なるプロンプト バージョン間の差分を示す Compare prompts UI。

プロンプトのタグとエイリアスを追加する

エイリアスとタグを使用して、プロンプトのバージョンを整理できます。これらのラベルは、開発、評価、本番のワークフロー全体で特定のバージョンを識別し、参照するのに役立ちます。
  • エイリアス: 1 つのプロンプトのバージョンに対応する一意の名前です。エイリアスはいつでも別のバージョンを指すように変更できるため、productionstaging のような固定参照に便利です。
  • タグ: バージョンに付与する説明用のラベルです。1 つのバージョンに複数のタグを付けることができます。reviewedpassed-eval のように、タグを使用してバージョンを分類したりフィルターしたりできます。
UI でプロンプトのエイリアスとタグを設定するには、次の手順に従います。
  1. Weave のプロジェクトのサイドバーで、Assets をクリックします。Assets ページが開きます。
  2. Assets ページで、Prompts をクリックします。表では、割り当て済みの AliasesTags を確認できます。
  3. Prompts の表で、変更するプロンプトのリンクをクリックします。
  4. 選択したプロンプトの詳細パネルでは、タイトルバーにプロンプト名と特定のバージョンが表示されます。更新するプロンプトのバージョンを選択します。
  5. パネルのツールバーで、コントロールを使用して、この特定のバージョンに割り当てられたエイリアスとタグを追加または削除します。
Prompts ページのプロンプト詳細パネルで選択したプロンプトのバージョン。Aliases と Tags のコントロールが表示されています。

コードでタグとエイリアスを変更する

次のようなタスクでは、コードでタグとエイリアスを管理することもできます。
  • タグとエイリアスを指定して、プロンプトをインラインで公開する。
  • エイリアスを特定のバージョンに向け、解決してプロンプトを読み込む。
  • バージョンにタグやエイリアスを追加、削除、一覧表示する。
次のコード例では、さまざまなタグとエイリアスを持つ 3 つのバージョンを含むプロンプト my-prompt を project に追加します。'your-team-name/your-project-name' はご自身の project に合わせて更新してください。
import weave

// TODO: 'your-team-name/your-project-name' を正しい値に設定します。
client = weave.init('your-team-name/your-project-name')

# プロンプトの 2 つのバージョンを公開します。
v0_ref = weave.publish(
    weave.StringPrompt("Answer the user's question: {question}"),
    name="my-prompt",
)
v1_ref = weave.publish(
    weave.StringPrompt("Answer the user's question helpfully and concisely: {question}"),
    name="my-prompt",
)

# --- エイリアス: 特定のバージョンを指す名前付きポインタ。 ---

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

# バージョンのエイリアスを取得します。
client.get_aliases(v1_ref)  # ["production", "latest"]

# 別のバージョンに設定してエイリアスを移動します。
client.set_aliases(v0_ref, "production")  # v1 から自動的に切り離されます。

# エイリアスを解決してオブジェクトを読み込みます。
prompt = weave.ref("my-prompt:production").get()

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

# エイリアスを削除します。
client.remove_aliases(v0_ref, "production")

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

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

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

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

# バージョンからタグを削除します。
client.remove_tags(v1_ref, ["needs-improvement"])

# --- 組み合わせ: 1 回の呼び出しで両方を取得します。 ---

tags, aliases = client.get_tags_and_aliases(v0_ref)

# --- タグとエイリアスを指定してインラインで公開します。 ---

ref = weave.publish(
    weave.StringPrompt("Be brief: {question}"),
    name="my-prompt",
    tags=["reviewed"],
    aliases=["production"],
)

この例を実行すると、Weave は Weave ダッシュボード内のオブジェクトへのリンクを出力します。リンクをたどってプロンプトを確認してください。