- Python
- TypeScript
評価時に、Scorer を
weave.Evaluation オブジェクトに渡します。Weave は次の 2 つのタイプの Scorer をサポートしています。- 関数ベースの Scorer:
@weave.opでデコレートされた Python 関数です。 - クラスベースの Scorer:
weave.Scorerを継承した Python クラスで、より複雑な評価に使用します。
独自の Scorer を作成する
カスタム Scorer を使用すると、組み込みの Scorer では対応できない、ユースケース固有の評価基準を定義できます。以下のセクションでは、Scorer を定義する 2 つの方法 (関数として定義する方法と、より複雑なロジック向けにクラスとして定義する方法) について説明します。関数ベースの Scorer
- Python
- TypeScript
関数ベースの Scorer は、評価を実行すると、
@weave.op でデコレートされた、辞書を返す関数です。次のようなシンプルな評価に適しています。evaluate_uppercase はテキストがすべて大文字かどうかをチェックします。クラスベースの Scorer
- Python
- TypeScript
Scorer の追加メタデータをトラッキングしたい場合、LLM 評価者でさまざまなプロンプトを試したい場合、複数の関数の Call を行いたい場合など、より高度な評価には このクラスは、要約を元のテキストと比較して、その品質を評価します。
Scorer クラスを使用します。要件:weave.Scorerを継承します。@weave.opでデコレートしたscoreメソッドを定義します。scoreメソッドは辞書を返す必要があります。
Scorer の仕組み
このセクションでは、Scorer が評価からデータを受け取る仕組み、データセットの列を Scorer の引数にマッピングする方法、スコアリング プロンプトで op の変数を参照する方法、および Weave が行ごとのスコアを集計して最終結果を算出する仕組みについて説明します。Scorer のキーワード引数
- Python
- TypeScript
Scorer は、AI システムからの出力と、データセット行の入力データの両方にアクセスできます。Weave の
これで、
- 入力: データセット行のデータ (
label列やtarget列など) を Scorer で使用したい場合は、Scorer の定義にlabelまたはtargetキーワード引数を追加して、そのデータを Scorer から利用できるようにします。
label という列を使用する場合、Scorer 関数 (または score クラスメソッド) のパラメーターリストは次のようになります。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 の最終集計
- Python
- TypeScript
評価中、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 の呼び出しガイドを参照してください。
- Python
- TypeScript
基本的な例を次に示します。同じ Call に複数の Scorer を適用することもできます。メモ:
- Weave は Scorer の結果を自動的にデータベースに保存します。
- Scorer は、メインの操作が完了した後に非同期で実行されます。
- Scorer の結果は、UI で確認したり、API でクエリしたりできます。
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 のスコアを分析する
複数の Call 用の API
複数の Call を取得するには、get_calls メソッドを使用します。
複数の Call の UI

特定の Scorer でスコア付けされたすべての Call を分析する
Scorer 別の全 Call を取得する API
特定の Scorer でスコア付けされたすべての Call を取得するには、get_calls メソッドを使用します。
UI で Scorer ごとのすべての Call を表示する
最後に、特定の Scorer によってスコア付けされたすべての Call を確認するには、UI の Scorers タブにアクセスし、Programmatic Scorer タブを選択します。対象の Scorer をクリックすると、Scorer の詳細ページが開きます。

