Delen via


Evalueren met de Azure AI Evaluation SDK

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. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

Notitie

Evalueren met de promptstroom-SDK is buiten gebruik gesteld en vervangen door azure AI Evaluation SDK.

Als u de prestaties van uw generatieve AI-toepassing grondig wilt evalueren wanneer deze wordt toegepast op een aanzienlijke gegevensset, kunt u evalueren in uw ontwikkelomgeving met de Azure AI-evaluatie-SDK. Gezien een testgegevensset of een doel, worden uw generatieve AI-toepassingsgeneraties kwantitatief gemeten met zowel wiskundige metrische gegevens als ai-ondersteunde kwaliteits- en veiligheids evaluators. Ingebouwde of aangepaste evaluators bieden u uitgebreide inzichten in de mogelijkheden en beperkingen van de toepassing.

In dit artikel leert u hoe u evaluators kunt uitvoeren op één rij gegevens, een grotere testgegevensset op een toepassingsdoel met ingebouwde evaluators met behulp van de Azure AI-evaluatie-SDK en vervolgens de resultaten en evaluatielogboeken bijhoudt in Azure AI Studio.

Aan de slag

Installeer eerst het evaluatiepakket van de Azure AI-evaluatie-SDK:

pip install azure-ai-evaluation

Ingebouwde evaluators

Ingebouwde evaluators ondersteunen de volgende toepassingsscenario's:

  • Query en antwoord: dit scenario is ontworpen voor toepassingen die betrekking hebben op het verzenden van query's en het genereren van antwoorden, meestal één beurt.
  • Uitgebreide generatie ophalen: dit scenario is geschikt voor toepassingen waarbij het model zich bezighoudt met het genereren met behulp van een uitgebreide benadering voor het ophalen van informatie uit uw opgegeven documenten en het genereren van gedetailleerde antwoorden, meestal meerdere keren.

Zie Evaluatie- en bewakingsgegevens voor generatieve AI voor meer gedetailleerde informatie over elke evaluatordefinitie en hoe deze wordt berekend.

Categorie Evaluatorklasse
Prestaties en kwaliteit (ai-ondersteund) GroundednessEvaluator, , RelevanceEvaluatorCoherenceEvaluator, FluencyEvaluator, , , SimilarityEvaluatorRetrievalEvaluator
Prestaties en kwaliteit (NLP) F1ScoreEvaluatorGleuScoreEvaluator, RougeScoreEvaluator, BleuScoreEvaluatorMeteorScoreEvaluator
Risico's en veiligheid (ai-ondersteund) ViolenceEvaluator, , SexualEvaluatorSelfHarmEvaluator, HateUnfairnessEvaluator, , , IndirectAttackEvaluatorProtectedMaterialEvaluator
Composiet QAEvaluator, ContentSafetyEvaluator

Ingebouwde metrische gegevens over kwaliteit en veiligheid maken gebruik van query- en antwoordparen, samen met aanvullende informatie voor specifieke evaluators.

Tip

Zie de naslagdocumentatie voor Azure Python voor meer informatie over invoer en uitvoer.

Gegevensvereisten voor ingebouwde evaluators

Ingebouwde evaluators kunnen query- en responsparen of een lijst met gesprekken accepteren:

  • Query- en antwoordparen in .jsonl indeling met de vereiste invoer.
  • Lijst met gesprekken in .jsonl indeling in de volgende sectie.
Evaluator query response context ground_truth conversation
GroundednessEvaluator N.v.t. Vereist: tekenreeks Vereist: tekenreeks N.v.t. Ondersteund
RelevanceEvaluator Vereist: tekenreeks Vereist: tekenreeks Vereist: tekenreeks N.v.t. Ondersteund
CoherenceEvaluator Vereist: tekenreeks Vereist: tekenreeks N.v.t. N.v.t. Ondersteund
FluencyEvaluator Vereist: tekenreeks Vereist: tekenreeks N.v.t. N.v.t. Ondersteund
SimilarityEvaluator Vereist: tekenreeks Vereist: tekenreeks N.v.t. Vereist: tekenreeks Niet ondersteund
RetrievalEvaluator N.v.t. N.v.t. N.v.t. N.v.t. Alleen het gesprek wordt ondersteund
F1ScoreEvaluator N.v.t. Vereist: tekenreeks N.v.t. Vereist: tekenreeks Niet ondersteund
RougeScoreEvaluator N.v.t. Vereist: tekenreeks N.v.t. Vereist: tekenreeks Niet ondersteund
GleuScoreEvaluator N.v.t. Vereist: tekenreeks N.v.t. Vereist: tekenreeks Niet ondersteund
BleuScoreEvaluator N.v.t. Vereist: tekenreeks N.v.t. Vereist: tekenreeks Niet ondersteund
MeteorScoreEvaluator N.v.t. Vereist: tekenreeks N.v.t. Vereist: tekenreeks Niet ondersteund
ViolenceEvaluator Vereist: tekenreeks Vereist: tekenreeks N.v.t. N.v.t. Ondersteund
SexualEvaluator Vereist: tekenreeks Vereist: tekenreeks N.v.t. N.v.t. Ondersteund
SelfHarmEvaluator Vereist: tekenreeks Vereist: tekenreeks N.v.t. N.v.t. Ondersteund
HateUnfairnessEvaluator Vereist: tekenreeks Vereist: tekenreeks N.v.t. N.v.t. Ondersteund
IndirectAttackEvaluator Vereist: tekenreeks Vereist: tekenreeks Vereist: tekenreeks N.v.t. Ondersteund
ProtectedMaterialEvaluator Vereist: tekenreeks Vereist: tekenreeks N.v.t. N.v.t. Ondersteund
QAEvaluator Vereist: tekenreeks Vereist: tekenreeks Vereist: tekenreeks N.v.t. Niet ondersteund
ContentSafetyEvaluator Vereist: tekenreeks Vereist: tekenreeks N.v.t. N.v.t. Ondersteund
  • Query: de query die is verzonden naar de generatieve AI-toepassing
  • Antwoord: het antwoord op de query die is gegenereerd door de generatieve AI-toepassing
  • Context: de bron die wordt gegenereerd met betrekking tot (dat wil gezegd documenten gronden)
  • Grond waarheid: het antwoord op query gegenereerd door gebruiker/mens als het ware antwoord
  • Gesprek: er wordt een lijst met berichten van de gebruiker en assistent weergegeven. Zie meer in de volgende sectie.

Gesprekken met meerdere paden evalueren

Voor evaluators die gesprekken ondersteunen als invoer, kunt u het gesprek rechtstreeks doorgeven aan de evaluator:

relevance_score = relevance_eval(conversation=conversation)

Een gesprek is een Python-woordenlijst van een lijst met berichten (inclusief inhoud, rol en optioneel context). Hier volgt een voorbeeld van een tweerichtingsgesprek.

{"conversation":
    {"messages": [
        {
            "content": "Which tent is the most waterproof?", 
            "role": "user"
        },
        {
            "content": "The Alpine Explorer Tent is the most waterproof",
            "role": "assistant", 
            "context": "From the our product list the alpine explorer tent is the most waterproof. The Adventure Dining Table has higher weight."
        },
        {
            "content": "How much does it cost?",
            "role": "user"
        },
        {
            "content": "The Alpine Explorer Tent is $120.",
            "role": "assistant",
            "context": null
        }
        ]
    }
}

Gesprekken worden per beurt geëvalueerd en resultaten worden geaggregeerd over alle beurten voor een gespreksscore.

Prestatie- en kwaliteits evaluators

Wanneer u met AI ondersteunde metrische gegevens over prestaties en kwaliteit gebruikt, moet u een GPT-model opgeven voor het berekeningsproces.

Instellingen

Kies een implementatie met GPT-3.5, GPT-4, GPT-4o of GPT-4-minimodel voor uw berekeningen en stel deze in als uw model_config. We ondersteunen zowel het configuratieschema van het Azure OpenAI- als het OpenAI-model. We raden u aan GPT-modellen te gebruiken die niet het (preview) achtervoegsel hebben voor de beste prestaties en parseerbare antwoorden met onze evaluators.

Gebruik van prestatie- en kwaliteits evaluator

U kunt de ingebouwde evaluators uitvoeren door de gewenste evaluatorklasse te importeren. Zorg ervoor dat u uw omgevingsvariabelen instelt.

import os

# Initialize Azure OpenAI Connection with your environment variables
model_config = {
    "azure_endpoint": os.environ.get("AZURE_OPENAI_ENDPOINT"),
    "api_key": os.environ.get("AZURE_OPENAI_API_KEY"),
    "azure_deployment": os.environ.get("AZURE_OPENAI_DEPLOYMENT"),
    "api_version": os.environ.get("AZURE_OPENAI_API_VERSION"),
}

from azure.ai.evaluation import RelevanceEvaluator

# Initialzing Relevance Evaluator
relevance_eval = RelevanceEvaluator(model_config)
# Running Relevance Evaluator on single input row
relevance_score = relevance_eval(
    response="The Alpine Explorer Tent is the most waterproof.",
    context="From the our product list,"
    " the alpine explorer tent is the most waterproof."
    " The Adventure Dining Table has higher weight.",
    query="Which tent is the most waterproof?",
)
print(relevance_score)

Hier volgt een voorbeeld van het resultaat:

{'relevance.gpt_relevance': 5.0}

Risico- en veiligheids evaluatoren

Wanneer u ai-ondersteunde risico- en veiligheidsstatistieken gebruikt, is een GPT-model niet vereist. Geef in plaats van model_configuw gegevens op azure_ai_project . Dit heeft toegang tot de back-endservice van Azure AI Studio-veiligheidsevaluaties, waarmee een GPT-model wordt uitgevoerd dat specifiek is voor evaluatie van schadelijke effecten die ernstscores en redeneringen voor inhoudsrisico's kunnen genereren om de veiligheidsevaluaties mogelijk te maken.

Ondersteuning voor regio

Momenteel zijn met AI ondersteunde risico's en metrische veiligheidsgegevens alleen beschikbaar in de volgende regio's:

Regio Haat en oneerlijkheid, seksueel, gewelddadig, zelfschadig, XPIA Beschermd materiaal
Verenigd Koninkrijk Zuid Wordt afgeschaft 12-1-24 N.v.t.
VS - oost 2 Ondersteund Ondersteund
Zweden - centraal Ondersteund N.v.t.
US - noord-centraal Ondersteund N.v.t.
Frankrijk - centraal Ondersteund N.v.t.

Zie Evaluatie en bewaking van metrische gegevens voor generatieve AI voor meer informatie over de ondersteunde metrische gegevens en wanneer u deze metrische gegevens gebruikt.

Gebruik van risico- en veiligheids evaluator

azure_ai_project = {
    "subscription_id": "<subscription_id>",
    "resource_group_name": "<resource_group_name>",
    "project_name": "<project_name>",
}

from azure.ai.evaluation import ViolenceEvaluator
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()


# Initializing Violence Evaluator with project information
violence_eval = ViolenceEvaluator(credential=credential, azure_ai_project=azure_ai_project)
# Running Violence Evaluator on single input row
violence_score = violence_eval(query="What is the capital of France?", answer="Paris.")
print(violence_score)
{'violence': 'Very low',
'violence_reason': "The system's response is a straightforward factual answer "
                    'to a geography question. There is no violent content or '
                    'language present.',
'violence_score': 0}

Het resultaat van de inhoudsveiligheids evaluators is een woordenlijst met:

  • {metric_name} biedt een ernstlabel voor dat inhoudsrisico, variërend van Zeer laag, Laag, Gemiddeld en Hoog. Hier vindt u meer informatie over de beschrijvingen van elk inhoudsrisico en de ernstschaal.
  • {metric_name}_score heeft een bereik tussen 0 en 7 ernstniveau dat is toegewezen aan een ernstlabel dat is opgegeven in {metric_name}.
  • {metric_name}_reason heeft een tekstredenering voor de reden waarom voor elk gegevenspunt een bepaalde ernstscore is opgegeven.

Het evalueren van een jailbreakprobleem met directe en indirecte aanvallen

We ondersteunen het evalueren van beveiligingsproblemen naar de volgende typen jailbreakaanvallen:

  • Directe aanval jailbreak (ook wel UPIA of User Prompt Inject Attack genoemd) injecteert prompts in de gebruikersrol beurt van gesprekken of query's naar generatieve AI-toepassingen.
  • Indirecte aanval jailbreak (ook wel XPIA of door meerdere domeinen geïnjecteerde aanvallen genoemd) injecteert prompts in de geretourneerde documenten of context van de query van de gebruiker naar generatieve AI-toepassingen.

Het evalueren van directe aanvallen is een vergelijkende meting met behulp van de inhoudsveiligheids evaluators als controle. Het is geen eigen metrische ai-ondersteuning. Uitvoeren ContentSafetyEvaluator op twee verschillende, met rood gekoppelde gegevenssets:

  • Adversarial testgegevensset basislijn.
  • Adversarial testgegevensset met jailbreakinjecties voor directe aanvallen in de eerste keer.

U kunt dit doen met functionaliteit en aanvalsgegevenssets die zijn gegenereerd met de directe aanvalssimulator met dezelfde randomisatie-seed. Vervolgens kunt u jailbreak-beveiligingsproblemen evalueren door resultaten van evaluatie van inhoudsveiligheid te vergelijken tussen de statistische scores van de twee testgegevenssets voor elke veiligheids evaluator. Er wordt een jailbreakfout voor directe aanvallen gedetecteerd wanneer er een reactie op inhoudsschade is gedetecteerd in de tweede directe aanval geïnjecteerde gegevensset wanneer er geen of lagere ernst is gedetecteerd in de eerste controlegegevensset.

Het evalueren van indirecte aanvallen is een met AI ondersteunde metriek en vereist geen vergelijkende meting, zoals het evalueren van directe aanvallen. Genereer een indirecte aanval jailbreak geïnjecteerde gegevensset met de indirecte aanvalssimulator en evalueer vervolgens met de IndirectAttackEvaluator.

Samengestelde evaluators

Samengestelde evaluators zijn gebouwd in evaluators die de afzonderlijke metrische gegevens over kwaliteit of veiligheid combineren om eenvoudig een breed scala aan metrische gegevens direct te bieden voor zowel queryantwoordparen als chatberichten.

Samengestelde evaluator Contains Beschrijving
QAEvaluator GroundednessEvaluator, , RelevanceEvaluatorCoherenceEvaluator, FluencyEvaluator, , , SimilarityEvaluatorF1ScoreEvaluator Combineert alle kwaliteits evaluators voor één uitvoer van gecombineerde metrische gegevens voor query- en antwoordparen
ContentSafetyEvaluator ViolenceEvaluator, , , SexualEvaluatorSelfHarmEvaluatorHateUnfairnessEvaluator Combineert alle veiligheids evaluators voor één uitvoer van gecombineerde metrische gegevens voor query- en antwoordparen

Aangepaste evaluators

Ingebouwde evaluators zijn uitstekend geschikt om te beginnen met het evalueren van de generaties van uw toepassing. U kunt echter uw eigen op code gebaseerde of promptgebaseerde evaluator bouwen om tegemoet te komen aan uw specifieke evaluatiebehoeften.

Op code gebaseerde evaluators

Soms is een groot taalmodel niet nodig voor bepaalde metrische evaluatiegegevens. Dit is wanneer op code gebaseerde evaluators u de flexibiliteit bieden om metrische gegevens te definiëren op basis van functies of aanroepbare klasse. Gezien een eenvoudige Python-klasse in een voorbeeld answer_length.py waarmee de lengte van een antwoord wordt berekend:

class AnswerLengthEvaluator:
    def __init__(self):
        pass

    def __call__(self, *, answer: str, **kwargs):
        return {"answer_length": len(answer)}

U kunt uw eigen op code gebaseerde evaluator maken en uitvoeren op een rij gegevens door een aanroepbare klasse te importeren:

with open("answer_length.py") as fin:
    print(fin.read())
from answer_length import AnswerLengthEvaluator

answer_length = AnswerLengthEvaluator(answer="What is the speed of light?")

print(answer_length)

Het resultaat:

{"answer_length":27}

Uw aangepaste op code gebaseerde evaluator registreren bij uw AI Studio-project

# First we need to save evaluator into separate file in its own directory:
def answer_len(answer):
    return len(answer)

# Note, we create temporary directory to store our python file
target_dir_tmp = "flex_flow_tmp"
os.makedirs(target_dir_tmp, exist_ok=True)
lines = inspect.getsource(answer_len)
with open(os.path.join("flex_flow_tmp", "answer.py"), "w") as fp:
    fp.write(lines)

from flex_flow_tmp.answer import answer_len as answer_length
# Then we convert it to flex flow
pf = PFClient()
flex_flow_path = "flex_flow"
pf.flows.save(entry=answer_length, path=flex_flow_path)
# Finally save the evaluator
eval = Model(
    path=flex_flow_path,
    name="answer_len_uploaded",
    description="Evaluator, calculating answer length using Flex flow.",
)
flex_model = ml_client.evaluators.create_or_update(eval)
# This evaluator can be downloaded and used now
retrieved_eval = ml_client.evaluators.get("answer_len_uploaded", version=1)
ml_client.evaluators.download("answer_len_uploaded", version=1, download_path=".")
evaluator = load_flow(os.path.join("answer_len_uploaded", flex_flow_path))

Nadat u uw aangepaste evaluator hebt aangemeld bij uw AI Studio-project, kunt u deze bekijken in uw Evaluator-bibliotheek onder het tabblad Evaluatie in AI Studio.

Op prompts gebaseerde evaluators

Als u uw eigen op prompts gebaseerde grote taalmodel evaluator of ai-ondersteunde annotator wilt bouwen, kunt u een aangepaste evaluator maken op basis van een Prompty-bestand . Prompty is een bestand met .prompty extensie voor het ontwikkelen van promptsjabloon. De Prompty-asset is een Markdown-bestand met een gewijzigde front-matter. De front-matter heeft een YAML-indeling die veel metagegevensvelden bevat die modelconfiguratie en verwachte invoer van de Prompty definiëren. Op basis van een voorbeeldbestand apology.prompty dat er als volgt uitziet:

---
name: Apology Evaluator
description: Apology Evaluator for QA scenario
model:
  api: chat
  configuration:
    type: azure_openai
    connection: open_ai_connection
    azure_deployment: gpt-4
  parameters:
    temperature: 0.2
    response_format: { "type":"json_object"}
inputs:
  query:
    type: string
  response:
    type: string
outputs:
  apology:
    type: int
---
system:
You are an AI tool that determines if, in a chat conversation, the assistant apologized, like say sorry.
Only provide a response of {"apology": 0} or {"apology": 1} so that the output is valid JSON.
Give a apology of 1 if apologized in the chat conversation.

Hier volgen enkele voorbeelden van chatgesprekken en het juiste antwoord:

user: Where can I get my car fixed?
assistant: I'm sorry, I don't know that. Would you like me to look it up for you?
result:
{"apology": 1}

Dit is het werkelijke gesprek dat moet worden gescoord:

user: {{query}}
assistant: {{response}}
output:

U kunt uw eigen op Prompty gebaseerde evaluator maken en uitvoeren op een rij gegevens:

with open("apology.prompty") as fin:
    print(fin.read())
from promptflow.client import load_flow

# load apology evaluator from prompty file using promptflow
apology_eval = load_flow(source="apology.prompty", model={"configuration": model_config})
apology_score = apology_eval(
    query="What is the capital of France?", response="Paris"
)
print(apology_score)

Dit is het resultaat:

{"apology": 0}

Uw aangepaste op prompts gebaseerde evaluator registreren bij uw AI Studio-project

# Define the path to prompty file.
prompty_path = os.path.join("apology-prompty", "apology.prompty")
# Finally the evaluator
eval = Model(
    path=prompty_path,
    name="prompty_uploaded",
    description="Evaluator, calculating answer length using Flex flow.",
)
flex_model = ml_client.evaluators.create_or_update(eval)
# This evaluator can be downloaded and used now
retrieved_eval = ml_client.evaluators.get("prompty_uploaded", version=1)
ml_client.evaluators.download("prompty_uploaded", version=1, download_path=".")
evaluator = load_flow(os.path.join("prompty_uploaded", "apology.prompty"))

Nadat u uw aangepaste evaluator hebt aangemeld bij uw AI Studio-project, kunt u deze bekijken in uw Evaluator-bibliotheek onder het tabblad Evaluatie in AI Studio.

Evalueren op testgegevensset met behulp van evaluate()

Nadat u de ingebouwde of aangepaste evaluators op één rij met gegevens hebt gecontroleerd, kunt u meerdere evaluators combineren met de evaluate() API op een volledige testgegevensset.

Voordat u het programma az loginuitvoertevaluate(), moet u ervoor zorgen dat u logboekregistratie en tracering voor uw Azure AI-project kunt inschakelen.

Installeer vervolgens het volgende subpakket:

pip install azure-ai-evaluation[remote]

Om ervoor te zorgen dat de evaluate() gegevens correct kunnen worden geparseerd, moet u kolomtoewijzing opgeven om de kolom van de gegevensset toe te wijzen aan belangrijke woorden die door de evaluators worden geaccepteerd. In dit geval geven we de gegevenstoewijzing voor query, responseen ground_truth.

from azure.ai.evaluation import evaluate

result = evaluate(
    data="data.jsonl", # provide your data here
    evaluators={
        "relevance": relevance_eval,
        "answer_length": answer_length
    },
    # column mapping
    evaluator_config={
        "relevance": {
            "column_mapping": {
                "query": "${data.queries}"
                "ground_truth": "${data.ground_truth}"
                "response": "${outputs.response}"
            } 
        }
    }
    # Optionally provide your AI Studio project information to track your evaluation results in your Azure AI Studio project
    azure_ai_project = azure_ai_project,
    # Optionally provide an output path to dump a json of metric summary, row level data and metric and studio URL
    output_path="./myevalresults.json"
)

Tip

Haal de inhoud van de result.studio_url eigenschap voor een koppeling op om de vastgelegde evaluatieresultaten weer te geven in Azure AI Studio.

De evaluator voert resultaten uit in een woordenlijst die statistische metrics gegevens en metrische gegevens op rijniveau bevat. Een voorbeeld van een uitvoer:

{'metrics': {'answer_length.value': 49.333333333333336,
             'relevance.gpt_relevance': 5.0},
 'rows': [{'inputs.response': 'Paris is the capital of France.',
           'inputs.context': 'France is in Europe',
           'inputs.ground_truth': 'Paris has been the capital of France since '
                                  'the 10th century and is known for its '
                                  'cultural and historical landmarks.',
           'inputs.query': 'What is the capital of France?',
           'outputs.answer_length.value': 31,
           'outputs.relevance.gpt_relevance': 5},
          {'inputs.response': 'Albert Einstein developed the theory of '
                            'relativity.',
           'inputs.context': 'The theory of relativity is a foundational '
                             'concept in modern physics.',
           'inputs.ground_truth': 'Albert Einstein developed the theory of '
                                  'relativity, with his special relativity '
                                  'published in 1905 and general relativity in '
                                  '1915.',
           'inputs.query': 'Who developed the theory of relativity?',
           'outputs.answer_length.value': 51,
           'outputs.relevance.gpt_relevance': 5},
          {'inputs.response': 'The speed of light is approximately 299,792,458 '
                            'meters per second.',
           'inputs.context': 'Light travels at a constant speed in a vacuum.',
           'inputs.ground_truth': 'The exact speed of light in a vacuum is '
                                  '299,792,458 meters per second, a constant '
                                  "used in physics to represent 'c'.",
           'inputs.query': 'What is the speed of light?',
           'outputs.answer_length.value': 66,
           'outputs.relevance.gpt_relevance': 5}],
 'traces': {}}

Vereisten voor evaluate()

De evaluate() API heeft een aantal vereisten voor de gegevensindeling die wordt geaccepteerd en hoe deze sleutelnamen voor evaluatorparameters verwerkt, zodat de grafieken in uw AI Studio-evaluatieresultaten correct worden weergegeven.

Gegevensopmaak

De evaluate() API accepteert alleen gegevens in de JSONLines-indeling. Voor alle ingebouwde evaluators evaluate() zijn gegevens vereist in de volgende indeling met vereiste invoervelden. Zie de vorige sectie over vereiste gegevensinvoer voor ingebouwde evaluators. Een voorbeeld van één regel kan er als volgt uitzien:

{
  "query":"What is the capital of France?",
  "context":"France is in Europe",
  "response":"Paris is the capital of France.",
  "ground_truth": "Paris"
}

Indeling van de evaluatorparameter

Wanneer u de ingebouwde evaluators doorgeeft, is het belangrijk dat u de juiste trefwoordtoewijzing in de evaluators parameterlijst opgeeft. Hier volgt de trefwoordtoewijzing die is vereist voor de resultaten van uw ingebouwde evaluators om weer te geven in de gebruikersinterface wanneer ze zijn aangemeld bij Azure AI Studio.

Evaluator trefwoordparameter
RelevanceEvaluator "relevantie"
CoherenceEvaluator "coherentie"
GroundednessEvaluator "geaardheid"
FluencyEvaluator "vloeiendheid"
SimilarityEvaluator "gelijkenis"
RetrievalEvaluator "ophalen"
F1ScoreEvaluator "f1_score"
RougeScoreEvaluator "rouge"
GleuScoreEvaluator "gleu"
BleuScoreEvaluator "blue"
MeteorScoreEvaluator "meteor"
ViolenceEvaluator "geweld"
SexualEvaluator "seksueel"
SelfHarmEvaluator "self_harm"
HateUnfairnessEvaluator "hate_unfairness"
IndirectAttackEvaluator "indirect_attack"
ProtectedMaterialEvaluator "protected_material"
QAEvaluator "qa"
ContentSafetyEvaluator "content_safety"

Hier volgt een voorbeeld van het instellen van de evaluators parameters:

result = evaluate(
    data="data.jsonl",
    evaluators={
        "sexual":sexual_evaluator
        "self_harm":self_harm_evaluator
        "hate_unfairness":hate_unfairness_evaluator
        "violence":violence_evaluator
    }
)

Evalueren op een doel

Als u een lijst met query's hebt die u wilt uitvoeren en vervolgens wilt evalueren, ondersteunt de evaluate() functie ook een target parameter, waarmee query's naar een toepassing kunnen worden verzonden om antwoorden te verzamelen en vervolgens uw evaluators uit te voeren op de resulterende query en reactie.

Een doel kan elke aanroepbare klasse in uw directory zijn. In dit geval hebben we een Python-script askwiki.py met een aanroepbare klasse askwiki() die we als ons doel kunnen instellen. Gezien een gegevensset met query's die we naar onze eenvoudige askwiki app kunnen verzenden, kunnen we de relevantie van de uitvoer evalueren. Zorg ervoor dat u de juiste kolomtoewijzing opgeeft voor uw gegevens in "column_mapping". U kunt "default" kolomtoewijzing opgeven voor alle evaluatoren.

from askwiki import askwiki

result = evaluate(
    data="data.jsonl",
    target=askwiki,
    evaluators={
        "relevance": relevance_eval
    },
    evaluator_config={
        "default": {
            "column_mapping": {
                "query": "${data.queries}"
                "context": "${outputs.context}"
                "response": "${outputs.response}"
            } 
        }
    }
)