Condividi tramite


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

Annotazioni

Questo documento fa riferimento al portale di Microsoft Foundry (versione classica).

🔍Per informazioni sul nuovo portale, vedere la documentazione di Microsoft Foundry (nuova).

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente disponibili 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 presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso 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 gli analizzatori predefiniti di 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 di Azure con un modello GPT che supporta il completamento della chat (ad esempio, gpt-5-mini).
  • Ruolo utente di Intelligenza artificiale di Azure nel progetto Foundry.
  • Facoltativamente, è possibile usare il proprio account di archiviazione per eseguire valutazioni.

Annotazioni

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

Inizia subito

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

    pip install azure-ai-projects azure-identity
    
  2. Imposta le variabili di ambiente per le risorse di 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 Valutare gli agenti di Intelligenza artificiale di Azure e Valutare 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, inviare l'esecuzione della valutazione remota:

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

Annotazioni

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

Analizzatori personalizzati basati su codice

Registrare gli analizzatori personalizzati nel progetto dell'hub di intelligenza artificiale di 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 l'analizzatore personalizzato, visualizzalo nel catalogo dell'analizzatore. Nel progetto Foundry selezionare Valutazione, quindi selezionare catalogo analizzatori.

Analizzatori personalizzati basati su prompt

Usare questo esempio per registrare un FriendlinessEvaluator personalizzato creato 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