Evaluation
オブジェクトであり、以下を定義します:
一度Evaluation
を定義したら、Model
オブジェクトまたはLLMアプリケーションロジックを含むカスタム関数に対して実行できます。.evaluate()
の各呼び出しは評価実行をトリガーします。Evaluation
オブジェクトを設計図として、各実行をそのセットアップの下でアプリケーションがどのようにパフォーマンスを発揮するかの測定と考えてください。
評価を開始するには、次の手順を完了してください:
完全な評価コードサンプルはこちらで見つけることができます。また、高度な評価機能(保存されたビューや命令型評価など)についても詳しく学ぶことができます。
1. Evaluation
オブジェクトを作成する
オブジェクトを作成することは、評価設定をセットアップする最初のステップです。Evaluation
は、例データ、スコアリングロジック、およびオプションの前処理で構成されています。後で、これを使用して1つ以上の評価を実行します。Evaluation
Weaveは各例を取り、アプリケーションを通じて渡し、複数のカスタムスコアリング関数で出力をスコアリングします。これにより、アプリケーションのパフォーマンスの概要と、個々の出力とスコアを詳しく調査するための豊富なUIが得られます。
Weaveは各例を取り、アプリケーションを通じて渡し、複数のカスタムスコアリング関数で出力をスコアリングします。これにより、アプリケーションのパフォーマンスの概要と、個々の出力とスコアを詳しく調査するための豊富なUIが得られます。
(オプション)カスタム命名
評価フローにはカスタマイズ可能な名前の2種類があります:- 評価オブジェクト名(
evaluation_name
):設定されたEvaluation
オブジェクトの永続的なラベル。 - 評価実行表示名(
__weave["display_name"]
): UIに表示される特定の評価実行のラベル。
名前を付ける Evaluation
オブジェクト
オブジェクト Evaluation
自体に名前を付けるには、evaluation_name
パラメータを Evaluation
クラスに渡します。この名前は、コードとUIリストで評価を識別するのに役立ちます。
個々の評価実行に名前を付ける
特定の評価実行(evaluate()
の呼び出し)に名前を付けるには、__weave
辞書に display_name
を使用します。これはその実行のUIに表示される内容に影響します。
2. テスト例のデータセットを定義する
まず、Dataset オブジェクトまたは評価される例のコレクションを持つ辞書のリストを定義します。これらの例は、テストしたい失敗ケースであることが多く、テスト駆動開発(TDD)の単体テストに似ています。 以下の例は、辞書のリストとして定義されたデータセットを示しています:3. スコアリング関数を定義する
次に、1つ以上の スコアリング関数を作成します。これらはDataset
の各例をスコアリングするために使用されます。各スコアリング関数には output
が必要で、スコアを含む辞書を返す必要があります。オプションで、例から他の入力を含めることもできます。
スコアリング関数には output
キーワード引数が必要ですが、他の引数はユーザー定義であり、データセット例から取得されます。引数名に基づいた辞書キーを使用して、必要なキーのみを取得します。
スコアラーが
output
引数を期待しているのに受け取っていない場合は、レガシーの model_output
キーを使用している可能性があるかどうかを確認してください。これを修正するには、スコアラー関数を更新して、outputをキーワード引数として使用するようにします。match_score1
は expected
の値を examples
辞書からスコアリングに使用します。
(オプション)カスタム Scorer
クラスを定義する
一部のアプリケーションでは、カスタム Scorer
クラスを作成したい場合があります - 例えば、標準化された LLMJudge
クラスを特定のパラメータ(例:チャットモデル、プロンプト)、各行の特定のスコアリング、および集計スコアの特定の計算で作成する必要がある場合などです。
詳細については、Scorer
クラスの定義に関するチュートリアルを RAGアプリケーションのモデルベース評価 で参照してください。
4. 評価する Model
を定義する
を評価するには、Model
に対して evaluate
を呼び出し、Evaluation
を使用します。Models
は、実験したいパラメータがあり、weaveでキャプチャしたい場合に使用されます。
predict
が実行され、各スコアリング関数で出力がスコアリングされます。
(オプション)評価する関数を定義する
あるいは、@weave.op()
でトラッキングされたカスタム関数を評価することもできます。
5. 評価を実行する
評価を実行するには、評価したいオブジェクトに対して.evaluate()
を呼び出します。
例えば、Evaluation
オブジェクトが evaluation
という名前で、評価する Model
オブジェクトが model
という名前の場合、以下のコードで評価実行をインスタンス化します。
評価実行のヒント
evaluate()
メソッドはすべての例にわたる結果の要約を返します。出力とスコアを含むスコアリングされた行の完全なセットにアクセスするには、get_eval_results()
を使用します。display_name
を呼び出す際に.evaluate()
を提供しない場合、Weaveは日付とランダムな覚えやすい名前を使用して自動的に生成します。詳細については、個々の評価実行に名前を付ける方法を参照してください。.evaluate
に渡されるモデルはModel
または@weave.op
でトラッキングされた関数である必要があります。通常のPython関数は@weave.op
でラップされていない限りサポートされていません。
(オプション)複数の試行を実行する
trials
パラメータを Evaluation
オブジェクトに設定して、各例を複数回実行することができます。
model
に3回渡され、各実行は個別にスコアリングされ、Weaveに表示されます。
完全な評価コードサンプル
以下のコードサンプルは、最初から最後までの完全な評価実行を示しています。examples
辞書は match_score1
および match_score2
スコアリング関数によって使用され、MyModel
の値に基づいて prompt
を評価し、カスタム関数 function_to_evaluate
も評価します。Model
と関数の両方の評価実行は asyncio.run(evaluation.evaluate()
を介して呼び出されます。

高度な評価の使用法
評価前にデータセット行をフォーマットする
preprocess_model_input
関数は、モデルの予測関数に渡す前に入力にのみ適用されます。スコアラー関数は常に、前処理が適用されていない元のデータセット例を受け取ります。preprocess_model_input
パラメータを使用すると、評価関数に渡される前にデータセット例を変換できます。これは以下の場合に役立ちます:
- モデルの予想される入力と一致するようにフィールドの名前を変更する
- データを正しい形式に変換する
- フィールドを追加または削除する
- 各例の追加データを読み込む
preprocess_model_input
を使用してフィールドの名前を変更する方法を示す簡単な例です:
input_text
フィールドを持つ例が含まれていますが、評価関数は question
パラメータを期待しています。preprocess_example
関数はフィールドの名前を変更することで各例を変換し、評価が正しく機能するようにします。
前処理関数は:
- データセットから生の例を受け取ります
- モデルが期待するフィールドを持つ辞書を返します
- 評価関数に渡される前に各例に適用されます
評価でHuggingFaceデータセットを使用する
私たちはサードパーティのサービスやライブラリとの統合を継続的に改善しています。 より円滑な統合を構築している間、preprocess_model_input
を一時的な回避策としてWeave評価でHuggingFace Datasetsを使用することができます。
現在のアプローチについては、評価でHuggingFaceデータセットを使用するクックブック を参照してください。
保存されたビュー
Evalsテーブルの設定、フィルター、並べ替えを保存されたビューとして保存し、お好みの設定にすぐにアクセスできます。UIとPython SDKを通じて保存されたビューを設定およびアクセスできます。詳細については、Saved Viewsをご覧ください。命令型評価(EvaluationLogger
)
より柔軟な評価フレームワークを希望する場合は、WeaveのEvaluationLogger
をご確認ください。命令型アプローチは複雑なワークフローに対してより柔軟性を提供し、標準評価フレームワークはより構造化されたガイダンスを提供します。