중요합니다
이 문서에 표시된 항목(미리 보기)은 현재 퍼블릭 미리 보기에서 확인할 수 있습니다. 이 미리 보기는 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
Azure AI 평가 SDK는 사용자 고유의 컴퓨터 및 클라우드에서 로컬로 평가 실행을 지원합니다. 예를 들어 작은 테스트 데이터에서 로컬 평가를 실행하여 생성 AI 애플리케이션 프로토타입을 평가한 후에는 배포 전 테스트로 이동하고 큰 데이터 세트에서 평가를 실행할 수 있습니다. 클라우드에서 애플리케이션을 평가하면 로컬 컴퓨팅 인프라를 관리할 수 없습니다. 또한 평가를 테스트로 CI/CD(지속적인 통합 및 지속적인 업데이트) 파이프라인에 통합할 수 있습니다. 배포 후에는 배포 후 모니터링을 위해 애플리케이션을 지속적으로 평가 하도록 선택할 수 있습니다.
이 문서에서는 테스트 데이터 세트의 배포 전 테스트에서 클라우드(미리 보기)에서 평가를 실행하는 방법을 알아봅니다. Azure AI Projects SDK를 사용하는 경우 더 나은 관찰을 위해 평가 결과가 Azure AI 프로젝트에 자동으로 기록됩니다. 이 기능은 Microsoft에서 큐레이팅한 모든 기본 제공 평가자와 사용자 지정 평가자를 지원합니다. 평가자는 평가자 라이브러리 에 있고 동일한 RBAC(프로젝트 범위 역할 기반 액세스 제어)를 가질 수 있습니다.
필수 조건
- 위험 및 안전성 평가자와 동일한 지원 지역에 있는 Azure AI 파운드리 프로젝트(미리 보기). 기존 프로젝트가 없는 경우 Azure AI Foundry 프로젝트를 만드는 방법 가이드에 따라 프로젝트를 만듭니다.
- GPT 모델을 지원하는 Azure OpenAI 배포.
chat completion
예:gpt-4
. -
az login
을 실행하여 먼저 Azure 구독에 로그인했는지 확인합니다.
평가를 처음으로 실행하고 Azure AI Foundry 프로젝트에 로깅하는 경우 몇 가지 추가 단계를 수행해야 할 수 있습니다.
- 리소스 수준에서 스토리지 계정을 만들고 Azure AI Foundry 프로젝트에 연결합니다. 두 가지 방법으로 스크립트에 데이터 세트를 전달할 수 있습니다. 키 인증을 사용하여 스토리지 계정을 프로비전하고 Foundry 프로젝트에 연결하는 Bicep 템플릿을 사용할 수 있습니다. Azure Portal에서 스토리지 계정에 대한 액세스를 수동으로 만들고 프로비전 할 수도 있습니다.
- 연결된 스토리지 계정에 모든 프로젝트에 대한 액세스 권한이 있는지 확인합니다.
- Microsoft Entra ID를 사용하여 스토리지 계정을 연결한 경우 Azure Portal에서 계정 및 Foundry 프로젝트 리소스 모두에 관리 ID 스토리지 Blob 데이터 소유자 권한을 부여해야 합니다.
비고
VNet(Virtual Network) 구성은 현재 클라우드 기반 평가에 지원되지 않습니다. Azure OpenAI 리소스에 대해 공용 네트워크 액세스가 사용하도록 설정되어 있는지 확인하세요.
시작하기
클라우드에서 평가를 실행하는 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 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 애플리케이션을 평가하기 위한 입력 데이터 형식에 대한 자세한 내용을 알아보려면 단일 턴 데이터, 대화 데이터, 및 이미지 및 다중 형식에 대한 대화 데이터를 참조하세요.
에이전트를 평가하기 위한 입력 데이터 형식에 대한 자세한 내용은 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 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 library.
evaluator_name = "AnswerLenEvaluator"
# 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)
Azure 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 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 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)
사용자 지정 평가기를 Azure AI 프로젝트에 로그한 후 Azure AI 프로젝트의 평가 탭 아래의 평가기 라이브러리에서 볼 수 있습니다.