目前正在觀看:Foundry(經典)入口版本 - 切換到新 Foundry 入口網站版本
重要
本文中標示為預覽的項目目前仍在預覽中。 此預覽版未簽訂服務等級協議,Microsoft 不建議用於生產工作負載。 某些功能可能不被支援或功能受限。 欲了解更多資訊,請參閱Microsoft Azure預覽補充使用條款。
在本文中,您將學習如何在雲端(預覽)中對測試資料集進行部署前測試的評估。 Azure AI 評估 SDK 讓你能在本地機器和雲端執行評估。 例如,先對小型測試資料進行本地評估,以評估生成式 AI 應用原型,然後進入部署前測試,對大型資料集進行評估。
大多數情境都應使用雲端評估——尤其是在大規模測試、將評估整合進持續整合與持續交付(CI/CD)流程,或執行部署前測試時。 在雲端執行評估消除了管理本地運算基礎設施的需求,並支援大規模自動化的測試工作流程。 部署後,您可以選擇持續評估代理程式,並進行部署後的監控。
當你使用 Foundry SDK 時,它會記錄你的 Foundry 專案中的評估結果,以提升可觀察性。 此功能支援所有Microsoft策展的內建評估器。 以及你自己的 客製化評估器。 你的評估人員可以位於 評估器函式庫 中,並擁有相同的專案範圍、角色導向存取控制。
先決條件
具備支援聊天完成之 GPT 模型(例如:
gpt-5-mini)的 Azure OpenAI 部署。Foundry 專案中的 Foundry 使用者角色。
重要
Foundry RBAC 角色最近已重新命名。 Foundry 用戶、Foundry 擁有者、Foundry Account Owner 以及 Foundry Project Manager 先前分別被稱為 Azure AI 使用者、Azure AI 擁有者、Azure AI 帳戶擁有者及 Azure AI Project 管理者。 在更名期間,你可能還會在某些地方看到之前的名字。角色 ID 與核心權限不會因命名而改變。
你也可以選擇 使用自己的儲存帳號 來進行評估。
註
部分評估功能有區域限制。 詳情請參閱 支援區域 。
開始
安裝 Microsoft Foundry SDK 專案客戶端以在雲端執行評估:
pip install azure-ai-projects azure-identity為您的 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")定義一個客戶端以便在雲端執行評估:
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 應用的輸入資料格式,請參閱:
欲了解更多關於評估代理人的輸入資料格式,請參閱 Evaluate Azure AI 代理人 及 Evaluate other agents。
指定評估者
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 專案中,選擇 「評估」,再選擇 「評估器目錄」。