重要
この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳細については、「 Microsoft Azure プレビューの追加使用条件」を参照してください。
この GitHub アクションにより、CI/CD パイプライン内の AI モデルとエージェントをオフラインで評価できます。 これは、評価プロセスを合理化するように設計されており、運用環境にデプロイする前にモデルのパフォーマンスを評価し、情報に基づいた意思決定を行うことができます。
オフライン評価では、テスト データセットを使用して AI モデルとエージェントをテストし、流暢さ、一貫性、妥当性などのさまざまな品質と安全性のメトリックでパフォーマンスを測定します。 Azure AI モデル カタログまたは GitHub モデル マーケットプレースでモデルを選択した後、統合テスト中の AI アプリケーション検証では、オフラインの実稼働前評価が重要になります。 このプロセスにより、開発者は、エージェントの作成や更新時など、モデルまたはアプリケーションを運用環境にデプロイする前に潜在的な問題を特定し、改善を行うことができます。
特徴
自動評価: オフライン評価を CI/CD ワークフローに統合して、AI モデルの実稼働前評価を自動化します。
組み込みのエバリュエーター: Azure AI Evaluation SDK によって提供される既存のエバリュエーターを活用します。
次のエバリュエーターがサポートされています。
カテゴリ エバリュエーター クラス/メトリック AI エージェントの評価 GenAI の評価 汎用 (AI 支援付き) QAEvaluator サポートされていません サポートされています 汎用 (AI 支援付き) CoherenceEvaluator サポートされています サポートされています 汎用 (AI 支援付き) FluencyEvaluator サポートされています サポートされています テキストの類似性 SimilarityEvaluator サポートされていません サポートされています テキストの類似性 F1ScoreEvaluator サポートされていません サポートされています テキストの類似性 RougeScoreEvaluator サポートされていません サポートされていません テキストの類似性 GleuScoreEvaluator サポートされていません サポートされています テキストの類似性 BleuScoreEvaluator サポートされていません サポートされています テキストの類似性 MeteorScoreEvaluator サポートされていません サポートされています 取得拡張生成 (RAG) (AI 支援付き) GroundednessEvaluator サポートされていません サポートされています 取得拡張生成 (RAG) (AI 支援付き) GroundednessProEvaluator サポートされていません サポートされています 取得拡張生成 (RAG) (AI 支援付き) RetrievalEvaluator サポートされていません サポートされています 取得拡張生成 (RAG) (AI 支援付き) RelevanceEvaluator サポートされています サポートされています 取得拡張生成 (RAG) (AI 支援付き) レスポンスコンプリートネス評価ツール サポートされていません サポートされています 取得拡張生成 (RAG) (AI 支援付き) DocumentRetrievalEvaluator サポートされていません サポートされていません リスクと安全性 (AI 支援) 暴力評価ツール サポートされています サポートされています リスクと安全性 (AI 支援) セクシャルエバリュエーター サポートされています サポートされています リスクと安全性 (AI 支援) SelfHarmEvaluator サポートされています サポートされています リスクと安全性 (AI 支援) ヘイトアンフェアネス評価者 サポートされています サポートされています リスクと安全性 (AI 支援) IndirectAttackEvaluator サポートされています サポートされています リスクと安全性 (AI 支援) ProtectedMaterialEvaluator サポートされています サポートされています リスクと安全性 (AI 支援) CodeVulnerabilityEvaluator サポートされています サポートされています リスクと安全性 (AI 支援) UngroundedAttributesEvaluator サポートされていません サポートされています リスクと安全性 (AI 支援) ContentSafetyEvaluator サポートされています サポートされています エージェント (AI 支援) IntentResolutionEvaluator サポートされています サポートされています エージェント (AI 支援) TaskAdherenceEvaluator サポートされています サポートされています エージェント (AI 支援) ツールコール精度評価器 サポートされていません サポートされていません 複合材料 AgentOverallEvaluator
サポートされていません サポートされていません 運用メトリック クライアントの実行時間 サポートされています サポートされていません 運用メトリック サーバーの実行時間 サポートされています サポートされていません 運用メトリック 完了トークン サポートされています サポートされていません 運用メトリック プロンプト トークン サポートされています サポートされていません カスタム評価者 サポートされていません サポートされていません
- シームレスな統合: 既存の GitHub ワークフローと簡単に統合して、ワークフローで指定したルールに基づいて評価を実行します (たとえば、変更がエージェントのバージョン、プロンプト テンプレート、機能フラグの構成にコミットされた場合など)。
- 統計分析: 評価結果には信頼区間が含まれており、統計的有意性をテストして、ランダムな変動による変化ではなく意味があるかどうかを判断します。
- 既定の操作メトリック: 評価実行ごとに、操作メトリック (クライアントの実行時間、サーバーの実行時間、完了トークン、プロンプト トークン) を自動的に生成します。
[前提条件]
Foundry プロジェクトまたは Hubs ベースのプロジェクト。 詳細については、「 プロジェクトの作成」を参照してください。
AI アプリケーションの評価には、 ai-agent-evals と genai-evals の 2 つの GitHub Actions を使用できます。
- アプリケーションで既に AI Foundry エージェントを使用している場合、 ai-agent-evals は、エージェントベースのワークフローとの簡単なセットアップ プロセスと直接統合が提供されるため、最適です。
- genai-evals は、エージェント フレームワークの外部で生成 AI モデルを評価することを目的としています。
注
ai-agent-evals インターフェイスは、より簡単に構成できます。 これに対し、 genai-evals では、構造化された評価入力データを準備する必要があります。 セットアップに役立つコード サンプルが用意されています。
AI エージェントの評価を設定する方法
AI エージェント評価の入力
「ai-agent-evals」の入力には次に挙げるものが含まれます。
必須:
azure-ai-project-endpoint
: Azure AI プロジェクトのエンドポイント。 これは、AI プロジェクトに接続して各エージェントとの会話をシミュレートし、評価を実行するために Azure AI 評価 SDK に接続するために使用されます。
deployment-name
: 評価判断用にデプロイされたモデル名。data-path
: 会話スターターを含む入力データ ファイルへのパス。 各会話スターターは、評価結果のペアごとの比較のために各エージェントに送信されます。evaluators
: 組み込みのエバリュエーター名。data
: 会話スターター/クエリのセット。- サポートされているエージェントターンは 1 つだけです。
agent-ids
: エージェントの一意の識別子と評価するエージェントIDのコンマ区切りのリスト。agent-id
が 1 つだけ指定されている場合、評価結果には、各メトリックの絶対値と、対応する信頼区間が含まれます。- 複数の
agent-ids
が指定されている場合、結果には、各エージェントの絶対値と、指定されたベースライン エージェント ID との統計的比較が含まれます。
Optional (省略可能):
api-version
: デプロイされたモデルの API バージョン。baseline-agent-id
: 比較対象となるベースライン エージェントのエージェント ID。 既定では、最初のエージェントが使用されます。evaluation-result-view
: 評価結果の形式を指定します。 省略した場合、既定値は "default" (合格率や欠陥率などのブールスコア) になります。 オプションは、"default"、"all-scores" (すべての評価スコアを含む)、"raw-scores-only" (ブール以外のスコアのみ) です。
データセットのサンプルを次に示します。
{
"name": "MyTestData",
"evaluators": [
"RelevanceEvaluator",
"ViolenceEvaluator",
"HateUnfairnessEvaluator",
],
"data": [
{
"query": "Tell me about Tokyo?",
},
{
"query": "Where is Italy?",
}
]
}
AI エージェントの評価ワークフロー
GitHub アクションを使用するには、GITHub アクションを CI/CD ワークフローに追加し、トリガー条件 (コミット時など) とファイル パスを指定して、自動化されたワークフローをトリガーします。
ヒント
コストを最小限に抑えるには、すべてのコミットで評価を実行しないようにする必要があります。
この例では、異なるエージェントとエージェント ID を比較するときに Azure Agent AI Evaluation を実行する方法を示します。
name: "AI Agent Evaluation"
on:
workflow_dispatch:
push:
branches:
- main
permissions:
id-token: write
contents: read
jobs:
run-action:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Azure login using Federated Credentials
uses: azure/login@v2
with:
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- name: Run Evaluation
uses: microsoft/ai-agent-evals@v2-beta
with:
# Replace placeholders with values for your Azure AI Project
azure-ai-project-endpoint: "<your-ai-project-endpoint>"
deployment-name: "<your-deployment-name>"
agent-ids: "<your-ai-agent-ids>"
data-path: ${{ github.workspace }}/path/to/your/data-file
AI エージェント評価の出力
評価結果は、GitHub.com のアクションで実行される各 AI 評価 GitHub アクションの概要セクションに出力されます。
結果には、次の 2 つの主要な部分が含まれます。
- 上部のセクションでは、AI エージェントバリアントの概要をまとめます。 エージェント ID リンクで選択すると、AI Foundry ポータルのエージェント設定ページに移動します。 評価結果のリンクを選択することもできます。AI Foundry ポータルに誘導され、個々の結果が詳細に表示されます。
- 2 番目のセクションには、統計的有意性 (複数のエージェントの場合) と信頼区間 (単一エージェントの場合) に関するさまざまなバリアントの評価スコアと比較が含まれています。
マルチエージェントの評価結果:
単一エージェントの評価結果:
genAI 評価を設定する方法
GenAI 評価の入力
genai-evals の入力には次のものが含まれます (一部は、使用されるエバリュエーターに応じてオプションです)。
評価構成ファイル:
data
: 一連のクエリとグラウンド トゥルース。 グラウンド トゥルースは省略可能であり、一部のエバリュエータにのみ必要です。 (グラウンド トゥルースを必要とするエバリュエータをご確認してください)。データセットのサンプルを次に示します。
[ { "query": "Tell me about Tokyo?", "ground-truth": "Tokyo is the capital of Japan and the largest city in the country. It is located on the eastern coast of Honshu, the largest of Japan's four main islands. Tokyo is the political, economic, and cultural center of Japan and is one of the world's most populous cities. It is also one of the world's most important financial centers and is home to the Tokyo Stock Exchange." }, { "query": "Where is Italy?", "ground-truth": "Italy is a country in southern Europe, located on the Italian Peninsula and the two largest islands in the Mediterranean Sea, Sicily and Sardinia. It is a unitary parliamentary republic with its capital in Rome, the largest city in Italy. Other major cities include Milan, Naples, Turin, and Palermo." }, { "query": "Where is Papua New Guinea?", "ground-truth": "Papua New Guinea is an island country that lies in the south-western Pacific. It includes the eastern half of New Guinea and many small offshore islands. Its neighbours include Indonesia to the west, Australia to the south and Solomon Islands to the south-east." } ]
evaluators
: 組み込みのエバリュエーター名。ai_model_configuration
: 型、azure_endpoint
、azure_deployment
、api_version
を含む。
GenAI 評価ワークフロー
この例では、リポジトリ内の特定のファイルに変更がコミットされたときに Azure AI Evaluation を実行する方法を示します。
注
リポジトリ内の正しいディレクトリを指すように GENAI_EVALS_DATA_PATH
を更新します。
name: Sample Evaluate Action
on:
workflow_call:
workflow_dispatch:
permissions:
id-token: write
contents: read
jobs:
evaluate:
runs-on: ubuntu-latest
env:
GENAI_EVALS_CONFIG_PATH: ${{ github.workspace }}/evaluate-config.json
GENAI_EVALS_DATA_PATH: ${{ github.workspace }}/.github/.test_files/eval-input.jsonl
steps:
- uses: actions/checkout@v4
- uses: azure/login@v2
with:
client-id: ${{ secrets.OIDC_AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.OIDC_AZURE_TENANT_ID }}
subscription-id: ${{ secrets.OIDC_AZURE_SUBSCRIPTION_ID }}
- name: Write evaluate config
run: |
cat > ${{ env.GENAI_EVALS_CONFIG_PATH }} <<EOF
{
"data": "${{ env.GENAI_EVALS_DATA_PATH }}",
"evaluators": {
"coherence": "CoherenceEvaluator",
"fluency": "FluencyEvaluator"
},
"ai_model_configuration": {
"type": "azure_openai",
"azure_endpoint": "${{ secrets.AZURE_OPENAI_ENDPOINT }}",
"azure_deployment": "${{ secrets.AZURE_OPENAI_CHAT_DEPLOYMENT }}",
"api_key": "${{ secrets.AZURE_OPENAI_API_KEY }}",
"api_version": "${{ secrets.AZURE_OPENAI_API_VERSION }}"
}
}
EOF
- name: Run AI Evaluation
id: run-ai-evaluation
uses: microsoft/genai-evals@main
with:
evaluate-configuration: ${{ env.GENAI_EVALS_CONFIG_PATH }}
GenAI 評価の出力
評価結果は、GitHub.com のアクションで実行される各 AI 評価 GitHub アクションの概要セクションに出力されます。
結果には、次の 3 つの部分が含まれます。
- バリアントのテスト: バリアント名とシステム プロンプトの概要。
- 平均スコア: 各バリアントの各エバリュエーターの平均スコア。
- 個々のテスト スコア: 個々のテスト ケースの詳細な結果。