モデル、プロンプト、エージェントの評価

モデル、プロンプト、エージェントは、その出力をグラウンドトゥルースデータと比較し、評価指標を計算することで評価できます。Foundry Toolkitはこのプロセスを効率化します。最小限の労力でデータセットをアップロードし、包括的な評価を実行できます。

Screenshot showing the start of an evaluation in Foundry Toolkit.

プロンプトとエージェントの評価

Agent Builder評価タブを選択すると、プロンプトとエージェントを評価できます。評価する前に、データセットに対してプロンプトまたはエージェントを実行してください。

プロンプトまたはエージェントを評価するには

  1. Agent Builderで、評価タブを選択します。
  2. 評価したいデータセットを追加して実行します。
  3. 高評価と低評価のアイコンを使用して応答を評価し、手動評価の記録を残します。
  4. エバリュエーターを追加するには、新しい評価を選択します。
  5. F1スコア、関連性、コヒーレンス、類似性など、組み込みのエバリュエーターのリストからエバリュエーターを選択します。
    注意

    レート制限は、GitHubホスト型モデルを使用して評価を実行する場合に適用されることがあります。

  6. 必要に応じて、評価の判断モデルとして使用するモデルを選択します。
  7. 評価を実行を選択して、評価ジョブを開始します。

Screenshot showing the Evaluation tab in Agent Builder with options to select evaluators, judging models, and run evaluation against a dataset.

バージョン管理と評価の比較

Foundry Toolkitはプロンプトとエージェントのバージョン管理をサポートしているため、異なるバージョンのパフォーマンスを比較できます。新しいバージョンを作成する際には、評価を実行し、以前のバージョンと比較できます。

プロンプトまたはエージェントの新しいバージョンを保存するには

  1. Agent Builderで、システムまたはユーザープロンプトを定義し、変数とツールを追加します。
  2. エージェントを実行するか、評価タブに切り替えて評価するデータセットを追加します。
  3. プロンプトまたはエージェントに満足したら、ツールバーから新しいバージョンとして保存を選択します。
  4. 必要に応じて、バージョン名を入力し、Enterキーを押します。

バージョン履歴の表示

Agent Builderで、プロンプトまたはエージェントのバージョン履歴を表示できます。バージョン履歴には、各バージョンの評価結果とともに、すべてのバージョンが表示されます。

Screenshot showing the Version History dialog with a list of saved versions of a prompt or agent.

バージョン履歴表示では、次のことができます

  • バージョン名の横にある鉛筆アイコンを選択して、バージョンの名前を変更します。
  • ゴミ箱アイコンを選択して、バージョンを削除します。
  • バージョン名を選択して、そのバージョンに切り替えます。

バージョン間の評価結果を比較する

Agent Builderで、異なるバージョンの評価結果を比較できます。結果はテーブルに表示され、各エバリュエーターのスコアと各バージョンの全体スコアが示されます。

バージョン間の評価結果を比較するには

  1. Agent Builderで、評価タブを選択します。
  2. 評価ツールバーから、比較を選択します。
  3. リストから比較したいバージョンを選択します。
    注意

    比較機能は、評価結果をより見やすくするために、Agent Builderの全画面モードでのみ利用できます。プロンプトセクションを展開して、モデルとプロンプトの詳細を確認できます。

  4. 選択したバージョンの評価結果はテーブルに表示され、各エバリュエーターのスコアと各バージョンの全体スコアを比較できます。

Screenshot showing the Evaluation tab in Agent Builder with the interface for comparing evaluation results between different versions.

組み込みのエバリュエーター

Foundry Toolkitは、モデル、プロンプト、エージェントのパフォーマンスを測定するための一連の組み込みエバリュエーターを提供します。これらのエバリュエーターは、モデルの出力とグラウンドトゥルースデータに基づいて様々な指標を計算します。

エージェント向け

  • 意図解決 (Intent Resolution): エージェントがユーザーの意図をどの程度正確に特定し、対処するかを測定します。
  • タスク遂行度 (Task Adherence): エージェントが特定されたタスクをどの程度うまく実行するかを測定します。
  • ツール呼び出し精度 (Tool Call Accuracy): エージェントが正しいツールをどの程度うまく選択し、呼び出すかを測定します。

一般用途向け

  • 一貫性 (Coherence): 応答の論理的な一貫性と流れを測定します。
  • 流暢さ (Fluency): 自然言語の品質と可読性を測定します。

RAG (検索拡張生成) 向け

  • 検索 (Retrieval): システムが関連情報をどの程度効果的に取得するかを測定します。

テキスト類似性向け

  • 類似性 (Similarity): AI支援によるテキスト類似性測定。
  • F1スコア (F1 Score): 応答とグラウンドトゥルース間のトークン重複における適合率と再現率の調和平均。
  • BLEU (Bilingual Evaluation Understudy): 翻訳品質のスコア。応答とグラウンドトゥルース間のn-グラムの重複を測定します。
  • GLEU (Google-BLEU): 文レベル評価のためのGoogle-BLEUバリアント。応答とグラウンドトゥルース間のn-グラムの重複を測定します。
  • METEOR (Metric for Evaluation of Translation with Explicit Ordering): 翻訳評価のためのメトリック。応答とグラウンドトゥルース間のn-グラムの重複を測定します。

Foundry ToolkitのエバリュエーターはAzure Evaluation SDKに基づいています。生成AIモデルのオブザーバビリティについて詳しくは、Microsoft Foundryのドキュメントを参照してください。

スタンドアロン評価ジョブの開始

  1. Foundry Toolkitビューで、ツール > 評価を選択して評価ビューを開きます。

  2. 評価を作成を選択し、以下の情報を提供します。

    • 評価ジョブ名: デフォルトを使用するか、カスタム名を入力します。
    • エバリュエーター: 組み込みまたはカスタムのエバリュエーターから選択します。
    • 判断モデル: 必要に応じて、判断モデルとして使用するモデルを選択します。
    • データセット: 学習用のサンプルデータセットを選択するか、`query`、`response`、`ground truth`のフィールドを含むJSONLファイルをインポートします。
  3. 新しい評価ジョブが作成されます。評価ジョブの詳細を開くように求められます。

    Screenshot showing the Open Evaluation dialog in Foundry Toolkit.

  4. データセットを確認し、評価を実行を選択して評価を開始します。

    Screenshot showing the Run Evaluation dialog in Foundry Toolkit.

評価ジョブの監視

評価ジョブを開始した後、評価ジョブビューでそのステータスを表示できます。

Screenshot showing a running evaluation in Foundry Toolkit.

各評価ジョブには、使用されたデータセットへのリンク、評価プロセスからのログ、タイムスタンプ、および評価の詳細へのリンクが含まれます。

評価結果の確認

評価ジョブ詳細ビューには、選択された各エバリュエーターの結果のテーブルが表示されます。一部の結果には集計値が含まれる場合があります。

また、Data Wranglerで開くを選択して、Data Wrangler拡張機能でデータを開くこともできます。

Screenshot showing the Data Wrangler extension with evaluation results.

カスタムエバリュエーターの作成

Foundry Toolkitの組み込み評価機能を拡張するために、カスタムエバリュエーターを作成できます。カスタムエバリュエーターを使用すると、独自の評価ロジックとメトリックを定義できます。

Screenshot showing the custom evaluator creation interface in Foundry Toolkit.

カスタムエバリュエーターを作成するには

  1. 評価ビューで、エバリュエータータブを選択します。

  2. エバリュエーターを作成を選択して、作成フォームを開きます。

    Screenshot showing the form to create a new custom evaluator.

  3. 必要な情報を提供します。

    • 名前: カスタムエバリュエーターの名前を入力します。
    • 説明: エバリュエーターの機能を説明します。
    • タイプ: エバリュエーターのタイプを選択します: LLMベースまたはコードベース (Python)。
  4. 選択したタイプの手順に従って設定を完了します。

  5. 保存を選択してカスタムエバリュエーターを作成します。

  6. カスタムエバリュエーターを作成すると、新しい評価ジョブを作成する際のエバリュエーターのリストに表示されます。

LLMベースのエバリュエーター

LLMベースのエバリュエーターの場合、自然言語プロンプトを使用して評価ロジックを定義します。

特定の特徴を評価するエバリュエーターを導くプロンプトを作成します。基準を定義し、例を提供し、柔軟性のためにのような変数を使用します。必要に応じてスケールやフィードバックスタイルをカスタマイズします。

LLMがJSON結果を出力することを確認してください。例: {"score": 4, "reason": "The response is relevant but lacks detail."}

セクションを使用して、LLMベースのエバリュエーターの使用を開始することもできます。

Screenshot showing the LLM-based evaluator configuration in Foundry Toolkit.

コードベースのエバリュエーター

コードベースのエバリュエーターの場合、Pythonコードを使用して評価ロジックを定義します。コードは、評価スコアと理由を含むJSON結果を返す必要があります。

Screenshot showing the Evaluators tab in Foundry Toolkit with options for creating code-based evaluators.

Foundry 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."
    }

pytest 評価

pytestとVisual Studio Codeのテストツールを使用して、エージェントの包括的な評価を作成します。

  1. ツリービューを操作してエージェントを見つけ、選択すると、Agent Builderビューがメインエリアに表示されます。

  2. 評価タブを選択します。pytest評価プロジェクトの足場を構築する評価設定機能を示すスクリーンショット。

  3. 「評価コードの足場を構築」ボタンを選択します。

  4. 足場を構築したいエバリュエーターを選択し、OKを選択します。どのエバリュエーターを選択しても、後で必要に応じてコードを編集できます。

  5. 足場が構築されたテストコードを作成するフォルダを選択します。新しい足場が構築されたテストプロジェクトが読み込まれたVisual Studio Codeの新しいインスタンスが開きます。

  6. README.mdを開きます。「クイックスタート」セクションにはセットアップ手順が含まれています (ここでも説明されています)。README.mdには、プロジェクトを変更する方法を理解するための追加の役立つ情報が含まれています。

  7. 以下のワンラインコマンドを使用して、Python環境を作成し、依存関係をインストールします。

    • Windows

      python -m venv .venv; .\.venv\Scripts\activate; pip install uv; uv pip install -r requirements.txt --prerelease=allow
      
    • MacOS / Linux

      python3 -m venv .venv && source .venv/bin/activate && pip install uv && uv pip install -r requirements.txt --prerelease=allow
      
  8. VS CodeでPython環境を選択します。コマンドパレット (Ctrl+Shift+P または Cmd+Shift+P) を開き、Python: Select Interpreterを実行して、新しく作成された環境を選択します。

  9. .envファイルを開き、構成を確認します。Foundry内のエージェントへの接続情報で事前に構成されています。

  10. data.jsonlファイルを開きます。これにはJSONL形式のサンプルデータが含まれています。選択したエバリュエーターのタイプに応じて、追加のプロパティと値を追加するなどして、このデータを変更する必要があります。たとえば、一部のエバリュエーターはqueryresponsecontextground_truthなどのプロパティの組み合わせを必要とする場合があります。独自のカスタムプロパティを追加し、テストハーネスロジックでそれらを処理することもできます。

  11. VS Codeでテストパネルを開きます (アクティビティバーのフラスコアイコンを選択します)。

  12. テストコードの横にある再生ボタンを選択して、すべてのテストを実行します。

  13. テスト結果パネルで結果を表示します。

学んだこと

この記事では、以下の方法を学びました。

  • VS Code用のFoundry Toolkitで評価ジョブを作成し、実行します。
  • 評価ジョブのステータスを監視し、その結果を表示します。
  • プロンプトとエージェントの異なるバージョン間の評価結果を比較します。
  • プロンプトとエージェントのバージョン履歴を表示します。
  • 組み込みエバリュエーターを使用して、さまざまな指標でパフォーマンスを測定します。
  • 組み込み評価機能を拡張するためにカスタムエバリュエーターを作成します。
  • さまざまな評価シナリオにLLMベースおよびコードベースのエバリュエーターを使用します。
© . This site is unofficial and not affiliated with Microsoft.