- Python
- TypeScript
Weave におけるワークフローの核となるのは
Evaluation オブジェクト であり、以下の内容を定義します。Evaluation を定義したら、Model オブジェクトや LLM アプリケーションロジックを含む任意のカスタム関数に対して実行できます。.evaluate() を呼び出すたびに 評価 run がトリガーされます。Evaluation オブジェクトを設計図、各 run をそのセットアップ下でのアプリケーションのパフォーマンス測定と考えると分かりやすいでしょう。1. Evaluation オブジェクトの作成
Evaluation オブジェクトの作成は、評価設定の最初のステップです。Evaluation は例となる データ、スコアリングロジック、およびオプションの事前処理で構成されます。これを後で 1 つ以上の評価を実行するために使用します。
Weave は各例を取得し、アプリケーションを介して実行し、複数のカスタムスコアリング関数で出力をスコアリングします。これにより、アプリケーションのパフォーマンスの全体像を把握できるだけでなく、個別の出力やスコアを掘り下げて確認できるリッチな UI を利用できます。
(オプション) カスタムネーミング
- Python
- TypeScript
評価フローでは、2 種類の名前をカスタマイズできます。
- Evaluation オブジェクト名 (
evaluation_name): 設定されたEvaluationオブジェクトの永続的なラベルです。 - Evaluation run 表示名 (
__weave["display_name"]): UI に表示される、特定の評価実行のラベルです。
Evaluation オブジェクトに名前を付ける
Evaluation オブジェクト自体に名前を付けるには、Evaluation クラスに evaluation_name パラメータを渡します。この名前は、コードや UI のリストで評価を識別するのに役立ちます。個別の評価 run に名前を付ける
特定の評価 run(evaluate() の呼び出し)に名前を付けるには、__weave 辞書で display_name を指定します。これは、その run に対して UI に表示される内容に影響します。2. テスト例のデータセットを定義する
まず、評価対象となる例のコレクションを含む Dataset オブジェクトまたは例のリストを定義します。これらの例は、テスト駆動開発(TDD)のユニットテストと同様に、テストしたい失敗ケースであることがよくあります。- Python
- TypeScript
以下の例は、辞書のリストとして定義されたデータセットを示しています。
3. スコアリング関数の定義
次に、1 つ以上の スコアリング関数 を作成します。これらはDataset 内の各例をスコアリングするために使用されます。
- Python
- TypeScript
各スコアリング関数は (オプション) カスタム
アプリケーションによっては、カスタム
output 引数を持ち、スコアを含む辞書を返す必要があります。オプションで、データセットの例から他の入力をに含めることもできます。スコアリング関数には output キーワード引数が必要ですが、その他の引数はユーザー定義であり、データセットの例から取得されます。引数名に基づいた辞書のキーを使用することで、必要なキーのみを取得します。以下のスコアラー関数の例 match_score1 は、スコアリングのために examples 辞書の expected 値を使用します。(オプション) カスタム Scorer クラスの定義
アプリケーションによっては、カスタム Scorer クラスを作成したい場合があります。例えば、特定のパラメータ(チャットモデル、プロンプトなど)、各行の特定のスコアリング、および集計スコアの特定の計算方法を持つ標準化された LLMJudge クラスを作成する場合などです。詳細については、RAG アプリケーションのモデルベース評価 の Scorer クラスの定義に関するチュートリアルを参照してください。4. 評価対象のモデルまたは関数の定義
- Python
- TypeScript
Model を評価するには、Evaluation を使用してそのモデルに対して evaluate を呼び出します。Models は、実験したいパラメータがあり、それを Weave で取得したい場合に使用します。predict が実行され、各スコアリング関数で出力がスコアリングされます。(オプション) 評価対象の関数を定義する
あるいは、@weave.op() でトラッキングされたカスタム関数を評価することもできます。5. 評価の実行
評価を実行するには、Evaluation オブジェクトの .evaluate() を呼び出します。
- Python
- TypeScript
evaluation という名前の Evaluation オブジェクトと、評価対象の model という名前の Model オブジェクトがある場合、以下のコードで評価 run をインスタンス化します。(オプション) 複数のトライアルを実行する
Evaluation オブジェクトに trials パラメータを設定することで、各例を複数回実行できます。完全な評価コードのサンプル
- Python
- TypeScript
以下のコードサンプルは、開始から終了までの完全な評価 run を示しています。
examples 辞書は、match_score1 および match_score2 スコアリング関数によって、与えられた prompt の値に基づく MyModel、およびカスタム関数 function_to_evaluate を評価するために使用されます。Model と関数の両方の評価 run は、asyncio.run(evaluation.evaluate()) で呼び出されます。
高度な評価機能
評価前のデータセット行のフォーマット
- Python
- TypeScript
preprocess_model_input パラメータを使用すると、データセットの例を評価関数に渡す前に変換できます。これは、以下の場合に役立ちます。- フィールド名をモデルが期待する入力名にリネームする
- データを正しい形式に変換する
- フィールドを追加または削除する
- 各例に追加データをロードする
preprocess_model_input を使用してフィールド名をリネームする方法を示す簡単な例です。input_text フィールドが含まれていますが、評価関数は question 引数を期待しています。preprocess_example 関数はフィールド名をリネームすることで各例を変換し、評価が正しく動作するようにします。事前処理関数は以下の通りです。- データセットから生の例を受け取ります
- モデルが期待するフィールドを持つ辞書を返します
- 評価関数に渡される前に各例に適用されます
評価での HuggingFace データセットの使用
- Python
- TypeScript
サードパーティのサービスやライブラリとのインテグレーションは継続的に改善されています。よりシームレスなインテグレーションを構築する間、Weave の評価で HuggingFace Datasets を使用するための一時的な回避策として
preprocess_model_input を使用できます。現在のアプローチについては、評価での HuggingFace データセットの使用クックブック を参照してください。保存済みビュー(Saved views)
Evals テーブルの設定、フィルタ、ソートを 保存済みビュー として保存し、好みのセットアップに素早くアクセスできます。保存済みビューは UI および Python SDK で設定・アクセスできます。詳細については、保存済みビュー を参照してください。命令的評価(EvaluationLogger)
より柔軟な評価フレームワークを好む場合は、Weave の EvaluationLogger を確認してください。EvaluationLogger は Python と TypeScript の両方で利用可能で、複雑なワークフローに対してより高い柔軟性を提供しますが、標準の評価フレームワークはより多くの構造とガイダンスを提供します。