- 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 から参照できるようにします。
label という列を使用したい場合、Scorer 関数 (または score クラスメソッド) のパラメーターリストは次のようになります。Evaluation の実行時には、AI システムの出力が output パラメーターに渡されます。また、Evaluation は追加の Scorer 引数名についても、データセットの列名との自動対応を試みます。Scorer の引数名やデータセットの列名を調整できない場合は、列マッピングを使用できます。次のセクションを参照してください。- Output: AI システムの出力にアクセスするには、Scorer 関数のシグネチャに
outputパラメーターを含めます。
column_map を使用した列名のマッピング
score メソッドの引数名がデータセット内の列名と一致しないことがあります。その場合は、column_map を使用して対応できます。クラスベースの Scorer を使用している場合は、Scorer クラスの初期化時に Scorer の column_map 属性へ辞書を渡します。この辞書は、{scorer_keyword_argument: dataset_column_name} の形式で、score メソッドの引数名とデータセットの列名をマッピングします。例:score メソッドの text 引数は news_article データセット列のデータを受け取ります。メモ:- 列をマッピングする別の同等な方法として、
Scorerをサブクラス化し、scoreメソッドをオーバーライドして列を明示的にマッピングすることもできます。
スコアリングプロンプトで op の変数にアクセスする
| Variable | Description |
|---|---|
{article} | 入力引数 article の値 |
{max_length} | 入力引数 max_length の値 |
{inputs} | すべての入力引数を含む JSON 辞書 |
{output} | op が返す結果 |
Scorer の最終集計
- Python
- TypeScript
評価時には、データセットの各行に対して Scorer が実行されます。評価の最終スコアを出すために、Weave は出力の戻り値のタイプに応じて
auto_summarize を実行します。Scorer クラスの summarize method をオーバーライドして、最終スコアを計算する独自の方法を指定できます。summarize function では、次の内容を想定しています。- 1つのパラメーター
score_rows: これは辞書のリストで、各辞書にはデータセットの1行に対してscoremethod が返したスコアが含まれます。 - 集計したスコアを含む辞書を返す必要があります。
この例では、デフォルトの auto_summarize は True の件数と割合を返します。
詳細は、CorrectnessLLMJudge の実装を参照してください。call に Scorer を適用する
weave.Evaluation の一部として Scorer を実行するだけでなく、個々の call に直接適用することもできます。これは、本番トラフィックをスコアリングしたい場合や、特定の op 呼び出しに評価メトリクスを関連付けたい場合に便利です。
Weave の op に Scorer を適用するには、オペレーションの結果とそのトラッキング情報の両方にアクセスできる .call() メソッドを使用する必要があります。これにより、Scorer の結果を Weave のデータベース内の特定の call に関連付けることができます。
.call() メソッドの使い方の詳細については、Ops の呼び出し ガイドを参照してください。
- Python
- TypeScript
基本的な例を次に示します。同じ call に複数の Scorer を適用することもできます。メモ:
- Scorer の結果は自動的に Weave のデータベースに保存されます
- Scorer はメインのオペレーションが完了した後に非同期で実行されます
- UI で Scorer の結果を確認したり、API 経由でクエリしたりできます
preprocess_model_input を使用する
preprocess_model_input パラメーターを使用すると、評価中にデータセットの各例がモデルに渡される前に変更できます。
使用方法と例については、評価前に preprocess_model_input を使用してデータセットの行を整形する を参照してください。
スコア分析
単一のcallのスコアを分析する
単一Call API
get_call メソッドを使用します。
単一callのUI

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

特定のScorerでスコア付けされたすべてのCallを分析する
ScorerごとのすべてのCall API
get_callsメソッドを使用します。
Scorer ごとのすべての Call を UI で確認する


