Eseguire valutazioni nel cloud usando Microsoft Foundry SDK (versione classica)

Visualizzazione attuale:Versione del portale Foundry (versione classica) - Passa alla versione per il nuovo portale Foundry

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero avere funzionalità limitate. Per altre informazioni, vedere Condizioni supplementari per l'utilizzo delle anteprime di Microsoft Azure.

Questo articolo illustra come eseguire valutazioni nel cloud (anteprima) per i test di pre-distribuzione in un set di dati di test. Azure AI Evaluation SDK consente di eseguire valutazioni in locale nel computer e nel cloud. Ad esempio, eseguire valutazioni locali su dati di test di piccole dimensioni per valutare i prototipi di applicazioni di intelligenza artificiale generativi e quindi passare ai test di pre-distribuzione per eseguire valutazioni in un set di dati di grandi dimensioni.

Usare le valutazioni cloud per la maggior parte degli scenari, in particolare quando si testano su larga scala, integrando valutazioni in pipeline di integrazione continua e recapito continuo (CI/CD) o eseguendo test di pre-distribuzione. L'esecuzione di valutazioni nel cloud elimina la necessità di gestire l'infrastruttura di calcolo locale e supporta flussi di lavoro di test automatizzati su larga scala. Dopo la distribuzione, è possibile scegliere di valutare continuamente gli agenti per il monitoraggio post-distribuzione.

Quando si usa Foundry SDK, registra i risultati della valutazione nel progetto Foundry per migliorare l'osservabilità. Questa funzionalità supporta tutti i valutatori integrati curati da Microsoft. e i propri analizzatori personalizzati. Gli analizzatori possono trovarsi nella libreria dell'analizzatore e avere lo stesso controllo degli accessi in base al ruolo nell'ambito del progetto.

Prerequisiti

  • Progetto Foundry.
  • Una distribuzione openAI Azure con un modello GPT che supporta il completamento della chat, ad esempio gpt-5-mini.
  • Ruolo di Utente Azure AI nel progetto Foundry.
  • Facoltativamente, è possibile usare il proprio account di archiviazione per eseguire valutazioni.

Nota

Alcune funzionalità di valutazione hanno restrizioni a livello di area. Per informazioni dettagliate, vedere aree supportate .

Inizia

  1. Installare il client di progetto Microsoft Foundry SDK per eseguire valutazioni nel cloud:

    pip install azure-ai-projects azure-identity
    
  2. Impostare le variabili di ambiente per le risorse 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. Definire un client per eseguire valutazioni nel 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(),
    )
    

Preparare i dati di input

# 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

Per altre informazioni sui formati di dati di input per la valutazione delle applicazioni di intelligenza artificiale generative, vedere:

Per altre informazioni sui formati di dati di input per la valutazione degli agenti, vedere Evaluate Azure agenti di intelligenza artificiale e Evaluare altri agenti.

Specificare gli analizzatori

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

Creare una valutazione

Infine, eseguire la valutazione a distanza.

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)

Specificare analizzatori personalizzati

Nota

I progetti foundry non sono supportati per questa funzionalità. Usare invece un progetto hub Foundry.

Analizzatori personalizzati basati su codice

Registrare gli analizzatori personalizzati nel progetto hub di intelligenza artificiale Azure e recuperare gli ID dell'analizzatore:

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)

Dopo aver registrato il valutatore personalizzato, visualizzalo nel catalogo del valutatore. Nel progetto Foundry selezionare Valutazione, quindi selezionare catalogo analizzatori.

Analizzatori personalizzati basati su prompt

Usare questo esempio per registrare un build personalizzato FriendlinessEvaluator come descritto in Analizzatori basati su prompt:

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

Dopo aver registrato l'analizzatore personalizzato, è possibile visualizzarlo nel catalogo dell'analizzatore. Nel progetto Foundry selezionare Valutazione, quindi selezionare catalogo analizzatori.

Ottenere risultati

Risoluzione dei problemi