Skip to main content
Weave では、Scorer が AI の出力を評価し、評価メトリクスを返します。Scorer は AI の出力を受け取って分析し、結果を辞書として返します。必要に応じて入力データを参照に使用することもでき、評価の説明や推論などの追加情報を出力することもできます。 このガイドは、AI システムの出力の品質を測定したい開発者を対象としています。Weave の評価における Scorer の役割、独自の Scorer の作成方法、個々の Call に Scorer を適用する方法、得られたスコアの分析方法について説明します。
評価時に、Scorer を weave.Evaluation オブジェクトに渡します。Weave は次の 2 つのタイプの Scorer をサポートしています。
  1. 関数ベースの Scorer: @weave.op でデコレートされた Python 関数です。
  2. クラスベースの Scorer: weave.Scorer を継承した Python クラスで、より複雑な評価に使用します。
Scorer は辞書を返す必要があります。複数のメトリクスやネストされたメトリクスのほか、LLM 評価者が自身の推論について返すテキストなど、数値以外の値も返すことができます。

独自の Scorer を作成する

カスタム Scorer を使用すると、組み込みの Scorer では対応できない、ユースケース固有の評価基準を定義できます。以下のセクションでは、Scorer を定義する 2 つの方法 (関数として定義する方法と、より複雑なロジック向けにクラスとして定義する方法) について説明します。
すぐに使える Scorer このガイドではカスタム Scorer の作成方法を説明しますが、Weave には、すぐに使用できる事前定義済みScorerとローカル SLM Scorerも用意されています。主な例は次のとおりです。

関数ベースの Scorer

関数ベースの Scorer は、@weave.op でデコレートされた、辞書を返す関数です。次のようなシンプルな評価に適しています。
評価を実行すると、evaluate_uppercase はテキストがすべて大文字かどうかをチェックします。

クラスベースの Scorer

Scorer の追加メタデータをトラッキングしたい場合、LLM 評価者でさまざまなプロンプトを試したい場合、複数の関数の Call を行いたい場合など、より高度な評価には Scorer クラスを使用します。要件:
  1. weave.Scorer を継承します。
  2. @weave.op でデコレートした score メソッドを定義します。
  3. score メソッドは辞書を返す必要があります。
例:
このクラスは、要約を元のテキストと比較して、その品質を評価します。

Scorer の仕組み

このセクションでは、Scorer が評価からデータを受け取る仕組み、データセットの列を Scorer の引数にマッピングする方法、スコアリング プロンプトで op の変数を参照する方法、および Weave が行ごとのスコアを集計して最終結果を算出する仕組みについて説明します。

Scorer のキーワード引数

Scorer は、AI システムからの出力と、データセット行の入力データの両方にアクセスできます。
  • 入力: データセット行のデータ (label 列や target 列など) を Scorer で使用したい場合は、Scorer の定義に label または target キーワード引数を追加して、そのデータを Scorer から利用できるようにします。
たとえば、データセットの label という列を使用する場合、Scorer 関数 (または score クラスメソッド) のパラメーターリストは次のようになります。
Weave の Evaluation を実行すると、AI システムの出力が output パラメーターに渡されます。また、Evaluation は Scorer のその他の引数名をデータセットの列名と自動的に照合しようとします。Scorer の引数やデータセットの列をカスタマイズできない場合は、列マッピングを使用できます。詳しくは次のセクションを参照してください。
  • 出力: AI システムの出力にアクセスするには、Scorer 関数のシグネチャに output パラメーターを含めます。

column_map による列名のマッピング

score メソッドの引数名が、データセットの列名と一致しない場合があります。その場合は、column_map を使用して対応できます。クラスベースの Scorer を使用している場合は、Scorer クラスを初期化する際に、Scorer の column_map 属性に辞書を渡します。この辞書は、score メソッドの引数名をデータセットの列名に対応付けるもので、{scorer_keyword_argument: dataset_column_name} の順序で指定します。例:
これで、score メソッドの text 引数は、データセットの news_article 列からデータを受け取るようになります。メモ:
  • 同じことを実現する別の方法として、Scorer をサブクラス化して score メソッドをオーバーロードし、列を明示的にマッピングすることもできます。

スコアリング プロンプトで op の変数にアクセスする

LLM-as-a-judge scorer のスコアリング プロンプトでは、op の変数を参照できます。これらの値は、scorer の実行時に Weave によって自動的に抽出されます。 たとえば、次のような関数があるとします。
以下の変数を使用できます。 スコアリング プロンプトの例:

Scorer の最終集計

評価中、Weave はデータセットの各行に対して scorer を計算します。評価の最終スコアを算出するため、Weave は出力の戻り値の型に基づいて auto_summarize を実行します。Scorer クラスの summarize メソッドを上書きすると、最終スコアを独自の方法で計算できます。summarize 関数の仕様は次のとおりです。
  • 単一のパラメーター score_rows を受け取ります。これは辞書のリストで、各辞書にはデータセットの 1 行に対して score メソッドが返したスコアが含まれます。
  • 集計されたスコアを含む辞書を返します。
このメリットデータセット全体の最終スコアを決める前に、すべての行をスコアリングしておく必要がある場合に役立ちます。
この例の場合、デフォルトの auto_summarize は True の件数と割合を返します。
詳細については、CorrectnessLLMJudge の実装を参照してください。

Call に Scorer を適用する

Scorer は weave.Evaluation の一部として実行するだけでなく、個々の Call に直接適用することもできます。本番トラフィックをスコアリングしたい場合や、特定の Op の invocation に評価メトリクスを付与したい場合に便利です。 Weave Op に Scorer を適用するには、.call() メソッドを使用します。このメソッドを使うと、操作の結果とそのトラッキング情報の両方にアクセスできるため、Scorer の結果を Weave のデータベース内の特定の Call に関連付けることができます。 .call() メソッドの使用方法の詳細については、Op の呼び出しガイドを参照してください。
基本的な例を次に示します。
同じ Call に複数の Scorer を適用することもできます。
メモ:
  • Weave は Scorer の結果を自動的にデータベースに保存します。
  • Scorer は、メインの操作が完了した後に非同期で実行されます。
  • Scorer の結果は、UI で確認したり、API でクエリしたりできます。
本番環境でのベストプラクティスや完全な設定例など、Scorer をガードレールやモニターとして使用する方法の詳細については、ガードレールとモニターのガイドを参照してください。

preprocess_model_input を使用する

preprocess_model_input パラメーターを使用すると、評価時にデータセットのサンプルがモデルに渡される前に、そのサンプルを変更できます。 使用方法とサンプルについては、評価前に preprocess_model_input を使用してデータセットの行をフォーマットするを参照してください。

スコア分析

Scorer の実行後は、モデルの動作を把握したりバージョンを比較したりするために、生成されたスコアを確認したい場面がよくあります。以下のセクションでは、API と Weights & Biases UI を使用して、単一の Call、複数の Call、および特定の Scorer でスコア付けされたすべての Call のスコアを分析する方法について説明します。

個々の Call のスコアを分析する

単一 Call 用の API

単一の Call を取得するには、get_call メソッドを使用します。

単一の Call の UI

Call Scores タブ
Call details パネルの Scores タブには、個々の Call のスコアが表示されます。

複数の Call のスコアを分析する

複数の Call 用の API

複数の Call を取得するには、get_calls メソッドを使用します。

複数の Call の UI

複数の Call タブ
Traces の表では、複数の Call のスコアが Scores 列に表示されます。

特定の Scorer でスコア付けされたすべての Call を分析する

Scorer 別の全 Call を取得する API

特定の Scorer でスコア付けされたすべての Call を取得するには、get_calls メソッドを使用します。

UI で Scorer ごとのすべての Call を表示する

最後に、特定の Scorer によってスコア付けされたすべての Call を確認するには、UI の Scorers タブにアクセスし、Programmatic Scorer タブを選択します。対象の Scorer をクリックすると、Scorer の詳細ページが開きます。
Scorer の詳細ページ
次に、Scores の下にある View Traces ボタンをクリックします。その Scorer によってスコア付けされたすべての Call が表示されます。
Scorer のバージョンでフィルターされた Call
デフォルトでは、選択した Scorer のバージョンでフィルターされています。バージョンのフィルターを削除すると、Scorer のいずれかのバージョンによってスコア付けされたすべての Call を表示できます。
Scorer 名でフィルターされた Call
最終更新日 2026年9月30日