> ## 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.

# カスタムモニターを設定する

> 本番トラフィックを受動的にスコアリングして、傾向や問題を明らかにします

<Note>
  カスタムモニターは、本番トラフィックをモニタリングする従来の方法です。新しい実装では、Weave for Agents の **シグナル** を使用してください。[エージェントのシグナルを表示する](/ja/weave/guides/tracking/view-agent-signals) を参照してください。
</Note>

このページでは、W\&B Weave でカスタムモニターを設定して、本番トラフィックを受動的にスコアリングし、LLM アプリケーションにおける傾向や問題を明らかにする方法を説明します。本番トレースに対して、Weave のプリセットのシグナルに加えて独自の評価基準を定義したい場合は、このガイドを使用してください。

モニターでは、LLM ジャッジモデルを使用して本番トラフィックを受動的にスコアリングし、LLM アプリケーションにおける傾向や問題を明らかにできます。たとえば、アプリケーションの応答を正確性や有用性の観点でモニタリングしたり、ユーザー入力をモニタリングして、ユーザーがエージェントに何を尋ねているかの傾向を特定したりできます。モニターは、すべてのスコアリング結果を自動的に Weave のデータベースに保存するため、過去の傾向やパターンを分析できます。

モニターでは、アプリケーションの入力と出力に含まれるテキスト、画像、オーディオをモニタリングできます。

モニターを使うために、アプリケーションのコードを変更する必要はありません。Weave UI で設定できます。

スコアに基づいてアプリケーションの動作に能動的に介入する必要がある場合は、代わりに [guardrails](/ja/weave/guides/evaluation/guardrails) を使用してください。

<div id="signals-and-custom-monitors">
  ## シグナル と カスタムモニター
</div>

本番環境のモニタリングをすばやく始めるには、まず [シグナル](/ja/weave/guides/evaluation/monitors) を使用します。シグナル は、本番トレース向けにあらかじめ用意された自動 Scorer です。そのうえで、アプリケーション固有の評価基準に合わせて カスタムモニター を追加します。

|                     | シグナル                              | Custom monitors                      |
| ------------------- | --------------------------------- | ------------------------------------ |
| **Configuration**   | ワンクリックで有効化でき、prompt を作成する必要はありません | スコアリング用の prompt、モデル、パラメーターを完全に制御できます |
| **Scope**           | 事前設定済みの品質分類器とエラー分類器               | 自分で定義した任意の評価基準                       |
| **Trace selection** | 自動 (品質は成功したルートトレース、エラーは失敗したトレース)  | operations、フィルター、サンプリング率を設定可能        |
| **Model**           | Serverless Inference (プリセット)      | 任意の商用モデルまたは Serverless Inference モデル |
| **Use case**        | 実績のある分類器を使って本番モニタリングをすばやく開始したい場合  | アプリケーション固有のカスタム評価基準を使いたい場合           |

<div id="create-a-monitor-in-weave">
  ## Weave でモニターを作成する
</div>

Weave でカスタム モニターを作成するには、次の手順に従います。

1. [W\&B UI](https://wandb.ai/home) を開き、Weave プロジェクトを開きます。

2. Weave のサイドバーで **Monitors** を選択し、**+ New Monitor** ボタンをクリックします。**Create new monitor** モーダル ダイアログが開きます。

3. **Create new monitor** メニューで、次のフィールドを設定します。
   * **Name**: 文字または数値で始める必要があります。使用できるのは、文字、数値、ハイフン、アンダースコアです。
   * **Description** (Optional): モニターの動作内容を説明します。
   * **Active monitor** toggle: モニターのオン/オフを切り替えます。
   * **Calls to monitor**:
     * **Operations**: モニターする `@weave.op` を 1 つ以上選択します。使用可能な op の一覧に表示されるには、その op を使用するトレースを少なくとも 1 つログしておく必要があります。
     * **Filter** (Optional): 対象となる Call を絞り込みます (たとえば `max_tokens` や `top_p` に基づいて絞り込めます) 。
     * **Sampling rate**: スコアリングする Call の割合です (0% ～ 100%) 。
       <Tip>
         各スコアリング Call にはコストがかかるため、サンプリング率を下げるとコストを抑えられます。
       </Tip>
   * **LLM-as-a-judge configuration**:
     * **Scorer name**: 文字または数値で始める必要があります。使用できるのは、文字、数値、ハイフン、アンダースコアです。
     * **Score Audio**: 使用可能な LLM モデルをフィルターして、音声対応モデルのみを表示します。また、**Media Scoring JSON Paths** フィールドが表示されます。
     * **Score Images**: 使用可能な LLM モデルをフィルターして、画像対応モデルのみを表示します。また、**Media Scoring JSON Paths** フィールドが表示されます。
     * **Judge model**: op のスコアリングに使用するモデルを選択します。このメニューには、W\&B アカウントで設定した商用 LLM モデルに加えて、[Serverless Inference models](/ja/inference/models) も表示されます。音声対応モデルには、名前の横に **Audio Input** ラベルが表示されます。選択したモデルについて、次の設定を行います。
       * **Configuration name**: このモデル設定の名前です。
       * **System prompt**: 判定モデルの役割とペルソナを定義します。たとえば、"You are an impartial AI judge." のように指定します。
       * **Response format**: 判定モデルが応答を出力する形式です。`json_object` やプレーン テキストの `text` などがあります。
       * **Scoring prompt**: op をスコアリングするための評価タスクです。スコアリング プロンプトでは、op の [prompt variables](/ja/weave/guides/evaluation/scorers#access-variables-from-your-ops-in-scoring-prompts) を参照できます。たとえば、"Evaluate whether `{output}` is accurate based on `{ground_truth}`." のように指定します。
     * **Media Scoring JSON Paths**: トレースデータからメディアを抽出する JSONPath 式 (RFC 9535) を指定します。パスを指定しない場合、モニターにはユーザー メッセージ内のスコアリング可能なすべてのメディアが含まれます。このフィールドは、**Score Audio** または **Score Images** を有効にすると表示されます。

4. モニターの各フィールドを設定したら、**Create monitor** を選択します。モニターが Weave プロジェクトに追加されます。コードがトレースの生成を開始すると、**Traces** タブでモニター名を選択し、表示されたパネルのデータを確認してスコアをレビューできます。

また、Weave UI でモニターのトレースデータを [比較](/ja/weave/guides/tools/comparison) して可視化したり、**Traces** タブのダウンロード ボタン (<Icon icon="download" iconType="regular" />) を使って CSV や JSON などの形式でダウンロードしたりすることもできます。

Weave は、すべての Scorer の結果を [Call](/ja/weave/guides/tracking/tracing#calls) オブジェクトの `feedback` フィールドに自動的に保存します。

<div id="example-create-a-truthfulness-monitor">
  ### 例: 真実性モニターを作成する
</div>

次のエンドツーエンドの例では、生成された文の真実性を評価するモニターを作成します。完了すると、Weave プロジェクト内のサンプル op をスコアするアクティブなモニターが作成され、スコア付きのトレースが W\&B UI に表示されます。

1. 文を生成する関数を定義します。生成される文には、正しいものと正しくないものがあります。

<Tabs>
  <Tab title="Python">
    ```python lines theme={null}
    import weave
    import random
    import openai

    weave.init("my-team/my-weave-project")

    client = openai.OpenAI()

    @weave.op()
    def generate_statement(ground_truth: str) -> str:
        if random.random() < 0.5:
            response = client.chat.completions.create(
                model="gpt-4.1",
                messages=[
                    {
                        "role": "user",
                        "content": f"Generate a statement that is incorrect based on this fact: {ground_truth}"
                    }
                ]
            )
            return response.choices[0].message.content
        else:
            return ground_truth

    generate_statement("The Earth revolves around the Sun.")
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript lines twoslash theme={null}
    // @noErrors
    import * as weave from 'weave';
    import OpenAI from 'openai';

    await weave.init('my-team/my-weave-project');

    const client = new OpenAI();

    const generateStatement = weave.op(async (ground_truth: string): Promise<string> => {
      if (Math.random() < 0.5) {
        const response = await client.chat.completions.create({
          model: 'gpt-4.1',
          messages: [
            {
              role: 'user',
              content: `Generate a statement that is incorrect based on this fact: ${ground_truth}`,
            },
          ],
        });
        return response.choices[0]?.message?.content ?? '';
      }
      return ground_truth;
    });

    await generateStatement("The Earth revolves around the Sun.");
    ```
  </Tab>
</Tabs>

2. project にトレースをログするために、関数を少なくとも 1 回実行します。これにより、その op を W\&B UI でモニタリングできるようになります。

3. W\&B UI で Weave プロジェクトを開き、サイドバーから **Monitors** を選択します。次に、**New Monitor** を選択します。

4. **Create new monitor** メニューで、次の値を使用して各フィールドを設定します。
   * **Name**: `truthfulness-monitor`
   * **Description**: `Evaluates the truthfulness of generated statements.`
   * **Active monitor**: **オン** に切り替えます。
   * **Operations**: `generate_statement` を選択します。
   * **サンプリング率**: すべての call をスコアするため、`100%` に設定します。
   * **Scorer name**: `truthfulness-scorer`
   * **Judge model**: `o3-mini-2025-01-31`
   * **System prompt**: `You are an impartial AI judge. Your task is to evaluate the truthfulness of statements.`
   * **Response format**: `json_object`
   * **スコアリング プロンプト**:
     ```text theme={null}
     出力文が入力文に基づいて正確かどうかを評価してください。

     これは入力文です: {ground_truth}

     これは出力文です: {output}

     応答は次のフィールドを含む JSON オブジェクトにしてください。
     - is_true: 出力文が入力文に基づいて真か偽かを示す boolean。
     - reasoning: その文が真または偽である理由についての推論。
     ```

5. **Create monitor** を選択します。これで、モニターが Weave プロジェクトに追加されます。

6. スクリプトで、真実性の度合いが異なる文を使って関数を呼び出し、scoring function をテストします。

<Tabs>
  <Tab title="Python">
    ```python lines theme={null}
    generate_statement("The Earth revolves around the Sun.")
    generate_statement("Water freezes at 0 degrees Celsius.")
    generate_statement("The Great Wall of China was built over several centuries.")
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript lines twoslash theme={null}
    // @noErrors
    await generateStatement("The Earth revolves around the Sun.");
    await generateStatement("Water freezes at 0 degrees Celsius.");
    await generateStatement("The Great Wall of China was built over several centuries.");
    ```
  </Tab>
</Tabs>

7. 複数の異なる文でスクリプトを実行した後、W\&B UI を開いて **Traces** タブに移動します。任意の **LLMAsAJudgeScorer.score** トレースを選択して、結果を確認します。

<img src="https://mintcdn.com/wb-21fd5541/IuXGrpyeFw4WzHgb/weave/guides/evaluation/img/monitors-4.png?fit=max&auto=format&n=IuXGrpyeFw4WzHgb&q=85&s=3cb9742254ebba9684abeeb7826a8464" alt="Monitor trace" width="3024" height="1428" data-path="weave/guides/evaluation/img/monitors-4.png" />

これで、`generate_statement` の各呼び出しをスコアし、その結果を元のトレースとともに保存する、動作する真実性モニターを利用できます。結果は Weave UI での分析や比較に使用できます。
