Microsoft Foundry ポータル (クラシック) で評価フローを開発する

適用対象:Foundry (クラシック) ポータル。 この記事は、新しい Foundry ポータルでは使用できません。 新しいポータルの詳細を確認します

メモ

この記事のリンクは、現在表示している Foundry (クラシック) ドキュメントではなく、新しい Microsoft Foundry ドキュメントのコンテンツを開く場合があります。

警告

プロンプト フロー機能の開発は、2026 年 4 月 20 日に終了しました。 この機能は、2027 年 4 月 20 日に完全に廃止されます。 提供終了日に、プロンプト フローは読み取り専用モードになります。 既存のフローは、その日付まで動作し続けます。

Recommended action: 2027 年 4 月 20 日より前に、プロンプト フローワークロードを Microsoft Agent Framework に移行します。

評価フローは、実行の出力が特定の条件と目標にどの程度合っているかを評価する特殊な種類のフローです。

プロンプト フローでは、タスクと目標に合わせて独自の評価フローをカスタマイズまたは作成し、それを使用して他のフローを評価できます。 このドキュメントでは、次の内容について説明します。

  • 評価方法を開発する方法。
  • プロンプト フロー評価の入力、出力、およびログ メトリックについて理解します。

前提 条件

重要

この記事では、ハブ ベースのプロジェクトのレガシ サポートを提供します。 Foundry プロジェクトでは機能しません。 「自分が持っているプロジェクトの種類を確認する方法」を参照してください。

SDK 互換性に関するメモ: コード例では、特定のMicrosoft Foundry SDK バージョンが必要です。 互換性の問題が発生した場合は、 ハブ ベースから Foundry プロジェクトへの移行を検討してください。

評価方法の開発を開始

独自の評価方法を開発するには、次の 2 つの方法があります。

  • 組み込みの評価フローをカスタマイズする: 組み込みの評価フローを変更します。

    1. [ ビルドとカスタマイズ ] で、[ プロンプト フロー] を選択します。
    2. [ 作成] を選択してフロー作成ウィザードを開きます。
    3. フロー ギャラリーの [探索] ギャラリー で、[ 評価フロー ] を選択して、その種類でフィルター処理します。 サンプルを選び、複製を選択してカスタマイズします。
  • 新しい評価フローを最初から作成します。 ゼロから新しい評価方法を開発する。

    1. [ ビルドとカスタマイズ ] で、[ プロンプト フロー] を選択します。
    2. [ 作成] を選択してフロー作成ウィザードを開きます。
    3. フロー ギャラリーの [評価フロー] ボックスの [種類別に作成 ] で [ 作成 ] を選択すると、評価フローのテンプレートが表示されます。

プロンプト フローでの評価について

プロンプト フローでは、フローは、入力を処理して出力を生成するノードのシーケンスです。 評価フローも必要な入力を受け取り、対応する出力を生成します。

評価方法の特殊な機能を次に示します。

  • 通常、テスト対象の実行後に実行され、その実行から出力を受け取ります。
  • テスト対象の実行からの出力とは別に、必要に応じて、対応する地上の真理を含む可能性のある別のデータセットを受け取ることができます。
  • 個々のスコアに基づいてテストされるフローの全体的なパフォーマンスを計算する集計ノードがある場合があります。
  • log_metric()関数を使用してメトリックをログに記録できます。

評価方法の開発における入力と出力の定義方法について説明します。

入力

評価は、別の実行の後に実行され、その実行の出力が特定の条件と目標とどの程度一致しているかを評価します。 したがって、評価はその実行から生成された出力を受け取ります。

また、データセットから取得される可能性があるグラウンド トゥルースなど、他の入力も必要になる場合があります。 既定では、評価では、テスト対象の実行に提供されたテスト データセットと同じデータセットが使用されます。 ただし、対応するラベルやターゲットのグラウンド トゥルース (実測値) が別のデータセットにある場合は、簡単に切り替えることができます。

したがって、評価を実行するには、これらの必要な入力のソースを示す必要があります。 これを行うには、評価を送信するときに 、"入力マッピング" セクションが表示されます。

  • データ ソースが実行出力の場合、ソースは次のように示されます。 ${run.output.[OutputName]}
  • データ ソースがテスト データセットの場合、ソースは次のように示されます。 ${data.[ColumnName]}

メモ

評価でデータセットのデータが必要ない場合は、入力マッピング セクションのデータセット列を参照する必要はありません。これは、データセットの選択がオプションの構成であることを示します。 データセットの選択は、評価結果には影響しません。

入力の説明

メトリックの計算に必要な入力を思い出させるために、必要な入力ごとに説明を追加できます。 説明は、バッチ実行の送信でソースをマッピングするときに表示されます。

各入力の説明を追加するには、評価方法を開発するときに、入力セクションで [説明の表示 ] を選択します。 また、[説明を非表示にする] を選択して説明を非表示にすることができます。

この説明は、バッチ実行送信でこの評価メソッドを使用する場合に表示されます。

出力とメトリック

評価の出力は、テストされるフローのパフォーマンスを測定する結果です。 通常、出力にはスコアなどのメトリックが含まれており、推論や提案のテキストも含まれる場合があります。

インスタンス レベル別スコアの出力

プロンプト フローでは、各サンプル データセットが一度に 1 つずつ処理され、出力レコードが生成されます。 同様に、ほとんどの評価ケースでは、出力ごとにメトリックがあり、個々のデータに対してフローがどのように実行されるかを確認できます。

各データ サンプルのスコアを記録するには、各出力のスコアを計算し、出力セクションで設定して スコアをフロー出力として ログに記録します。 この作成エクスペリエンスは、標準フロー出力の定義と同じです。

このスコアは line_process ノードで計算されます。このスコアは、種類別に作成するときに最初から作成および編集できます。 この Python ノードを LLM ノードに置き換えて、LLM を使用してスコアを計算することもできます。

この評価方法を使用して別のフローを評価する場合は、インスタンス レベルのスコアを [概要>出力 ] タブに表示できます。

メトリックのログと集計ノード

加えて、実行の全体的な評価を提供することも重要です。 評価フロー内のPython ノードの "set as aggregation" をチェックして"reduce" ノードに変換し、ノードが入力リストを取り込み、バッチ処理することができます。

この方法では、各フロー出力のすべてのスコアを計算して処理し、各バリアントの全体的な結果を計算できます。

Prompt flow_sdk.log_metrics()を使用して、集計ノードでメトリックをログに記録できます。 メトリックは数値 (float/int) である必要があります。 文字列型メトリックのログ記録はサポートされていません。

このスコアは、 aggregate ノードで計算されます。このスコアは、種類別に作成するときに最初から作成および編集できます。 このPython ノードを LLM ノードに置き換えて、LLM を使用してスコアを計算することもできます。 評価フローで log_metric API を使用する場合は、次の例を参照してください。

from typing import List
from promptflow import tool, log_metric

@tool
def calculate_accuracy(grades: List[str], variant_ids: List[str]):
    aggregate_grades = {}
    for index in range(len(grades)):
        grade = grades[index]
        variant_id = variant_ids[index]
        if variant_id not in aggregate_grades.keys():
            aggregate_grades[variant_id] = []
        aggregate_grades[variant_id].append(grade)

    # calculate accuracy for each variant
    for name, values in aggregate_grades.items():
        accuracy = round((values.count("Correct") / len(values)), 2)
        log_metric("accuracy", accuracy, variant_id=name)

    return aggregate_grades

Python ノードでこの関数を呼び出したように、他の場所に割り当てる必要はありません。メトリックは後で表示できます。 この評価方法をバッチ実行で使用すると、インスタンス レベルのスコアを [概要>Metrics ] タブに表示できます。

次の手順