- Python
- TypeScript
Scorers は、評価時に
weave.Evaluation オブジェクトに渡されます。Weave には 2 種類の Scorers があります。- 関数ベースの Scorers:
@weave.opでデコレートされたシンプルな Python 関数。 - クラスベースの Scorers: より複雑な評価向けに
weave.Scorerを継承した Python クラス。
独自のスコアラーを作成する
関数ベースのスコアラー
- Python
- TypeScript
これらは、辞書を返す 評価を実行すると、
@weave.op デコレーターを付けた関数です。次のようなシンプルな評価に適しています。evaluate_uppercase はテキストがすべて大文字かどうかを確認します。クラスベースの Scorer
- Python
- TypeScript
より高度な評価、特に scorer の追加メタデータを保持したい場合、LLM 評価器に対して異なるプロンプトを試したい場合、または複数の関数呼び出しを行いたい場合は、このクラスは、要約を元のテキストと比較して、その品質を評価します。
Scorer クラスを使用できます。要件:weave.Scorerを継承します。@weave.opでデコレートされたscoreメソッドを定義します。scoreメソッドは辞書を返す必要があります。
Scorersの仕組み
Scorer のキーワード引数
- Python
- TypeScript
Scorer は、AI システムの出力とデータセット行の入力データの両方にアクセスできます。weave の
これで、
- Input: “label” 列や “target” 列など、データセット行のデータを Scorer で使いたい場合は、Scorer の定義に
labelまたはtargetのキーワード引数を追加するだけで、そのデータを簡単に Scorer から利用できます。
score クラス method) のパラメーターリストは次のようになります。Evaluation を実行すると、AI システムの出力が output パラメーターに渡されます。また、Evaluation は追加の Scorer 引数名をデータセット列名に自動的に対応付けようとします。Scorer の引数やデータセット列を調整できない場合は、列マッピングを使用できます。詳しくは以下を参照してください。- Output: AI システムの出力にアクセスするには、Scorer 関数のシグネチャに
outputパラメーターを含めてください。
column_map を使用した列名のマッピング
score method の引数名が、データセット内の列名と一致しないことがあります。その場合は column_map を使って対応できます。クラスベースの Scorer を使用している場合は、Scorer クラスの初期化時に辞書を Scorer の column_map 属性に渡します。この辞書は、score method の引数名をデータセットの列名に対応付けるもので、形式は {scorer_keyword_argument: dataset_column_name} です。例:score method の text 引数は news_article データセット列のデータを受け取ります。メモ:- 列をマッピングする別の同等の方法として、
Scorerをサブクラス化し、scoremethod をオーバーライドして列を明示的にマッピングすることもできます。
スコアリングプロンプトで op の変数にアクセスする
| Variable | Description |
|---|---|
{article} | 入力引数 article の値 |
{max_length} | 入力引数 max_length の値 |
{inputs} | すべての入力引数を含む JSON 辞書 |
{output} | op が返す結果 |
スコアラーの最終集計
- Python
- TypeScript
評価時には、データセットの各行に対してスコアラーが実行されます。評価の最終スコアを出すために、出力の戻り値のタイプに応じて
auto_summarize が提供されています。- 数値列では平均が計算されます
- 真偽値列では件数と割合が計算されます
- その他の列タイプは無視されます
Scorer クラスの summarize method をオーバーライドして、最終スコアを計算する独自の方法を指定できます。summarize function では、次の内容を想定しています。- 1つのパラメーター
score_rows: これは辞書のリストで、各辞書にはデータセットの1行に対してscoremethod が返したスコアが含まれます。 - 集計したスコアを含む辞書を返す必要があります。
この例では、デフォルトの auto_summarize は True の件数と割合を返します。
詳しくは、CorrectnessLLMJudge の実装を確認してください。call にスコアラーを適用する
.call() メソッドを使用します。これにより、オペレーションの結果とトラッキング情報の両方にアクセスできます。スコアラーの結果を Weave のデータベース内の特定の call に関連付けることもできます。
.call() メソッドの使い方の詳細については、Ops の呼び出し ガイドを参照してください。
- Python
- TypeScript
基本的な例を次に示します。同じ call に複数のスコアラーを適用することもできます。メモ:
- スコアラーの結果は自動的に Weave のデータベースに保存されます
- スコアラーはメインのオペレーションが完了した後に非同期で実行されます
- UI でスコアラーの結果を確認したり、API 経由でクエリしたりできます
preprocess_model_input を使用する
preprocess_model_input パラメーターを使用すると、評価中にデータセットの各例がモデルに渡される前に変更できます。
使用方法と例については、評価前に preprocess_model_input を使用してデータセットの行を整形する を参照してください。
スコア分析
単一のCallのスコアを分析する
単一Call API
get_call methodを使用します。
単一callのUI

複数のCallのスコアを分析する
複数のCalls API
get_calls method を使用できます。
複数の Calls の UI

特定の Scorer がスコア付けしたすべての Calls を分析する
Scorer ごとのすべての Calls API
get_calls method を使用できます。
Scorer ごとのすべての Calls を UI で確認する

Scores の下にある View Traces ボタンをクリックして、Scorer によってスコア付けされたすべての Calls を表示します。

