Dela via


Köra utvärderingar i molnet med hjälp av Azure AI Foundry SDK (förhandsversion)

Viktigt!

Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

I den här artikeln får du lära dig hur du kör utvärderingar i molnet (förhandsversion) i förhandsdistributionstestning på en testdatauppsättning. Azure AI Evaluation SDK stöder körning av utvärderingar lokalt på datorn och i molnet. Du kan till exempel köra lokala utvärderingar på små testdata för att utvärdera dina generativa AI-programprototyper. Gå sedan vidare till testning före distribution och kör utvärderingar på en stor datauppsättning.

När du utvärderar dina program i molnet kan du inte hantera din lokala beräkningsinfrastruktur. Du kan också integrera utvärderingar som tester i dina pipelines för kontinuerlig integrering och kontinuerlig leverans. Efter distributionen kan du kontinuerligt övervaka dina program för övervakning efter distributionen.

När du använder Azure AI Projects SDK loggar den utvärderingsresultat i ditt Azure AI-projekt för bättre observerbarhet. Den här funktionen stöder alla Microsoft-utvalda inbyggda utvärderare och dina egna anpassade utvärderare. Dina utvärderare kan finnas i utvärderingsbiblioteket och ha samma rollbaserade åtkomstkontroll för projektomfattning.

Förutsättningar

  • Azure AI Foundry-projekt i samma regioner som är stöd för risk- och säkerhetsutvärderingar (förhandsversion). Om du inte har ett projekt skapar du ett. Se Skapa ett projekt för Azure AI Foundry.
  • Azure OpenAI-distribution med GPT-modell som stöder chat completion. Till exempel gpt-4.
  • Kontrollera att du är inloggad i din Azure-prenumeration genom att köra az login.

Om det här är första gången du kör utvärderingar och loggar det till ditt Azure AI Foundry-projekt kan du behöva utföra några ytterligare steg:

  1. Skapa och anslut ditt lagringskonto till ditt Azure AI Foundry-projekt på resursnivå. Det finns två sätt du kan göra detta på. Du kan använda en Bicep-mall som etablerar och ansluter ett lagringskonto till ditt Foundry-projekt med nyckelautentisering. Du kan också skapa och etablera åtkomst manuellt till ditt lagringskonto i Azure-portalen.
  2. Kontrollera att det anslutna lagringskontot har åtkomst till alla projekt.
  3. Om du har anslutit ditt lagringskonto med Microsoft Entra-ID ska du ge den hanterade identiteten Storage Blob Data Owner behörighet till både ditt konto och Foundry-projektresursen i Azure-portalen.

Anmärkning

Konfigurationer av virtuella nätverk stöds för närvarande inte för molnbaserade utvärderingar. Aktivera åtkomst till offentligt nätverk för din Azure OpenAI-resurs.

Kom igång

  1. Installera Azure AI Foundry SDK-projektklienten som kör utvärderingarna i molnet:

    uv install azure-ai-projects azure-identity
    

    Anmärkning

    Mer information finns i REFERENSdokumentation för REST API.

  2. Ange dina miljövariabler för dina Azure AI Foundry-resurser:

    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")
    
  3. Definiera en klient som kör dina utvärderingar i molnet:

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

Ladda upp utvärderingsdata

# 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

Om du vill veta mer om indataformat för utvärdering av generativa AI-program:

Mer information om indataformat för utvärdering av agenter finns i Utvärdera Azure AI-agenter och Utvärdera andra agenter.

Ange utvärderare

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

Skicka en utvärdering i molnet

Skicka slutligen fjärrutvärderingskörningen:

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)

Ange anpassade utvärderare

Anmärkning

Azure AI Foundry-projekt stöds inte för den här funktionen. Använd ett Azure AI Foundry-hubbprojekt i stället.

Kodbaserade anpassade utvärderare

Registrera dina anpassade utvärderare i ditt Azure AI Hub-projekt och hämta utvärderar-ID:n:

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)

När du har registrerat din anpassade utvärderare kan du visa den i utvärderingsbiblioteket. I ditt Azure AI Foundry-projekt väljer du Utvärdering och sedan Utvärderarbibliotek.

Prompt-baserade anpassade utvärderare

Följ det här exemplet om du vill registrera en anpassad FriendlinessEvaluator skapad enligt beskrivningen i Prompt-baserade utvärderare:

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

När du har registrerat din anpassade utvärderare kan du visa den i utvärderingsbiblioteket. I ditt Azure AI Foundry-projekt väljer du Utvärdering och sedan Utvärderarbibliotek.

Felsökning: Jobbet har fastnat i körläge

Ditt utvärderingsjobb kan vara i körningstillståndet under en längre period när du använder Azure AI Foundry Project eller Hub. Den Azure OpenAI-modell som du valde kanske inte har tillräckligt med kapacitet.

Resolution

  1. Avbryt det aktuella utvärderingsjobbet.
  2. Öka modellkapaciteten för att hantera större indata.
  3. Kör utvärderingen igen.