Azure AI Evaluation SDKでローカル評価を行う方法とclassicポータル利用時の注意点

Azure AI Foundryで生成AIアプリの品質を確認したい場合、Local Evaluation with the Azure AI Evaluation SDK (classic) は「ローカル環境で評価データを実行し、必要に応じてFoundryプロジェクトへ結果を記録する」ための手順です。結論から言うと、今回押さえるべきポイントは、単なるSDKの使い方ではなく、classicポータル向けの手順であること、JSONLデータと列マッピングが重要であること、AI支援評価では権限・モデル・トークン消費・ストレージ設定まで確認が必要であることです。公式ドキュメント上、この手順はFoundry classicポータルに適用され、新しいFoundryポータル向けの記事ではないと明記されています。(Microsoft Learn)

生成AIやCopilot系アプリでは、「回答がそれらしい」だけではリリース判断ができません。根拠に沿っているか、危険な出力をしていないか、ツール呼び出しが正しいかを、テストデータで継続的に測る必要があります。Azure AI Evaluation SDKを使うと、1件の入出力でスポットチェックした後、より大きなデータセットに対して複数のエバリュエーターをまとめて実行できます。(Microsoft Learn)

目次

Azure AI FoundryのAI評価更新で何が変わるのか

今回の「Local Evaluation with the Azure AI Evaluation SDK (classic)」で管理者・開発者が見るべき変更点は、評価機能そのものの全面刷新というより、Foundryにおける評価・可観測性の運用整理が進んでいる点です。

GitHub上の公式ドキュメント履歴では、2026年5月18日のコミットで、該当ファイルを含む複数のFoundry評価関連ドキュメントに ms.subservice: foundry-observability が追加されています。差分としてはメタデータ追加が中心で、evaluate-sdk.md でも本文APIの大きな破壊的変更ではなく、評価機能をFoundryの可観測性領域として扱う整理と見るのが妥当です。(GitHub)

実務上の影響は次のとおりです。

確認ポイント内容影響を受ける人
対象ポータルclassicポータル向けの手順。新しいFoundryポータル向けではない管理者、開発リーダー
評価の位置づけ生成AIアプリの品質・安全性・RAG・Agentic評価をローカルで実行開発者、QA担当
結果の記録Foundryプロジェクトへ評価結果やログを追跡可能管理者、MLOps担当
データ形式classic手順ではJSONLと列マッピングが重要開発者、データ担当
権限とストレージAzure OpenAI権限、Foundryプロジェクト、ストレージ接続を確認管理者

つまり、開発者は「SDKを入れて実行する」だけでなく、どのポータルを使っているか、どの評価結果をUIに表示したいか、どの列名でデータを渡すかまで設計する必要があります。

classicポータル向け手順と新しいFoundryポータルの違い

このドキュメントは、Foundry classicポータル向けです。公式ページには「この記事は新しいFoundryポータルでは使用できない」と記載されています。リンク先の一部が新しいMicrosoft Foundryドキュメントに遷移する場合がある点も注意が必要です。(Microsoft Learn)

新しいFoundryポータルでは、ポータル上で評価を作成し、モデル・エージェント・データセット・トレースを評価対象にできます。新ポータル側の評価手順では、CSVまたはJSONLのテストデータ、チャット補完をサポートするAzure OpenAIのGPTモデル、FoundryプロジェクトのFoundry Userロールなどが前提として示されています。(Microsoft Learn)

利用状況推奨する見方
既存のclassicポータル運用を継続しているAzure AI Evaluation SDK classic手順を確認する
新しいFoundryポータルへ移行済み新ポータル向けの評価作成・クラウド評価手順を確認する
CI/CDや大規模評価に組み込みたいローカル評価だけでなく、クラウド評価や継続評価も検討する
既存記事のリンクを社内手順書に使っているclassic向けか新ポータル向けかを明記しておく

特に移行中の組織では、社内Wikiに「Azure AI Foundryの評価手順」とだけ書くと混乱します。classic用、new portal用、SDK用、ポータル操作用を分けて管理するのが安全です。

Azure AI Evaluation SDKでできること

Azure AI Evaluation SDKは、生成AIアプリケーションの出力を、数値ベースのメトリックやAI支援の品質・安全性エバリュエーターで測定するためのPython SDKです。公式手順では、まず次のコマンドで評価パッケージをインストールします。(Microsoft Learn)

pip install azure-ai-evaluation

PyPI上では azure-ai-evaluation パッケージの要件としてPython 3.9以上が示されており、バージョンは時期によって更新されます。運用環境やCI/CDで使う場合は、単に最新版を入れるのではなく、requirements.txt や pyproject.toml でバージョンを固定して検証するのが基本です。(PyPI)

SDKの主な使い方は次の3つです。

使い方目的具体例
1行データの評価評価ロジックの動作確認1つの質問と回答で RelevanceEvaluator を試す
データセット評価複数ケースをまとめて検証JSONLファイルを evaluate() に渡す
ターゲット評価アプリを呼び出して回答を生成し、その場で評価Pythonのcallableな関数やクラスを target に指定する

開発初期は1行評価で十分ですが、本番前の判断にはデータセット評価が必要です。1件の成功例だけでは、RAGの根拠不足、危険な回答、長文入力時の劣化、ツール呼び出しミスを見落としやすいためです。

組み込みエバリュエーターの選び方

Azure AI Evaluation SDKには、品質、安全性、RAG、Agentic、Azure OpenAI Graderなど複数カテゴリの組み込みエバリュエーターがあります。公式ドキュメントでは、汎用評価として CoherenceEvaluator、FluencyEvaluator、RAG向けに GroundednessEvaluator や RetrievalEvaluator、安全性向けに ViolenceEvaluator、SelfHarmEvaluator、HateUnfairnessEvaluator、Agentic向けに IntentResolutionEvaluator、ToolCallAccuracyEvaluator、TaskAdherenceEvaluator などが示されています。(Microsoft Learn)

実務では、エバリュエーターを「たくさん入れる」より、アプリのリスクに合わせて選ぶことが重要です。

評価したい観点使う候補向いているケース
回答が自然で読みやすいかFluencyEvaluator、CoherenceEvaluatorFAQボット、社内ナレッジ検索
質問に関係ある回答かRelevanceEvaluator問い合わせ対応、検索拡張チャット
根拠に基づいているかGroundednessEvaluatorRAG、社内文書回答、規程検索
正解データと近いかF1ScoreEvaluator、SimilarityEvaluator定型回答、分類、既知FAQ
危険・不適切な出力がないかContentSafetyEvaluator、各種Safety Evaluator外部公開チャット、教育、医療・金融周辺の問い合わせ
エージェントが意図やタスクを守るかTaskAdherenceEvaluator、ToolCallAccuracyEvaluatorCopilot、業務エージェント、ツール実行型AI

RAGアプリでは、最低でも「回答の関連性」と「根拠性」を分けて見るべきです。回答が質問に合っていても、参照文書にない内容を補っている場合があります。逆に、根拠文書には沿っていても、ユーザーの質問には十分答えていない場合もあります。

評価データはJSONLと列マッピングで設計する

classic手順では、バッチ評価にJSON Lines形式のデータセットを使います。公式ドキュメントでは、query、response、context、ground_truth などの要素が、エバリュエーターの要件に応じて使われると説明されています。(Microsoft Learn)

RAG評価用のJSONLは、たとえば次のように設計します。

{"query":"社内VPNに接続できない場合の初期対応は?","context":"VPN接続エラー時は、ネットワーク接続、認証情報、端末証明書の有効期限を確認する。","response":"まずネットワーク接続、認証情報、端末証明書の有効期限を確認してください。","ground_truth":"ネットワーク、認証情報、端末証明書を確認する。"}
{"query":"経費精算の締め日はいつですか?","context":"経費精算は毎月25日締め、翌月10日支払い。","response":"経費精算は毎月25日締めです。","ground_truth":"毎月25日締め。"}

ここで失敗しやすいのは、データセットの列名と evaluator_config の列マッピングがずれることです。evaluate() APIがデータを正しく解析するには、データセットの列をエバリュエーターが受け取るキーワードへ明示的にマッピングする必要があります。(Microsoft Learn)

from azure.ai.evaluation import evaluate

result = evaluate(
    data="data.jsonl",
    evaluators={
        "groundedness": groundedness_eval
    },
    evaluator_config={
        "groundedness": {
            "column_mapping": {
                "query": "${data.query}",
                "context": "${data.context}",
                "response": "${data.response}"
            }
        }
    },
    output_path="./myevalresults.json"
)

データ列を question、answer のように独自名にしている場合は、マッピング側もそれに合わせます。列名の統一ルールを決めずに各チームが自由に作ると、評価が失敗したり、結果がFoundry上で見えにくくなったりします。

Foundryプロジェクトへ結果を記録する前に確認する設定

ローカル評価の結果をFoundryプロジェクトに記録する場合、開発者のPCだけで完結しません。公式手順では、初めて評価を実行してFoundryプロジェクトへログを記録する場合、ストレージアカウントの作成・接続、接続済みストレージアカウントのプロジェクトアクセス、Microsoft Entra ID接続時の Storage Blob Data Owner 権限付与が必要になる場合があると説明されています。(Microsoft Learn)

管理者は、次の項目を事前に確認してください。

確認項目見るべきポイント
Foundryプロジェクト評価結果を記録する対象プロジェクトが正しいか
ストレージアカウントFoundryプロジェクトに接続されているか
Entra ID権限ユーザーとFoundryプロジェクトリソースの双方に必要な権限があるか
Azure OpenAI権限評価用モデルを呼び出せるロールがあるか
ネットワーク制限ローカル環境から必要なAzureリソースへ到達できるか
ログの扱い評価データに個人情報や機密情報が含まれていないか

APIキーでAzure OpenAIの推論呼び出しを行う場合、Azure OpenAIリソースに対して少なくとも Cognitive Services OpenAI User ロールが必要とされています。また、リスク・安全性エバリュエーターや GroundednessProEvaluator では、GPTデプロイメントの model_config ではなく azure_ai_project 情報を使う点にも注意が必要です。(Microsoft Learn)

AI支援評価ではトークン消費とモデル選定に注意する

AI支援型の評価は、LLMを「採点者」として使います。そのため、評価品質は高めやすい一方で、トークン消費とコストが増えます。公式ドキュメントでは、SimilarityEvaluator を除くAI支援品質エバリュエーターには理由フィールドが含まれ、評価品質向上のためにより多くのトークンを消費すると説明されています。具体的には、多くのAI支援エバリュエーターで max_token が800、RetrievalEvaluator で1600、ToolCallAccuracyEvaluator で3000に設定されます。(Microsoft Learn)

コストを抑えるには、次の順序で進めると失敗しにくくなります。

  1. まず10〜30件程度の小さなJSONLで評価データと列マッピングを検証する
  2. 期待するスコアや理由フィールドが出るか確認する
  3. エバリュエーターを必要最小限に絞る
  4. CI/CD用の小規模スモーク評価と、定期実行用の大規模評価を分ける
  5. 評価モデルやSDKバージョンを固定して、スコアのブレを追跡する

特にAgentic評価では、ツール呼び出しや長い入力を扱うため、評価1件あたりのコストが想定より大きくなる場合があります。リリース前評価では必要な投資ですが、開発中の全コミットで大規模評価を回す設計は避けた方が現実的です。

会話・マルチモーダル評価で失敗しやすいポイント

会話形式の評価では、conversation に messages の一覧を渡します。各メッセージには content、role、必要に応じて context を含めます。公式ドキュメントでは、会話はターンごとに評価され、全ターンの結果が会話スコアとして集計されると説明されています。(Microsoft Learn)

注意すべきなのは、context が null またはキー欠落の場合です。この場合、エバリュエーターはエラーで失敗せず、空文字列として解釈する可能性があり、誤解を招く結果につながるとされています。(Microsoft Learn)

これは実務ではかなり危険です。たとえばRAG評価で context が空のままでも評価処理が走ると、「根拠がない回答」ではなく「根拠データが渡っていない評価」として扱うべきケースを見落とします。評価前に、JSONLの必須項目チェックをスクリプトで行いましょう。

import json

required = ["query", "response", "context"]

with open("data.jsonl", encoding="utf-8") as f:
    for line_no, line in enumerate(f, start=1):
        row = json.loads(line)
        missing = [key for key in required if not row.get(key)]
        if missing:
            raise ValueError(f"{line_no}行目で必須項目が不足: {missing}")

画像やマルチモーダル評価を使う場合も制限があります。classic手順では、画像URLまたはBase64エンコード画像を conversation に渡せますが、画像・マルチモーダル評価では単一ターンのみ、会話ペイロードは画像を含めて10MB未満、URLは絶対URL、対応形式はJPG/JPEG、PNG、GIFなどの条件が示されています。(Microsoft Learn)

新しいFoundryポータルやクラウド評価へ移行する判断基準

ローカル評価は、開発者が手元で素早く検証するには便利です。一方で、チーム運用・監査・CI/CD・大規模データセットを考えると、クラウド評価の方が向いている場合があります。

新しいMicrosoft Foundry SDKのクラウド評価ドキュメントでは、クラウド評価はスケールしたテスト、CI/CD連携、リリース前テストに向いており、結果はFoundryプロジェクトに保存され、ポータルやSDKから確認できると説明されています。(Microsoft Learn)

判断基準ローカル評価が向くクラウド評価が向く
開発初期の試行錯誤向いているやや過剰
小規模な評価データ向いているどちらでも可
CI/CDでの自動判定可能だが管理が必要向いている
大規模評価ローカル環境に依存向いている
チームで結果を共有Foundry記録が必要向いている
本番エージェントの継続評価不向き向いている

移行時に注意したいのは、SDKの種類と書き方が変わる点です。新しいクラウド評価手順では azure-ai-projects>=2.0.0 をインストールし、AIProjectClient からOpenAIクライアントを取得する流れが示されています。classicの azure-ai-evaluation を使ったローカル評価コードを、そのまま新しいクラウド評価へ移せるとは考えない方が安全です。(Microsoft Learn)

管理者と開発者が今すぐ確認すべきチェックリスト

Azure AI Foundryで評価機能を使うチームは、次のチェックリストを確認してください。

役割確認すべきこと
管理者利用中のポータルがclassicか新Foundryポータルかを明記する
管理者Foundryプロジェクト、ストレージ、Entra ID権限を確認する
管理者Azure OpenAIリソースのロールと評価用モデルの利用可否を確認する
開発者JSONLの列名、column_mapping、エバリュエーター名を統一する
開発者AI支援評価のトークン消費を見積もる
開発者context や ground_truth の欠落を事前検証する
開発リーダーローカル評価、クラウド評価、ポータル評価の使い分けを決める
QA/MLOpsスコアのしきい値、失敗時の対応、再評価のタイミングを決める

評価は、導入しただけでは品質保証になりません。たとえば「groundedness が3未満ならリリース不可」「安全性評価でfailが1件でもあればレビュー」「FAQカテゴリごとに最低20件のテストデータを用意する」のように、チームで判断基準を決める必要があります。

まずは小さく始めて、評価をリリース判定に組み込む

Azure AI Evaluation SDKのローカル評価は、Azure AI Foundry上で生成AIアプリを改善するための実践的な入口です。ただし、今回の対象はclassicポータル向けであり、新しいFoundryポータルやクラウド評価とは手順が異なります。

まず行うべきことは、1件の評価コードを書くことではなく、評価対象、評価データ、評価基準、結果の保存先を決めることです。RAGアプリなら query、response、context、必要に応じて ground_truth を含むJSONLを作り、関連性・根拠性・安全性を最小セットで評価します。その後、Foundryプロジェクトへの記録、CI/CD連携、クラウド評価への移行を段階的に進めると、評価が単発の検証ではなく、リリース品質を守る仕組みになります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次