Een evaluatiestroom ontwikkelen in Microsoft Foundry-portal (klassiek)

Alleen van toepassing op:Foundry (klassiek) portal. Dit artikel is niet beschikbaar voor de nieuwe Foundry-portal. Meer informatie over de nieuwe portal.

Opmerking

Koppelingen in dit artikel kunnen inhoud openen in de nieuwe Microsoft Foundry-documentatie in plaats van de Foundry-documentatie (klassiek) die u nu bekijkt.

Waarschuwing

Prompt flow in Microsoft Foundry en Azure Machine Learning wordt op 20 april 2027 uitgefaseerd. Prompt flow wordt niet langer aanbevolen voor nieuwe ontwikkeling. Migreer bestaande promptstroomtoepassingen en -implementaties naar Microsoft Agent Framework vóór 20 april 2027.

Prompt flow-containerimages worden niet langer bijgewerkt, waaronder beveiligings- en pakketupdates. Dit is van toepassing op de Prompt flow-runtime-installatiekopieën, waaronder promptflow-runtime, promptflow-runtime-stable en promptflow-python.

Na 20 april 2027 zullen Prompt flow, inclusief de webauthoring-ervaring in Microsoft Foundry en Azure Machine Learning, de VS Code-extensies en gerelateerde containerinstallatiekopieën van Prompt flow, niet langer worden ondersteund of beschikbaar zijn.

Als uw toepassing afhankelijk is van Prompt flow-implementaties of runtime-images, moet u plannen deze workloads vóór de uitfaseringsdatum te verplaatsen naar ondersteunde alternatieven, zoals Microsoft Agent Framework. Raadpleeg voor migratierichtlijnen de Prompt flow-migratiehandleiding en codevoorbeelden voor migratie.

Evaluatiestromen zijn speciale typen stromen die bepalen hoe goed de uitvoer van een uitvoering overeenkomt met specifieke criteria en doelstellingen.

In een promptstroom kunt u uw eigen evaluatiestroom aanpassen of maken die is afgestemd op uw taken en doelstellingen en deze vervolgens gebruiken om andere stromen te evalueren. In dit document leert u het volgende:

  • Een evaluatiemethode ontwikkelen.
  • Inzicht verkrijgen in invoer, uitvoer en logregistratie voor metrieken bij evaluaties van de promptstroom.

Voorwaarden

Belangrijk

Dit artikel biedt verouderde ondersteuning voor hubprojecten. Het werkt niet voor Foundry-projecten. Zie Hoe weet ik welk type project ik heb?

SDK-compatibiliteitsnotitie: codevoorbeelden vereisen een specifieke Microsoft Foundry SDK-versie. Als u compatibiliteitsproblemen ondervindt, kunt u overwegen om te migreren van een hub naar een Foundry-project.

Beginnen met het ontwikkelen van een evaluatiemethode

Er zijn twee manieren om uw eigen evaluatiemethoden te ontwikkelen:

  • Een ingebouwde evaluatiestroom aanpassen: Een ingebouwde evaluatiestroom wijzigen.

    1. Selecteer Bouwen en aanpassen en kies Promptstroom.
    2. Selecteer Maken om de wizard voor het maken van een workflow te openen.
    3. In de stroomgalerie onder Galerie Verkennen selecteer Evaluatiestroom om op dat type te filteren. Kies een voorbeeld en selecteer Klonen om aanpassingen uit te voeren.
  • Een nieuwe evaluatiestroom maken: Ontwikkel een gloednieuwe evaluatiemethode vanaf de basis.

    1. Selecteer Bouwen en aanpassen en kies Promptstroom.
    2. Selecteer Maken om de wizard voor het maken van een workflow te openen.
    3. Selecteer In de stroomgalerie onder Maken op type in het vak Evaluatiestroom de optie Maken . Vervolgens ziet u een sjabloon van de evaluatiestroom.

Meer informatie over de evaluatie in de promptstroom

In de promptstroom is een stroom een reeks knooppunten die een invoer verwerken en een uitvoer genereren. Evaluatiestromen nemen ook vereiste invoer en produceren bijbehorende uitvoer.

Enkele speciale functies van evaluatiemethoden zijn:

  • Ze worden meestal uitgevoerd na de testuitvoering en ontvangen de uitvoer van die uitvoering.
  • Afgezien van de uitvoer van de te testen run kunnen ze optioneel een andere dataset ontvangen die overeenkomstige grondwaarheden kan bevatten.
  • Ze hebben mogelijk een aggregatieknooppunt waarmee de algehele prestaties van de stroom worden berekend die wordt getest op basis van de afzonderlijke scores.
  • Ze kunnen metrische gegevens registreren met behulp van de log_metric() functie.

We introduceren hoe de invoer en uitvoer moeten worden gedefinieerd bij het ontwikkelen van evaluatiemethoden.

Ingangen

Een evaluatie wordt uitgevoerd na een andere uitvoering om te beoordelen hoe goed de uitvoer van die uitvoering overeenkomt met specifieke criteria en doelstellingen. Daarom ontvangt de evaluatie de uitvoer die is gegenereerd op basis van die uitvoering.

Andere invoer kan ook nodig zijn, zoals grondwaarheid, die afkomstig kan zijn van een dataset. De evaluatie maakt standaard gebruik van dezelfde gegevensset als de testgegevensset die is opgegeven voor de geteste uitvoering. Als de bijbehorende labels of doelwaarden voor waarheidswaarden zich echter in een andere gegevensset bevinden, kunt u eenvoudig overschakelen naar die gegevensset.

Als u een evaluatie wilt uitvoeren, moet u daarom de bronnen van deze vereiste invoer aangeven. Hiervoor ziet u bij het indienen van een evaluatie een sectie "input mapping".

  • Als de gegevensbron afkomstig is van de uitvoer van uw run, wordt de bron aangegeven als ${run.output.[OutputName]}
  • Als de gegevensbron afkomstig is uit uw testgegevensset, wordt de bron aangegeven als ${data.[ColumnName]}

Opmerking

Als uw evaluatie geen gegevens uit de gegevensset vereist, hoeft u niet te verwijzen naar gegevenssetkolommen in de sectie invoertoewijzing, waarmee wordt aangegeven dat de selectie van de gegevensset een optionele configuratie is. De selectie van de gegevensset heeft geen invloed op het evaluatieresultaat.

Beschrijving van invoer

Als u wilt herinneren welke invoer nodig is om metrische gegevens te berekenen, kunt u een beschrijving toevoegen voor elke vereiste invoer. De beschrijvingen worden weergegeven tijdens het toewijzen van de bronnen bij het indienen van de batchverwerking.

Als u beschrijvingen voor elke invoer wilt toevoegen, selecteert u Beschrijving weergeven in de invoersectie bij het ontwikkelen van uw evaluatiemethode. En u kunt 'Beschrijving verbergen' selecteren om de beschrijving te verbergen.

Vervolgens wordt deze beschrijving weergegeven bij het gebruik van deze evaluatiemethode in batchuitvoeringsverzending.

Uitvoer en metrische gegevens

De uitvoer van een evaluatie is de resultaten waarmee de prestaties van het geteste proces worden gemeten. De uitvoer bevat meestal metrische gegevens, zoals scores, en kan ook tekst bevatten voor redenering en suggesties.

Uitvoer van scores op exemplaarniveau

In de prompt flow wordt elke voorbeeldgegevensset één voor één verwerkt en genereert een uitvoerrecord. In de meeste evaluatiescenario's is er ook een metriek voor elke uitvoer, zodat u kunt controleren hoe het proces presteert op elk afzonderlijk gegeven.

Als u de score voor elk gegevensvoorbeeld wilt vastleggen, berekent u de score voor elke uitvoer en registreert u de score als stroomuitvoer door deze in te stellen in de uitvoersectie. Deze ontwerpervaring is hetzelfde als het definiëren van een standaardstroomuitvoer.

We berekenen deze score in het line_process-knooppunt, dat u helemaal zelf kunt maken en bewerken bij het aanmaken op basis van type. U kunt dit Python-knooppunt ook vervangen door een LLM-knooppunt om LLM te gebruiken om de score te berekenen.

Wanneer deze evaluatiemethode wordt gebruikt om een andere stroom te evalueren, kan de score op exemplaarniveau worden weergegeven op het tabbladOverzichtsuitvoer>.

Logboekregistratie en aggregatieknooppunt voor metrische gegevens

Daarnaast is het ook belangrijk om een algemene score voor de uitvoering te geven. U kunt de "set as aggregation" van een Python knooppunt in een evaluatiestroom controleren om het om te zetten in een 'reduce'-knooppunt, zodat het knooppunt de invoer as een lijst kan opnemen en verwerken in batch.

Op deze manier kunt u alle scores van elke stroomuitvoer berekenen en verwerken en een totaalresultaat berekenen voor elke variant.

U kunt metrische gegevens registreren in een aggregatieknooppunt met prompt flow_sdk.log_metrics(). De metrische gegevens moeten numeriek zijn (float/int). Logboekregistratie van metrische gegevens van tekenreekstypen wordt niet ondersteund.

We berekenen deze score in het aggregate knooppunt, dat u helemaal zelf kunt maken en bewerken vanaf nul bij het creëren op type. U kunt dit Python knooppunt ook vervangen door een LLM-knooppunt om de LLM te gebruiken om de score te berekenen. Zie het volgende voorbeeld voor het gebruik van de log_metric API in een evaluatiestroom:

from typing import List
from promptflow import tool, log_metric

@tool
def calculate_accuracy(grades: List[str], variant_ids: List[str]):
    aggregate_grades = {}
    for index in range(len(grades)):
        grade = grades[index]
        variant_id = variant_ids[index]
        if variant_id not in aggregate_grades.keys():
            aggregate_grades[variant_id] = []
        aggregate_grades[variant_id].append(grade)

    # calculate accuracy for each variant
    for name, values in aggregate_grades.items():
        accuracy = round((values.count("Correct") / len(values)), 2)
        log_metric("accuracy", accuracy, variant_id=name)

    return aggregate_grades

Zoals u deze functie aangeroepen hebt in het knooppunt Python, hoeft u deze nergens anders toe te wijzen en kunt u de metrische gegevens later bekijken. Wanneer deze evaluatiemethode wordt gebruikt in een batchuitvoering, kan de score op exemplaarniveau worden weergegeven op het tabblad Overzicht-Metrische> gegevens .

Volgende stappen