你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
本文中标记了“(预览版)”的项目目前为公共预览版。 此预览版未提供服务级别协议,不建议将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
虽然 Azure AI 评估 SDK 支持在本地计算机上本地运行评估,但你可能想要将作业远程委托给云。 例如,在对小型测试数据运行本地评估以帮助评估生成式 AI 应用程序原型后,现在进入了预部署测试阶段,需要在大型数据集上运行评估。 借助云评估,你无需管理本地计算基础结构,并能够将评估作为测试集成到 CI/CD 管道中。 完成部署后,可能需要持续评估应用程序进行部署后监视。
本文介绍如何在测试数据集的预部署测试中在云(预览版)中运行评估。 使用 Azure AI Projects SDK,你的评估结果将自动记录到 Azure AI 项目中,以提高可观测性。 此功能支持 Microsoft 精心策划的所有内置评估程序和你自己的自定义评估程序,这些评估程序可以位于评估程序库中,并且具有相同的项目范围 RBAC。
Azure AI Foundry 项目的设置前提步骤
Azure AI Foundry 项目,与风险和安全评估程序(预览版)位于相同的支持区域中。 如果没有现有项目,请按照指南 如何创建 Azure AI Foundry 项目 来创建一个。
带有支持
chat completion
的 GPT 模型(例如gpt-4
)的 Azure OpenAI 部署。确保首先通过运行
az login
登录到 Azure 订阅。
如果这是首次运行评估并将其记录到 Azure AI Foundry 项目,则可能需要执行一些额外的设置步骤。
- 创建存储帐户并将其连接到资源级别的 Azure AI Foundry 项目。 此 bicep 模板预配存储帐户,并使用密钥身份验证将存储帐户连接到 Foundry 项目。
- 确保连接的存储帐户有权访问所有项目。
- 如果使用 Microsoft Entra ID 连接到存储帐户,请确保在 Azure 门户中向帐户和 Foundry 项目资源授予存储 Blob 数据所有者的 MSI(Microsoft 标识)权限。
入门指南
首先,安装 Azure AI Foundry SDK 的项目客户端,该客户端在云中运行评估
uv install azure-ai-projects azure-identity
注释
有关更多详细信息,请参阅 REST API 参考文档。 然后,为 Azure AI 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-4o-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 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
若要详细了解用于评估 GenAI 应用程序的输入数据格式,请参阅单轮数据、对话数据、图像和多模态的对话数据。
若要详细了解用于评估代理的输入数据格式,请参阅 评估 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)
指定自定义评估程序
注释
此功能不支持 Azure AI Foundry 项目。 请改用 Azure AI Hub 项目。
基于代码的自定义评估器
将自定义评估器注册到 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 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 evaluator from module
from answer_len.answer_length import AnswerLengthEvaluator
# Then we convert it to evaluation flow and save it locally
pf_client = PFClient()
local_path = "answer_len_local"
pf_client.flows.save(entry=AnswerLengthEvaluator, path=local_path)
# Specify evaluator name to appear in the Evaluator library
evaluator_name = "AnswerLenEvaluator"
# Finally register the evaluator to the Evaluator library
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)
将自定义评估程序注册到 AI 项目后,可以在 Azure AI 项目的“评估”选项卡下的评估程序库中查看它。
基于提示的自定义评估程序
按照示例注册根据基于提示的评估程序所述生成的自定义 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 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 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 evaluator name to appear in the Evaluator library
evaluator_name = "FriendlinessEvaluator"
# Register the evaluator to the Evaluator library
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)
将自定义评估程序记录到 AI 项目后,可以在 Azure AI 项目的“评估”选项卡下的评估程序库中查看它。