次の方法で共有


AI エージェントを評価する

評価は、デプロイ前にエージェントが品質および安全基準を満たしていることを確認するために不可欠です。 開発中に評価を実行することで、エージェントのパフォーマンスのベースラインを確立し、ユーザーにリリースする前に、85% タスクの準拠合格率などの受け入れしきい値を設定できます。

この記事では、品質、安全性、およびエージェントの動作のために組み込みのエバリュエーターを使用して、 Foundry エージェント に対してエージェントを対象とした評価を実行する方法について説明します。 具体的には、次の手順を実行します。

  • 評価用に SDK クライアントを設定します。
  • 品質、安全性、エージェントの行動を評価するための評価者を選びます。
  • テスト データセットを作成し、評価を実行します。
  • 結果を解釈し、ワークフローに統合します。

ヒント

カスタム エバリュエーター、さまざまなデータ ソース、追加の SDK オプションなど、生成型 AI モデルとアプリケーションの汎用評価については、「 SDK から評価を実行する」を参照してください。

[前提条件]

  • エージェントを含む Foundry プロジェクト。
  • チャットの完了をサポートする GPT モデルを使用した Azure OpenAI デプロイ (たとえば、gpt-4ogpt-4o-mini)。
  • Foundry プロジェクトの Azure AI User ロール。

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

クライアントを設定する

Foundry SDK をインストールし、認証を設定します。

pip install "azure-ai-projects>=2.0.0" azure-identity

プロジェクト クライアントを作成します。 次のコード サンプルでは、このコンテキストで実行することを前提としています。

import os
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient

endpoint = os.environ["AZURE_AI_PROJECT_ENDPOINT"]
model_deployment = os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"]

credential = DefaultAzureCredential()
project_client = AIProjectClient(endpoint=endpoint, credential=credential)
client = project_client.get_openai_client()

エバリュエーターの選択

エバリュエーターは、エージェントの応答を評価する関数です。 評価者の中には、AI モデルをジャッジとして使用するものもあれば、ルールやアルゴリズムを使用するエバリュエーターもあります。 エージェントの評価については、次のセットを検討してください。

エバリュエータ 測定対象
タスクの準拠 エージェントはシステムの指示に従っていますか?
Coherence 応答は論理的で適切に構造化されていますか?
暴力 応答に暴力コンテンツが含まれていますか?

その他の組み込みエバリュエーターについては、以下を参照してください。

  • エージェント エバリュエーター - ツール呼び出しの精度、意図の解決
  • 品質評価者 - 流暢性、関連性、信頼性
  • テキスト類似性エバリュエーター - F1 スコア、BLEU、ROUGE
  • 安全評価者 - ヘイト、自傷、性的コンテンツ

独自のエバリュエーターを構築するには、「 カスタム エバリュエーター」を参照してください。

テスト データセットを作成する

エージェントのテスト クエリを含む JSONL ファイルを作成します。 各行には、 フィールドを持つ JSON オブジェクトが含まれています。

{"query": "What's the weather in Seattle?"}
{"query": "Book a flight to Paris"}
{"query": "Tell me a joke"}

このファイルをプロジェクトのデータセットとしてアップロードします。

dataset = project_client.datasets.upload_file(
    name="agent-test-queries",
    version="1",
    file_path="./test-queries.jsonl",
)

評価を実行する

評価を実行すると、サービスは各テスト クエリをエージェントに送信し、応答をキャプチャし、選択したエバリュエーターを適用して結果をスコア付けします。

まず、エバリュエーターを構成します。 各エバリュエーターには、入力を検索する場所を示すデータ マッピングが必要です。

  • は、 など、テスト データからフィールドを参照します。
  • は、ツール呼び出しを含む完全なエージェント応答を参照します。
  • は、応答メッセージ テキストのみを参照します。

タスクの準拠やコヒーレンスなどの AI 支援エバリュエーターには、 でのモデルのデプロイが必要です。 エバリュエーターによっては、 やツール定義など、追加のフィールドが必要になる場合があります。 詳細については、 エバリュエーターのドキュメントを参照してください。

testing_criteria = [
    {
        "type": "azure_ai_evaluator",
        "name": "Task Adherence",
        "evaluator_name": "builtin.task_adherence",
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{sample.output_items}}",
        },
        "initialization_parameters": {"deployment_name": model_deployment},
    },
    {
        "type": "azure_ai_evaluator",
        "name": "Coherence",
        "evaluator_name": "builtin.coherence",
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{sample.output_items}}",
        },
        "initialization_parameters": {"deployment_name": model_deployment},
    },
    {
        "type": "azure_ai_evaluator",
        "name": "Violence",
        "evaluator_name": "builtin.violence",
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{sample.output_items}}",
        },
    },
]

次に、評価を作成します。 評価では、テスト データ スキーマとテスト条件が定義されます。 これは、複数の実行のコンテナーとして機能します。 すべての実行が同じ評価で同じスキーマに準拠し、同じメトリックのセットが生成されます。 この一貫性は、実行間で結果を比較するために重要です。

data_source_config = {
    "type": "custom",
    "item_schema": {
        "type": "object",
        "properties": {
            "query": {"type": "string"},
        },
        "required": ["query"],
    },
    "include_sample_schema": True,
}

evaluation = client.evals.create(
    name="Agent Quality Evaluation",
    data_source_config=data_source_config,
    testing_criteria=testing_criteria,
)

最後に、テスト クエリをエージェントに送信し、エバリュエーターを適用する実行を作成します。

eval_run = client.evals.runs.create(
    eval_id=evaluation.id,
    name="Agent Evaluation Run",
    data_source={
        "type": "azure_ai_target_completions",
        "source": {
            "type": "file_id",
            "id": dataset.id,
        },
        "input_messages": {
            "type": "template",
            "template": [{"type": "message", "role": "user", "content": {"type": "input_text", "text": "{{item.query}}"}}],
        },
        "target": {
            "type": "azure_ai_agent",
            "name": "my-agent",  # Replace with your agent name
            "version": "1",  # Optional; omit to use latest version
        },
    },
)

print(f"Evaluation run started: {eval_run.id}")

結果を解釈する

通常、評価はクエリの数に応じて数分で完了します。 完了の進捗をチェックしてレポート URL を取得し、Microsoft Foundry ポータルの [評価] タブで結果を確認します。

import time

# Wait for completion
while True:
    run = client.evals.runs.retrieve(run_id=eval_run.id, eval_id=evaluation.id)
    if run.status in ["completed", "failed"]:
        break
    time.sleep(5)

print(f"Status: {run.status}")
print(f"Report URL: {run.report_url}")

Microsoft Foundry ポータルのエージェントの評価結果を示すスクリーンショット。

集計された結果

実行レベルでは、成功と失敗の数、モデルごとのトークンの使用状況、エバリュエーターごとの結果など、集計されたデータを確認できます。

{
    "result_counts": {
        "total": 3,
        "passed": 1,
        "failed": 2,
        "errored": 0
    },
    "per_model_usage": [
        {
            "model_name": "gpt-4o-mini-2024-07-18",
            "invocation_count": 6,
            "total_tokens": 9285,
            "prompt_tokens": 8326,
            "completion_tokens": 959
        },
        ...
    ],
    "per_testing_criteria_results": [
        {
            "testing_criteria": "Task Adherence",
            "passed": 1,
            "failed": 2
        },
        ... // remaining testing criteria
    ]
}

行レベルの出力

各評価実行では、テスト データセット内の行ごとに出力項目が返され、エージェントのパフォーマンスが詳細に表示されます。 出力項目には、元のクエリ、エージェントの応答、スコアと推論を含む個々のエバリュエーターの結果、トークンの使用が含まれます。

{
    "object": "eval.run.output_item",
    "id": "1",
    "run_id": "evalrun_abc123",
    "eval_id": "eval_xyz789",
    "status": "completed",
    "datasource_item": {
        "query": "What's the weather in Seattle?",
        "response_id": "resp_abc123",
        "agent_name": "my-agent",
        "agent_version": "10",
        "sample.output_text": "I'd be happy to help with the weather! However, I need to check the current conditions. Let me look that up for you.",
        "sample.output_items": [
            ... // agent response messages with tool calls
        ]
    },
    
    "results": [
        {
            "type": "azure_ai_evaluator",
            "name": "Task Adherence",
            "metric": "task_adherence",
            "label": "pass",
            "reason": "Agent followed system instructions correctly",
            "threshold": 3,
            "passed": true,
            "sample":
            {
               ... // evaluator input/output and token usage
            }
        },
        ... // remaining evaluation results
    ]
}

ワークフローに統合する

  • CI/CD パイプライン: デプロイ パイプラインで品質ゲートとして評価を使用します。 詳細な統合については、「Run evaluations with GitHub Actions」を参照してください。
  • 運用環境の監視: 継続的な評価を使用して、運用環境のエージェントを監視します。 セットアップ手順については、「 継続的評価の設定」を参照してください。

バージョンの最適化と比較

評価を使用して、エージェントを繰り返し改善します。

  1. 評価を実行して弱い領域を特定します。 クラスター分析を使用して、パターンとエラーを見つけます。
  2. 結果に基づいてエージェントの指示またはツールを調整します。
  3. 実行を再評価して 比較 し、改善を測定します。
  4. 品質しきい値が満たされるまで繰り返します。
  • Python SDK 評価サンプル
  • AI レッド チーミングを実行する
  • エージェント監視ダッシュボード
  • エージェント評価基準
  • REST API リファレンス