次の方法で共有


Microsoft Foundry SDK (クラシック) を使用してクラウドで評価を実行する

このドキュメントでは、 Microsoft Foundry (クラシック) ポータルを参照します。

🔍 新しいポータルの詳細については、Microsoft Foundry (新しい) ドキュメント を参照してください。

Important

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

この記事では、テスト データセットで事前デプロイ テスト用の評価をクラウド (プレビュー) で実行する方法について説明します。 Azure AI Evaluation SDK を使用すると、マシンとクラウドでローカルに評価を実行できます。 たとえば、小規模なテスト データに対してローカル評価を実行して生成型 AI アプリケーションのプロトタイプを評価した後、大規模なデータセットに対して評価を実行するデプロイ前テストに進みます。

ほとんどのシナリオでクラウド評価を使用します。特に、大規模なテスト、継続的インテグレーションと継続的デリバリー (CI/CD) パイプラインへの評価の統合、またはデプロイ前テストの実行を行う場合に使用します。 クラウドで評価を実行すると、ローカル コンピューティング インフラストラクチャを管理する必要がなくなり、大規模な自動テスト ワークフローがサポートされます。 デプロイ後に、デプロイ後の監視のためにエージェントを 継続的に評価 することを選択できます。

Foundry SDK を使用すると、評価結果が Foundry プロジェクトに記録され、観測性が向上します。 この機能は、Microsoft によってキュレーションされたすべての 組み込みエバリュエーターをサポートします。 と独自の カスタム エバリュエーター。 エバリュエーターは エバリュエーター ライブラリ に配置でき、同じプロジェクト スコープのロールベースのアクセス制御を持つことができます。

[前提条件]

一部の評価機能には、地域的な制限があります。 詳細については 、サポートされているリージョン を参照してください。

概要

  1. Microsoft Foundry SDK プロジェクト クライアントをインストールして、クラウドで評価を実行します。

    pip install azure-ai-projects azure-identity
    
  2. Foundry リソースの環境変数を設定します。

    import os
    
    # Required environment variables:
    endpoint = os.environ["PROJECT_ENDPOINT"] # https://<account>.services.ai.azure.com/api/projects/<project>
    model_endpoint = os.environ["MODEL_ENDPOINT"] # https://<account>.services.ai.azure.com
    model_api_key = os.environ["MODEL_API_KEY"]
    model_deployment_name = os.environ["MODEL_DEPLOYMENT_NAME"] # E.g. gpt-5-mini
    
    # Optional: Reuse an existing dataset.
    dataset_name    = os.environ.get("DATASET_NAME",    "dataset-test")
    dataset_version = os.environ.get("DATASET_VERSION", "1.0")
    
  3. クラウドで評価を実行するクライアントを定義します。

    import os
    from azure.identity import DefaultAzureCredential
    from azure.ai.projects import AIProjectClient
    
    # Create the project client (Foundry project and credentials):
    project_client = AIProjectClient(
        endpoint=endpoint,
        credential=DefaultAzureCredential(),
    )
    

入力データを準備する

# Upload a local JSONL file. Skip this step if you already have a dataset registered.
data_id = project_client.datasets.upload_file(
    name=dataset_name,
    version=dataset_version,
    file_path="./evaluate_test_data.jsonl",
).id

生成 AI アプリケーションを評価するための入力データ形式の詳細については、次を参照してください。

エージェントを評価するための入力データ形式の詳細については、 Azure AI エージェントの評価他のエージェントの評価に関するページを参照してください。

エバリュエーターを指定する

from azure.ai.projects.models import (
    EvaluatorConfiguration,
    EvaluatorIds,
)

# Built-in evaluator configurations:
evaluators = {
    "relevance": EvaluatorConfiguration(
        id=EvaluatorIds.RELEVANCE.value,
        init_params={"deployment_name": model_deployment_name},
        data_mapping={
            "query": "${data.query}",
            "response": "${data.response}",
        },
    ),
    "violence": EvaluatorConfiguration(
        id=EvaluatorIds.VIOLENCE.value,
        init_params={"azure_ai_project": endpoint},
    ),
    "bleu_score": EvaluatorConfiguration(
        id=EvaluatorIds.BLEU_SCORE.value,
    ),
}

評価を作成する

最後に、リモート評価実行を送信します。

from azure.ai.projects.models import (
    Evaluation,
    InputDataset
)

# Create an evaluation with the dataset and evaluators specified.
evaluation = Evaluation(
    display_name="Cloud evaluation",
    description="Evaluation of dataset",
    data=InputDataset(id=data_id),
    evaluators=evaluators,
)

# Run the evaluation.
evaluation_response = project_client.evaluations.create(
    evaluation,
    headers={
        "model-endpoint": model_endpoint,
        "api-key": model_api_key,
    },
)

print("Created evaluation:", evaluation_response.name)
print("Status:", evaluation_response.status)

カスタム エバリュエーターを指定する

Foundry プロジェクトは、この機能ではサポートされていません。 代わりに Foundry ハブ プロジェクトを使用してください。

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

カスタム エバリュエーターを Azure AI Hub プロジェクトに登録し、エバリュエーター ID をフェッチします。

from azure.ai.ml import MLClient
from azure.ai.ml.entities import Model
from promptflow.client import PFClient

# Define ml_client to register the custom evaluator.
ml_client = MLClient(
       subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"],
       resource_group_name=os.environ["AZURE_RESOURCE_GROUP"],
       workspace_name=os.environ["AZURE_PROJECT_NAME"],
       credential=DefaultAzureCredential()
)

# Load the evaluator from the module.
from answer_len.answer_length import AnswerLengthEvaluator

# Convert it to an evaluation flow, and save it locally.
pf_client = PFClient()
local_path = "answer_len_local"
pf_client.flows.save(entry=AnswerLengthEvaluator, path=local_path)

# Specify the evaluator name that appears in the evaluator catalog.
evaluator_name = "AnswerLenEvaluator"

# Register the evaluator to the evaluator catalog.
custom_evaluator = Model(
    path=local_path,
    name=evaluator_name,
    description="Evaluator calculating answer length.",
)
registered_evaluator = ml_client.evaluators.create_or_update(custom_evaluator)
print("Registered evaluator id:", registered_evaluator.id)
# Registered evaluators have versioning. You can always reference any version available.
versioned_evaluator = ml_client.evaluators.get(evaluator_name, version=1)
print("Versioned evaluator id:", registered_evaluator.id)

カスタム エバリュエーターを登録したら、 エバリュエーター カタログで表示します。 Foundry プロジェクトで[ 評価]、[ エバリュエーター カタログ]の順に選択します。

プロンプト ベースのカスタム エバリュエーター

この例を使用して、FriendlinessEvaluatorの説明に従ってビルドされたカスタム を登録します。

# Import your prompt-based custom evaluator.
from friendliness.friend import FriendlinessEvaluator

# Define your deployment.
model_config = dict(
    azure_endpoint=os.environ.get("AZURE_ENDPOINT"),
    azure_deployment=os.environ.get("AZURE_DEPLOYMENT_NAME"),
    api_version=os.environ.get("AZURE_API_VERSION"),
    api_key=os.environ.get("AZURE_API_KEY"), 
    type="azure_openai"
)

# Define ml_client to register the custom evaluator.
ml_client = MLClient(
       subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"],
       resource_group_name=os.environ["AZURE_RESOURCE_GROUP"],
       workspace_name=os.environ["AZURE_PROJECT_NAME"],
       credential=DefaultAzureCredential()
)

# # Convert the evaluator to evaluation flow and save it locally.
local_path = "friendliness_local"
pf_client = PFClient()
pf_client.flows.save(entry=FriendlinessEvaluator, path=local_path) 

# Specify the evaluator name that appears in the evaluator catalog.
evaluator_name = "FriendlinessEvaluator"

# Register the evaluator to the evaluator catalog.
custom_evaluator = Model(
    path=local_path,
    name=evaluator_name,
    description="prompt-based evaluator measuring response friendliness.",
)
registered_evaluator = ml_client.evaluators.create_or_update(custom_evaluator)
print("Registered evaluator id:", registered_evaluator.id)
# Registered evaluators have versioning. You can always reference any version available.
versioned_evaluator = ml_client.evaluators.get(evaluator_name, version=1)
print("Versioned evaluator id:", registered_evaluator.id)

カスタム エバリュエーターを登録したら、 エバリュエーター カタログで表示できます。 Foundry プロジェクトで[ 評価]、[ エバリュエーター カタログ]の順に選択します。

結果を取得する

トラブルシューティング