다음을 통해 공유


Microsoft Foundry SDK(클래식)를 사용하여 클라우드에서 평가 실행

비고

이 문서는 Microsoft Foundry(클래식) 포털을 참조합니다.

🔍새 포털에 대해 알아보려면 Microsoft Foundry(새) 설명서를 참조하세요.

중요합니다

이 문서에 표시된 항목(미리 보기)은 현재 퍼블릭 미리 보기에서 확인할 수 있습니다. 이 미리 보기는 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.

이 문서에서는 테스트 데이터 세트에 대한 사전 배포 테스트를 위해 클라우드(미리 보기)에서 평가를 실행하는 방법을 알아봅니다. Azure AI 평가 SDK를 사용하면 머신 및 클라우드에서 로컬로 평가를 실행할 수 있습니다. 예를 들어 작은 테스트 데이터에 대한 로컬 평가를 실행하여 생성 AI 애플리케이션 프로토타입을 평가한 다음, 배포 전 테스트로 이동하여 큰 데이터 세트에서 평가를 실행합니다.

대부분의 시나리오에서 클라우드 평가를 사용합니다. 특히 대규모로 테스트하거나, 평가를 CI/CD(지속적인 통합 및 지속적인 업데이트) 파이프라인에 통합하거나, 배포 전 테스트를 수행할 때 사용합니다. 클라우드에서 평가를 실행하면 로컬 컴퓨팅 인프라를 관리할 필요가 없으며 대규모의 자동화된 테스트 워크플로를 지원합니다. 배포 후에는 배포 후 모니터링을 위해 에이전트를 지속적으로 평가 하도록 선택할 수 있습니다.

Foundry SDK를 사용하는 경우 더 나은 가시성을 위해 Foundry 프로젝트의 평가 결과를 기록합니다. 이 기능은 Microsoft에서 큐레이팅한 모든 기본 제공 평가자를 지원합니다. 귀하의 사용자 지정 평가자 및 기타 항목. 평가자는 평가자 라이브러리 에 있고 동일한 프로젝트 범위 역할 기반 액세스 제어를 가질 수 있습니다.

필수 조건

비고

일부 평가 기능에는 지역 제한이 있습니다. 자세한 내용은 지원되는 지역을 참조하세요 .

시작하기

  1. Microsoft Foundry SDK 프로젝트 클라이언트를 설치하여 클라우드에서 평가를 실행합니다.

    pip install azure-ai-projects azure-identity
    
  2. 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")
    
  3. 클라우드에서 평가를 실행할 클라이언트를 정의합니다.

    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)

사용자 지정 계산기 지정

비고

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 프로젝트에서 평가를 선택한 다음, 평가자 카탈로그를 선택합니다.

결과 가져오기

문제 해결