> ## 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アプリケーション用のプロンプトのバージョンを取得して管理する

[プロンプトを作成して公開](/ja/weave/guides/core-types/prompts.mdx)した後、コード内や本番環境で特定のバージョンを参照、取得、使用できます。

`weave.publish` でプロンプトを公開すると、W\&B Weave は不変バージョンを作成します。各バージョンを名前とバージョンで参照し、`weave.ref(...).get()` を使ってコード内で取得し、Weave UI で確認できます。

<div id="prompt-versions">
  ## プロンプトのバージョン
</div>

Weave のプロンプトは、**バージョン付きオブジェクト**として保存されます。これにより、評価、Experiments、本番システムが、実行時に使用した正確なプロンプトのバージョンを参照できるようにしつつ、プロンプトを安全に反復改善できます。

プロンプトのバージョンには、Weave の object ref を使ってアクセスします。このページでは、Weave がプロンプトのバージョンをどのように作成するか、コードで特定のバージョンを取得する方法、そして Weave UI でバージョンを確認・比較する方法を説明します。

<div id="how-prompt-versions-are-created">
  ## プロンプトのバージョンがどのように作成されるか
</div>

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

各バージョンは不変です。いったん作成されると、そのバージョンの内容は変更できません。プロンプトを更新して再度公開すると、Weave は以前のバージョンを保持したまま新しいバージョンを作成します。

バージョン管理により、次のことが可能になります。

* 過去の実験を再現する。
* プロンプトの変更を安全に繰り返し改善する。
* プロンプトの更新を制御された形でロールアウトする。

<div id="construct-a-fully-qualified-ref-uri">
  ## 完全修飾された ref URI を作成する
</div>

コードでプロンプトのバージョンを取得する前に、Weave が保存済みオブジェクトをどのように識別するかを理解しておくと役立ちます。完全修飾された ref URI は、Weave オブジェクトを一意に識別します。

完全修飾された 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` や `:production` のようなエイリアスのいずれかです。すべてのオブジェクトには `:latest` エイリアスがあります。

たとえば、完全修飾の Weave プロンプト URI は次のようになります。

```text theme={null}
weave:///your-team-name/your-project-name/object/support_prompt:v3
```

<div id="retrieve-a-prompt-version-in-code">
  ## コードでプロンプトのバージョンを取得する
</div>

プロンプトを取得するには、その名とバージョンへの参照を作成し、`.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](#construct-a-fully-qualified-ref-uri)にあるプロンプトを取得します。`weave.init(...)` を呼び出す必要はありません。

次の例では、アプリケーションで使用できるように `support_prompt:v3` を読み込みます。

```python lines theme={null}
import weave

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

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

<div id="use-prompts-in-production">
  ## 本番環境でプロンプトを使用する
</div>

本番システムにプロンプトをデプロイする際は、バージョンインデックスや最新バージョンではなく、`production` のような [エイリアス](#add-prompt-tags-and-aliases) を使用します。本番アプリケーションでは、`weave.ref(<name>:<alias>).get()` でプロンプトを読み込みます。

エイリアス を使用すると、本番環境の動作を安定的かつ予測可能に保てます。新しいバージョンを本番に昇格する準備ができたら、そのバージョンに エイリアス を移動します。すると、すべての利用側でその変更が自動的に反映されます。

一般的なワークフローは次のとおりです。

1. 新しいバージョンのプロンプトを開発してテストします。
2. データセットまたは評価スイートに対して新しいプロンプトを評価します。
3. `client.set_aliases(new_ref, "production")` を使用して、`production` エイリアス を新しいバージョンに移動します。

この方法により、チームは本番環境の動作を意図せず変更することなく、安全にプロンプトを繰り返し改善できます。

## <a id="view-prompts" aria-label="プロンプトのバージョンを表示して比較する" />プロンプトのバージョンを表示して比較する

Weave UI では、プロンプトのすべてのバージョンを参照し、それらの差分を並べて表示できます。これは、プロンプトがどのように変化してきたかを確認する際に役立ちます。

UIでプロンプトのバージョンを表示するには、次の手順に従います。

1. [wandb.ai](https://wandb.ai/) にアクセスし、project を選択します。
2. Weave の project のサイドバーで **Assets** をクリックします。Assets ページが開きます。
3. Assets ページで **Prompts** をクリックします。project 内のプロンプトが一覧表示された Prompts ページが開きます。
4. **Versions** 列で、表示したいプロンプトの **(x) Versions** をクリックします。プロンプトのバージョン一覧が開きます。

<img src="https://mintcdn.com/wb-21fd5541/XuuaAkn-Q5DZfV3b/weave/guides/core-types/imgs/prompt-object.png?fit=max&auto=format&n=XuuaAkn-Q5DZfV3b&q=85&s=2a076bd88ae8a2c1aa6ba62b54a8eb17" alt="選択したプロンプトのバージョンを示す Prompt Assets の UI。" width="987" height="405" data-path="weave/guides/core-types/imgs/prompt-object.png" />

1. (任意) プロンプトのバージョンを比較するには、一覧に表示されたプロンプトの横にあるチェックボックスを選択し、表のツールバーにある **Compare** ボタンをクリックします。これにより、プロンプト間の差分を確認できます。

<img src="https://mintcdn.com/wb-21fd5541/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/prompt-comparison.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=2a0e557afced38dc250ad155ed8b6509" alt="2 つの異なるプロンプト バージョン間の差分を示す Compare prompts UI。" width="3144" height="1290" data-path="weave/guides/core-types/imgs/prompt-comparison.png" />

<div id="add-prompt-tags-and-aliases">
  ## プロンプトのタグとエイリアスを追加する
</div>

エイリアスとタグを使用して、プロンプトのバージョンを整理できます。これらのラベルは、開発、評価、本番のワークフロー全体で特定のバージョンを識別し、参照するのに役立ちます。

* エイリアス: 1 つのプロンプトのバージョンに対応する一意の名前です。エイリアスはいつでも別のバージョンを指すように変更できるため、`production` や `staging` のような固定参照に便利です。
* タグ: バージョンに付与する説明用のラベルです。1 つのバージョンに複数のタグを付けることができます。`reviewed` や `passed-eval` のように、タグを使用してバージョンを分類したりフィルターしたりできます。

UI でプロンプトのエイリアスとタグを設定するには、次の手順に従います。

1. Weave のプロジェクトのサイドバーで、**Assets** をクリックします。Assets ページが開きます。
2. Assets ページで、**Prompts** をクリックします。表では、割り当て済みの **Aliases** と **Tags** を確認できます。
3. Prompts の表で、変更するプロンプトのリンクをクリックします。
4. 選択したプロンプトの詳細パネルでは、タイトルバーにプロンプト名と特定のバージョンが表示されます。更新するプロンプトのバージョンを選択します。
5. パネルのツールバーで、コントロールを使用して、この特定のバージョンに割り当てられたエイリアスとタグを追加または削除します。

<img src="https://mintcdn.com/wb-21fd5541/saazGndG7tH2E_xh/weave/guides/core-types/imgs/prompt-alias-tags.png?fit=max&auto=format&n=saazGndG7tH2E_xh&q=85&s=f510d478e3ac43afe250357c440591b1" alt="Prompts ページのプロンプト詳細パネルで選択したプロンプトのバージョン。Aliases と Tags のコントロールが表示されています。" width="1489" height="477" data-path="weave/guides/core-types/imgs/prompt-alias-tags.png" />

<div id="modify-tags-and-aliases-in-code">
  ### コードでタグとエイリアスを変更する
</div>

次のようなタスクでは、コードでタグとエイリアスを管理することもできます。

* タグとエイリアスを指定して、プロンプトをインラインで公開する。
* エイリアスを特定のバージョンに向け、解決してプロンプトを読み込む。
* バージョンにタグやエイリアスを追加、削除、一覧表示する。

次のコード例では、さまざまなタグとエイリアスを持つ 3 つのバージョンを含むプロンプト `my-prompt` を project に追加します。`'your-team-name/your-project-name'` はご自身の project に合わせて更新してください。

<CodeGroup>
  ```python Python lines theme={null}
  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"],
  )

  ```

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

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