モデル、プロンプト、エージェントを評価する
モデル、プロンプト、エージェントは、出力と正解データを比較し、評価メトリックを計算することで評価できます。AI Toolkit はこのプロセスを効率化します。最小限の労力でデータセットをアップロードし、包括的な評価を実行できます。
プロンプトとエージェントを評価する
Agent Builder で [評価] タブを選択することで、プロンプトとエージェントを評価できます。評価する前に、プロンプトまたはエージェントをデータセットに対して実行してください。データセットの操作方法については、「一括実行」を参照してください。
プロンプトまたはエージェントを評価するには
- Agent Builder で、[評価] タブを選択します。
- 評価するデータセットを追加して実行します。
- 「いいね」と「よくないね」のアイコンを使用して応答を評価し、手動評価の記録を保持します。
- エバリュエーターを追加するには、[新しい評価] を選択します。
- F1 スコア、関連性、一貫性、類似性など、組み込みのエバリュエーターの一覧からエバリュエーターを選択します。注
GitHub ホスト型モデルを使用して評価を実行する場合、レート制限が適用される場合があります。
- 必要に応じて、評価の評価モデルとして使用するモデルを選択します。
- [評価を実行] を選択して評価ジョブを開始します。
バージョン管理と評価の比較
AI Toolkit はプロンプトとエージェントのバージョン管理をサポートしているため、異なるバージョンのパフォーマンスを比較できます。新しいバージョンを作成するときは、評価を実行し、結果を以前のバージョンと比較できます。
プロンプトまたはエージェントの新しいバージョンを保存するには
- Agent Builder で、システムまたはユーザーのプロンプトを定義し、変数とツールを追加します。
- エージェントを実行するか、[評価] タブに切り替えて、評価するデータセットを追加します。
- プロンプトまたはエージェントに問題がなければ、ツールバーから [新しいバージョンとして保存] を選択します。
- 必要に応じて、バージョン名を入力して Enter キーを押します。
バージョン履歴を表示する
Agent Builder でプロンプトまたはエージェントのバージョン履歴を表示できます。バージョン履歴には、すべてのバージョンと各バージョンの評価結果が表示されます。
バージョン履歴ビューでは、次を実行できます。
- バージョン名の横にある鉛筆アイコンを選択して、バージョン名を変更します。
- ゴミ箱アイコンを選択して、バージョンを削除します。
- バージョン名を選択して、そのバージョンに切り替えます。
バージョン間の評価結果を比較する
Agent Builder で異なるバージョンの評価結果を比較できます。結果はテーブルに表示され、各エバリュエーターのスコアと各バージョンの総合スコアが示されます。
バージョン間の評価結果を比較するには
- Agent Builder で、[評価] タブを選択します。
- エージェントのタイトルから [比較対象] を選択します。
- 一覧から比較するバージョンを選択します。注
比較機能は、評価結果の視認性を高めるため、Agent Builder の全画面表示モードでのみ利用できます。[プロンプト] セクションを展開して、モデルとプロンプトの詳細を表示できます。
- 選択したバージョンの評価結果がテーブルに表示され、各エバリュエーターのスコアと各バージョンの総合スコアを比較できます。
組み込みのエバリュエーター
AI Toolkit には、モデル、プロンプト、エージェントのパフォーマンスを測定するための一連の組み込みエバリュエーターが用意されています。これらのエバリュエーターは、モデルの出力と正解データに基づいてさまざまなメトリックを計算します。
エージェントの場合
- 意図の解決: エージェントがユーザーの意図をどの程度正確に識別し、対処するかを測定します。
- タスクの順守: エージェントが識別されたタスクをどの程度適切に実行するかを測定します。
- ツール呼び出しの精度: エージェントが正しいツールをどの程度適切に選択し、呼び出すかを測定します。
一般的な目的の場合
- 一貫性: 応答の論理的な一貫性と流れを測定します。
- 流暢性: 自然言語の品質と読みやすさを測定します。
RAG (検索拡張生成) の場合
- 検索: システムが関連情報をどの程度効果的に検索するかを測定します。
テキストの類似性の場合
- 類似性: AI 支援によるテキストの類似性測定。
- F1 スコア: 応答と正解間のトークン重複における適合率と再現率の調和平均。
- BLEU: 翻訳品質の二言語評価研究スコア。応答と正解間の n-gram の重複を測定します。
- GLEU: 文レベルの評価用 Google-BLEU バリアント。応答と正解間の n-gram の重複を測定します。
- METEOR: 明示的な順序付けによる翻訳評価のためのメトリック。応答と正解間の n-gram の重複を測定します。
AI Toolkit のエバリュエーターは、Azure Evaluation SDK に基づいています。生成 AI モデルのオブザーバビリティの詳細については、Azure AI Foundry のドキュメントを参照してください。
スタンドアロン評価ジョブを開始する
-
AI Toolkit ビューで、[ツール] > [評価] を選択して [評価] ビューを開きます。
-
[評価の作成] を選択し、次の情報を入力します。
- 評価ジョブ名: 既定を使用するか、カスタム名を入力します。
- エバリュエーター: 組み込みのエバリュエーターまたはカスタムエバリュエーターから選択します。
- 評価モデル: 必要に応じて、評価モデルとして使用するモデルを選択します。
- データセット: 学習用のサンプルデータセットを選択するか、
query
、response
、ground truth
のフィールドを持つ JSONL ファイルをインポートします。
-
新しい評価ジョブが作成されます。評価ジョブの詳細を開くように求められます。
-
データセットを確認し、[評価を実行] を選択して評価を開始します。
評価ジョブを監視する
評価ジョブを開始すると、評価ジョブビューでそのステータスを表示できます。
各評価ジョブには、使用されたデータセットへのリンク、評価プロセスからのログ、タイムスタンプ、評価の詳細へのリンクが含まれます。
評価結果を見つける
評価ジョブの詳細ビューには、選択された各エバリュエーターの結果テーブルが表示されます。一部の結果には、集計値が含まれる場合があります。
Data Wrangler 拡張機能でデータを開くには、[Data Wrangler で開く] を選択することもできます。
カスタムエバリュエーターを作成する
カスタムエバリュエーターを作成して、AI Toolkit の組み込み評価機能を拡張できます。カスタムエバリュエーターを使用すると、独自の評価ロジックとメトリックを定義できます。
カスタムエバリュエーターを作成するには
-
[評価] ビューで、[エバリュエーター] タブを選択します。
-
[エバリュエーターの作成] を選択して、作成フォームを開きます。
-
必要な情報を入力します
- 名前: カスタムエバリュエーターの名前を入力します。
- 説明: エバリュエーターの機能を説明します。
- 種類: エバリュエーターの種類として、LLM ベースまたはコード ベース (Python) を選択します。
-
選択した種類の指示に従ってセットアップを完了します。
-
[保存] を選択して、カスタムエバリュエーターを作成します。
-
カスタムエバリュエーターを作成すると、新しい評価ジョブを作成する際に選択できるエバリュエーターの一覧に表示されます。
LLM ベースのエバリュエーター
LLM ベースのエバリュエーターでは、自然言語プロンプトを使用して評価ロジックを定義します。
エバリュエーターが特定の品質を評価するためのガイドとなるプロンプトを作成します。柔軟性のために、基準を定義し、例を提供し、 や
などの変数を使用します。必要に応じて、スケールやフィードバックのスタイルをカスタマイズします。
LLM が JSON 結果を出力するようにします。例: {"score": 4, "reason": "The response is relevant but lacks detail."}
[例] セクションを使用して、LLM ベースのエバリュエーターを始めることもできます。
コード ベースのエバリュエーター
コード ベースのエバリュエーターでは、Python コードを使用して評価ロジックを定義します。コードは、評価スコアと理由を含む JSON 結果を返す必要があります。
AI Toolkit は、エバリュエーター名と外部ライブラリを使用するかどうかに基づいてスキャフォールドを提供します。
コードを修正して評価ロジックを実装できます
# The method signature is generated automatically. Do not change it.
# Create a new evaluator if you want to change the method signature or arguments.
def measure_the_response_if_human_like_or_not(query, **kwargs):
# Add your evaluator logic to calculate the score.
# Return an object with score and an optional string message to display in the result.
return {
"score": 3,
"reason": "This is a placeholder for the evaluator's reason."
}