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

# フィーチャーフラグを使った LLM プロンプトの A/B テスト

> Kameleoon のフィーチャーフラグを使って、LLM を活用したアプリケーションのプロンプトのバリエーションを実際のユーザーエンゲージメント指標と比較します。アプリケーションを再デプロイする必要はありません。

プロンプトエンジニアリングに確実な公式はありません。大規模言語モデル (LLM) へのプロンプトを「詳細で正確な要約」から「簡潔な概要」に書き換えると、モデルの応答の仕方は変わりますが、実際の行動に基づいて測定するまでは、その変更がユーザーに本当に役立っているかどうかを知る方法はありません。RAGAS のような評価フレームワークは、LLM アプリケーションが正しく回答しているかどうかをスコアリングします。しかし、プロンプトの変更がユーザーの本来の目的の達成に役立っているかどうかまでは教えてくれません。

Feature Experimentation はこのギャップを埋めます。候補となる各プロンプトをフィーチャー変数として保存し、バリエーション間でトラフィックを分割し、重視するエンゲージメント指標やビジネス指標を追跡します。プロンプトはソースコードではなくフィーチャーフラグの中にあるため、アプリケーションを再デプロイすることなく、Kameleoon プラットフォームからバリエーションを追加、編集、ロールバックできます。

## 仕組み

フィーチャーフラグは、テストしたいプロンプトごとに1つのバリエーションを設け、各プロンプトをフィーチャー変数の値として保存します。訪問者がアプリケーションにアクセスすると、Kameleoon SDK は訪問者にバリエーションを割り当て、対応するプロンプトを返します。このプロンプトはアプリケーションコードから LLM に送信されます。フィーチャーフラグに紐づけられたゴールは、訪問者が LLM を活用した機能とやり取りしたとき、たとえばフォローアップの質問をしたり、アシスタントの助けを借りてタスクを完了したりしたときに、コンバージョンを記録します。十分なトラフィックを収集したら、各バリエーションのコンバージョン率を比較して、どのプロンプトが最も効果的かを判断します。

## 前提条件

* Feature Experimentation 用に設定されたプロジェクトを持つ Kameleoon アカウント。
* アカウントのクライアント ID とクライアントシークレット。これらの値を確認するには、[API認証情報](/ja/user-manual/account-and-team-management/users-and-teams/api-credentials) を参照してください。
* Kameleoon SDK をインストールできる Python アプリケーション。

## Kameleoon でプロンプト実験を設定する

アプリケーションコードに手を加える前に、Kameleoon プラットフォームでフィーチャーフラグ、プロンプトのバリエーション、追跡するゴールを設定します。

### フィーチャーフラグを作成する

プロンプトのバリエーションを保持し、実験の展開を制御するフィーチャーフラグを作成します。

1. Kameleoon アプリで、**Features** > **Flags & Experiments** > **New feature flag** をクリックします。
2. 名前を入力します (例: `LLM prompt test`)。フラグを使用するプロジェクトを選択します。
3. **Description** フィールドに、フラグが何を制御するかを記録し、チームの他のメンバーがその目的を理解できるようにします。
4. **Validate** をクリックします。

詳細については、[フィーチャーフラグを作成する](/ja/user-manual/experimentation/feature-experimentation/create-and-manage-flags/create-a-feature-flag) を参照してください。

### プロンプトをフィーチャー変数に保存する

プロンプトのテキストを保持するフィーチャー変数を追加します。これにより、アプリケーションコードを編集せずに、Kameleoon プラットフォームからプロンプトを変更できます。

1. フラグのページで、左サイドバーの **Set Up** > **Variables** > **Add Variable** をクリックします。
2. 変数の **Type** を **String** に設定します。
3. **Variable Key** を入力します (例: `prompt_template`)。
4. **Default Value** に、アプリケーションが現在使用しているプロンプトを設定します。この値は、実験に含まれていない訪問者に配信されます。
5. **Save** をクリックします。

<Frame>
  ![prompt\_template という名前の String 型変数と、プロンプトテキストのデフォルト値のプレースホルダーを示す Variables 設定画面。](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/developers/images/feature-experimentation/integrations/llm/variables.png)
</Frame>

詳細については、[フィーチャー変数の定義](/ja/user-manual/experimentation/feature-experimentation/configure-your-feature-flags/define-feature-variables) を参照してください。

### プロンプトごとにバリエーションを作成する

テストしたいプロンプトごとに1つのバリエーションを作成し、それぞれで `prompt_template` 変数に対応するテキストを設定します。

1. 左サイドバーで **Set Up** > **Variations** > **Add variation** をクリックします。
2. バリエーションの **Name** を入力します (例: `Detailed summary`)。
3. このバリエーションの `prompt_template` 変数にプロンプトのテキストを設定します。
4. **Save** をクリックします。
5. テストしたい追加のプロンプトごとに、これらの手順を繰り返します。

<Frame>
  ![Detailed summary という名前のバリエーションで、prompt\_template 変数がプロンプトの値に設定されている Variations 設定画面。](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/developers/images/feature-experimentation/integrations/llm/fe-variations.png)
</Frame>

詳細については、[機能のバリエーションを定義する](/ja/user-manual/experimentation/feature-experimentation/configure-your-feature-flags/define-feature-variations) を参照してください。

### エンゲージメントを測定するゴールを紐づける

フィーチャーフラグにゴールを紐づけて、どのプロンプトのバリエーションがより多くのエンゲージメントを生み出すかを Kameleoon が測定できるようにします。Kameleoon は統合されたプラットフォームであるため、他のチームが定義したトランザクションのゴールなど、組織内に既に存在するゴールを紐づけることも、LLM を活用した機能専用のゴールを新たに作成することもできます。

1. フラグのページで、**Set Up** メニューの **Goals** > **Add goal** をクリックします。
2. 既存のゴールを選択するか、**Create a new goal** をクリックして、訪問者が LLM を活用した機能とやり取りしたときに発火するカスタムゴールなどを定義します。
3. **Save** をクリックします。

<Frame>
  ![フィーチャーフラグに紐づけられたゴールと、既存のゴールを追加するか新しいゴールを作成するオプションを示す Goals 設定画面。](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/developers/images/feature-experimentation/integrations/llm/fe-goals.png)
</Frame>

バックエンドからカスタムゴールを発火させる方法など、ゴールの種類の詳細については、[ゴールの作成](/ja/user-manual/assets/goals/create-a-goal#custom-goal) を参照してください。

### 実験を展開する

プロンプトのバリエーション間でトラフィックを分割する実験ルールを作成し、環境を有効化してデータの収集を開始します。

1. **Rollout Planner** で、対象としたい環境 (例: **Production**) を選択します。
2. **Add a rule** > **Experiment** をクリックします。
3. **Variations to serve** の下で、各プロンプトのバリエーションを追加し、それぞれの露出率を設定します。たとえば、2つのバリエーションにトラフィックを均等に50%ずつ振り分けます。
4. テストしたい訪問者 (例: アプリケーションに到達するすべての訪問者) を含むように、ルールのターゲティングを設定します。
5. 環境の **ON/OFF** トグルを **ON** に切り替えます。
6. **Save** をクリックします。

<Frame>
  ![すべての訪問者をターゲットとし、トラフィックを2つのバリエーションに50/50で振り分ける実験ルールを示す、Production 環境の Rollout Planner。](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/developers/images/feature-experimentation/integrations/llm/environments.png)
</Frame>

詳細については、[フィーチャー実験を作成する](/ja/user-manual/experimentation/feature-experimentation/using-the-rollout-planner/optimizations-and-scheduling/create-feature-experiments) を参照してください。

ルールを保存すると、Kameleoon は訪問者にバリエーションを割り当て、対応するプロンプトの配信を開始します。後でプロンプトを変更したりバリエーションを追加したりする場合は、Kameleoon プラットフォーム上で直接編集します。これらの変更を適用するために、アプリケーションを再デプロイする必要はありません。

## アプリケーションでプロンプトを取得する

Kameleoon の Python SDK をインストールし、訪問者に割り当てられたプロンプトを取得して、訪問者が LLM を活用した機能とやり取りしたときにコンバージョンを追跡します。同じパターンは、Node.js、Java、Go を含む、任意の [Kameleoon サーバーサイド SDK](../get-started/overview#サーバーサイド-sdk) にも当てはまります。

1. SDK を依存関係としてインストールします。

   ```bash theme={null}
   pip install kameleoon-client-python
   ```

2. サイトコードと認証情報を使ってクライアントを初期化します。

   ```python theme={null}
   from kameleoon import KameleoonClient, KameleoonClientConfig, KameleoonClientFactory

   SITE_CODE = "a8st4f59bj"
   FEATURE_KEY = "llm_prompt_test"
   GOAL_ID = 12345  # Replace with the ID of the goal you attached to the flag

   configuration = KameleoonClientConfig(
       client_id="your-client-id",
       client_secret="your-client-secret",
   )
   kameleoon_client = KameleoonClientFactory.create(SITE_CODE, configuration)
   await kameleoon_client.wait_init_async()
   ```

3. LLM を呼び出す前に割り当てられたプロンプトを取得し、訪問者が LLM を活用した機能とやり取りしたときにコンバージョンを追跡します。

   ```python theme={null}
   def get_prompt_for_visitor(visitor_code: str) -> str:
       variation = kameleoon_client.get_variation(visitor_code, FEATURE_KEY)
       return variation.variables["prompt_template"].value


   def track_llm_interaction(visitor_code: str) -> None:
       kameleoon_client.track_conversion(visitor_code, GOAL_ID)
   ```

   LLM にリクエストを送る前に、訪問者の `visitor_code` を指定して `get_prompt_for_visitor()` を呼び出し、返された値をプロンプトとして使用します。訪問者が質問を送信したり応答を受け取ったりするなど、LLM を活用した機能とやり取りしたときに `track_llm_interaction()` を呼び出します。

<Note>
  各訪問者に一意の ID を割り当てるには [`get_visitor_code()`](../../sdks/web-sdks/python-sdk#get_visitor_code) を使用します。データを追跡する前に訪問者の同意が必要なアプリケーションでは [`set_legal_consent()`](../../sdks/web-sdks/python-sdk#set_legal_consent) を使用します。クライアントの初期化と構成に関する完全なリファレンスについては、[Python SDK 開発者ガイド](../../sdks/web-sdks/python-sdk#開発者ガイド) を参照してください。
</Note>

## モニタリングと改善

フィーチャーフラグの結果ページを開き、紐づけたゴールに対する各プロンプトのバリエーションのコンバージョン率を比較します。アプリケーションが `get_variation()` と `track_conversion()` を呼び出すたびに、Kameleoon は露出とコンバージョンを自動的に追跡するため、追加の計測は必要ありません。

詳細については、[フィーチャーフラグの全体的な結果を表示する](/ja/user-manual/experiment-analytics/analyze-results/feature-flag-results/analyze-a-feature-flags-overall-results) を参照してください。

## 次のステップ

* カスタムデータ、クロスデバイス実験、ターゲティング条件などの高度なオプションについては、[Python SDK リファレンス](../../sdks/web-sdks/python-sdk) を参照してください。
* 実験を特定のオーディエンスにターゲティングするには、[高精度なセグメンテーション条件](../targeting-and-segmentation/native-segmentation) を紐づけます。
* モデルパラメータや検索設定など、LLM を活用した機能の他の部分を変数化するには、[フィーチャー変数](/ja/user-manual/experimentation/feature-experimentation/configure-your-feature-flags/define-feature-variables) を確認してください。
