Share via


Evaluaties uitvoeren in de cloud met behulp van de Microsoft Foundry SDK (klassiek)

Momenteel weergeven:Foundry -portalversie - (klassiek)Overschakelen naar versie voor de nieuwe Foundry-portal

Belangrijk

Items die in dit artikel zijn gemarkeerd (preview) zijn momenteel beschikbaar als openbare preview. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Bepaalde functies worden mogelijk niet ondersteund of hebben mogelijk beperkte mogelijkheden. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews voor meer informatie.

In dit artikel leert u hoe u evaluaties uitvoert in de cloud (preview) voor predeploymenttests op een testgegevensset. Met de Azure AI Evaluation SDK kunt u evaluaties lokaal op uw computer en in de cloud uitvoeren. Voer bijvoorbeeld lokale evaluaties uit op kleine testgegevens om uw generatieve AI-toepassingsprototypes te beoordelen, en ga vervolgens door naar pre-deployment testen om evaluaties uit te voeren op een grote dataset.

Gebruik cloudevaluaties voor de meeste scenario's, met name bij het testen op schaal, het integreren van evaluaties in CI/CD-pipelines (continue integratie en continue levering) of het uitvoeren van predeploymenttests. Het uitvoeren van evaluaties in de cloud elimineert de noodzaak om de lokale rekeninfrastructuur te beheren en ondersteunt grootschalige, geautomatiseerde testwerkstromen. Na de implementatie kunt u ervoor kiezen om uw agents continu te evalueren voor bewaking na de implementatie.

Wanneer u de Foundry SDK gebruikt, registreert het de evaluatieresultaten in uw Foundry-project voor betere zichtbaarheid. Deze functie ondersteunt alle door Microsoft samengestelde ingebouwde evaluators. en uw eigen aangepaste evaluatoren. Uw evaluators kunnen zich in de evaluator-bibliotheek bevinden en hebben dezelfde projectspecifieke, op rollen gebaseerde toegangscontrole.

Vereiste voorwaarden

  • Een Gieterij-project.
  • Een Azure OpenAI-implementatie met een GPT-model dat ondersteuning biedt voor voltooiing van chats (bijvoorbeeld gpt-5-mini).
  • Azure AI User op het Foundry-project.
  • U kunt desgewenst uw eigen storage-account gebruiken om evaluaties uit te voeren.

Opmerking

Sommige evaluatiefuncties hebben regionale beperkingen. Zie ondersteunde regio's voor meer informatie.

Aan de slag

  1. Installeer de Microsoft Foundry SDK project-client om evaluaties uit te voeren in de cloud:

    pip install azure-ai-projects azure-identity
    
  2. Omgevingsvariabelen instellen voor uw Foundry-resources:

    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. Definieer een client voor het uitvoeren van evaluaties in de cloud:

    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(),
    )
    

Invoergegevens voorbereiden

# 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

Zie voor meer informatie over invoergegevensindelingen voor het evalueren van generatieve AI-toepassingen:

Zie Azure AI-agents evalueren en Andere agents evalueren voor meer informatie over invoergegevensindelingen voor het evalueren van agents.

Evaluators opgeven

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,
    ),
}

Een evaluatie maken

Verzend ten slotte de uitvoering van de externe evaluatie:

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)

Aangepaste evaluators opgeven

Opmerking

Foundry-projecten worden niet ondersteund voor deze functie. Gebruik in plaats daarvan een Foundry-hub project.

Op code gebaseerde aangepaste evaluators

Registreer uw aangepaste evaluators bij uw Azure AI Hub project en haal de evaluator-id's op:

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)

Nadat u uw aangepaste evaluator hebt geregistreerd, bekijkt u deze in uw evaluatorcatalogus. Selecteer in uw Foundry-project Evaluation en selecteer vervolgens evaluator-catalogus.

Aangepaste evaluators op basis van prompts

Gebruik dit voorbeeld om een aangepaste FriendlinessEvaluator te registreren, zoals beschreven in op prompts gebaseerde evaluators:

# 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)

Nadat u uw aangepaste evaluator hebt geregistreerd, kunt u deze bekijken in uw evaluatorcatalogus. Selecteer in uw Foundry-project Evaluation en selecteer vervolgens evaluator-catalogus.

Resultaten verkrijgen

Probleemoplossingsproces