Microsoft Foundry SDK を使用して合成評価データを生成する (プレビュー)

Important

この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能がサポートされていないか、機能が制限されている可能性があります。 詳細については、「 Microsoft Azure プレビューの追加使用条件」を参照してください。

個々のテスト クエリを生成し、それらをモデルまたはエージェント ターゲットに送信し、ターゲットの応答を評価します。

前提条件

この例では、「SDK クライアントのセットアップ」で構成された SDK クライアントを使用します

合成クエリを生成する

azure_ai_synthetic_data_gen_preview データ ソースの種類を使用して、合成テスト クエリを生成し、デプロイされたモデルまたは Foundry エージェントに送信し、応答を評価します。 テスト データセットがない場合は、このシナリオを使用します。 サービスは、指定したプロンプト (またはエージェントの指示から) に基づいてクエリを生成し、ターゲットに対してクエリを実行し、応答を評価します。

Important

開始する前に、 クライアントのセットアップを完了します。

合成データの評価のしくみ

  1. サービスは、 prompt とオプションのシード データ ファイルに基づいて合成クエリを生成します。
  2. 各クエリは、応答を生成するために、指定されたターゲット (モデルまたはエージェント) に送信されます。
  3. エバリュエーターは、生成されたクエリと応答を使用して各応答をスコア付けします。
  4. 生成されたクエリは、再利用のためにプロジェクトにデータセットとして格納されます。

パラメーター

パラメーター 必須 説明
samples_count はい 生成する合成テスト クエリの最大数。
model_deployment_name はい 合成クエリの生成に使用するモデル デプロイ。 Responses API 機能を持つモデルのみがサポートされています。 可用性については、「 応答 API リージョンの可用性」を参照してください。 モデル ルーターはここではサポートされていません。評価対象としてのみ使用できます。
prompt いいえ 生成するクエリの種類を説明する手順。 エージェント ターゲットに命令が構成されている場合は省略可能です。
output_dataset_name いいえ 生成されたクエリが格納される出力データセットの名前。 名前を指定しない場合、サービスによって自動的に生成されます。
sources いいえ 生成されたクエリの関連性を向上させるために、(ファイル ID によって) データ ファイルをシード処理します。 現在サポートされているファイルは 1 つだけです。

エバリュエーターとデータ マッピングを設定する

合成データ ジェネレーターは、 {{item.query}} フィールドにクエリを生成します。 ターゲットは、 {{sample.output_text}}で使用可能な応答を生成します。 これらのフィールドをエバリュエーターにマップします。

from azure.ai.projects.models import TestingCriterionAzureAIEvaluator

data_source_config = {"type": "azure_ai_source", "scenario": "synthetic_data_gen_preview"}

testing_criteria = [
    TestingCriterionAzureAIEvaluator(
        type="azure_ai_evaluator",
        name="coherence",
        evaluator_name="builtin.coherence",
        initialization_parameters={"model": model_deployment_name},
        data_mapping={
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    ),
    TestingCriterionAzureAIEvaluator(
        type="azure_ai_evaluator",
        name="violence",
        evaluator_name="builtin.violence",
        data_mapping={
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    ),
]

評価を作成して実行する

モデルの目標

合成クエリを生成し、モデルを評価する:

eval_object = openai_client.evals.create(
    name="Synthetic Data Evaluation",
    data_source_config=data_source_config,
    testing_criteria=testing_criteria,
)

data_source = {
    "type": "azure_ai_synthetic_data_gen_preview",
    "item_generation_params": {
        "type": "synthetic_data_gen_preview",
        "samples_count": 5,
        "prompt": "Generate customer service questions about returning defective products",
        "model_deployment_name": model_deployment_name,
        "output_dataset_name": "my-synthetic-dataset",
    },
    "target": {
        "type": "azure_ai_model",
        "model": model_deployment_name,
    },
}

eval_run = openai_client.evals.runs.create(
    eval_id=eval_object.id,
    name="synthetic-data-evaluation",
    data_source=data_source,
)

必要に応じて、ターゲット モデルの動作を整形するためのシステム プロンプトを追加できます。 合成データ生成で input_messages を使用する場合は、 system ロール メッセージのみを含めます。サービスは、生成されたクエリをユーザー メッセージとして自動的に提供します。

data_source = {
    "type": "azure_ai_synthetic_data_gen_preview",
    "item_generation_params": {
        "type": "synthetic_data_gen_preview",
        "samples_count": 5,
        "prompt": "Generate customer service questions about returning defective products",
        "model_deployment_name": model_deployment_name,
    },
    "target": {
        "type": "azure_ai_model",
        "model": model_deployment_name,
    },
    "input_messages": {
        "type": "template",
        "template": [
            {
                "type": "message",
                "role": "system",
                "content": {
                    "type": "input_text",
                    "text": "You are a helpful customer service agent. Be empathetic and solution-oriented."
                }
            }
        ]
    },
}

エージェントのターゲット

合成クエリを生成し、Foundry エージェントを評価します。

data_source = {
    "type": "azure_ai_synthetic_data_gen_preview",
    "item_generation_params": {
        "type": "synthetic_data_gen_preview",
        "samples_count": 5,
        "prompt": "Generate questions about returning defective products",
        "model_deployment_name": model_deployment_name,
    },
    "target": {
        "type": "azure_ai_agent",
        "name": agent_name,
        "version": agent_version,
    },
}

eval_run = openai_client.evals.runs.create(
    eval_id=eval_object.id,
    name="synthetic-agent-evaluation",
    data_source=data_source,
)

完了するまでポーリングして結果を解釈するには、「クラウド評価結果を取得する」を参照してください。 応答には、生成されたデータセットの ID を含む output_dataset_id プロパティが含まれています。これは、合成データを取得または再利用するために使用できます。

実行可能な完全な例については、GitHubのsample_synthetic_data_agent_evaluation.pysample_synthetic_data_model_evaluation.pyを参照してください。