Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller endast för:Foundry-portalen (klassisk). Den här artikeln är inte tillgänglig för den nya Foundry-portalen.
Läs mer om den nya portalen.
Observera
Länkar i den här artikeln kan öppna innehåll i den nya Microsoft Foundry-dokumentationen i stället för den foundry-dokumentation (klassisk) som du visar nu.
Varning
Prompt flow i Microsoft Foundry och Azure Machine Learning kommer att upphöra den 20 april 2027. Prompt flow rekommenderas inte längre för ny utveckling. Migrera befintliga promptflödesprogram och distributioner till Microsoft Agent Framework före den 20 april 2027.
Containeravbildningar för Prompt flow uppdateras inte längre, inklusive säkerhets- och paketuppdateringar. Detta gäller för runtime-avbildningar för promptflöde, inklusive promptflow-runtime, promptflow-runtime-stableoch promptflow-python.
Efter den 20 april 2027 kommer Prompt-flödet, inklusive webbredigeringsupplevelsen i Microsoft Foundry och Azure Machine Learning, VS Code-tilläggen och relaterade containeravbildningar för promptflöde, inte längre att stödjas eller vara tillgängliga.
Om ditt program är beroende av Prompt flow-distributioner eller körningsimages bör du planera att flytta dessa arbetsbelastningar till alternativ som stöds, till exempel Microsoft Agent Framework, före utfasningsdatumet. Migreringsvägledning finns i guiden För snabbflödesmigrering och kodexempel för migrering.
Utvärderingsflöden är särskilda typer av flöden som utvärderar hur väl utdata från en körning överensstämmer med specifika kriterier och mål.
I promptflöde kan du anpassa eller skapa ett eget utvärderingsflöde som är anpassat efter dina uppgifter och mål och sedan använda det för att utvärdera andra flöden. I det här dokumentet lär du dig:
- Så här utvecklar du en utvärderingsmetod.
- Förstå indata, utdata och loggningsmått för utvärderingar av promptflöden.
Förutsättningar
Viktigt
Den här artikeln innehåller äldre stöd för hubbbaserade projekt. Det fungerar inte för Foundry-projekt. Se Hur vet jag vilken typ av projekt jag har?
SDK-kompatibilitetsanteckning: Kodexempel kräver en specifik Microsoft Foundry SDK-version. Om du stöter på kompatibilitetsproblem kan du överväga att migrera från en hubbbaserad till ett Foundry-projekt.
- Ett Azure konto med en aktiv prenumeration. Om du inte har ett skapar du ett fritt Azure konto, som innehåller en kostnadsfri utvärderingsprenumeration.
- Om du inte har något skapar du ett hubbbaserat projekt.
Börjar utveckla en utvärderingsmetod
Det finns två sätt att utveckla egna utvärderingsmetoder:
Anpassa ett inbyggt utvärderingsflöde: Ändra ett inbyggt utvärderingsflöde.
- Under Skapa och anpassa väljer du Instruktionsflöde.
- Välj Skapa för att öppna flödesguiden.
- I flödesgalleriet under Utforska galleri väljer du Utvärderingsflöde för att filtrera efter den typen. Välj ett exempel och klicka på Klona för att göra anpassningar.
Skapa ett nytt utvärderingsflöde från grunden: Utveckla en helt ny utvärderingsmetod från grunden.
- Under Skapa och anpassa väljer du Instruktionsflöde.
- Välj Skapa för att öppna flödesguiden.
- I flödesgalleriet under Skapa efter typ i rutan "Utvärderingsflöde" väljer du Skapa så kan du se en mall för utvärderingsflödet.
Förstå utvärderingen i prompt-flödet
I Prompt Flow är ett flöde en sekvens med noder som bearbetar indata och genererar utdata. Utvärderingsflöden tar också nödvändiga indata och producerar motsvarande utdata.
Några särskilda funktioner i utvärderingsmetoder är:
- De körs vanligtvis efter körningen som ska testas och tar emot utdata från den körningen.
- Förutom utdata från körningen som ska testas kan de också ta emot en annan datauppsättning som kan innehålla motsvarande grundsanningar.
- De kan ha en aggregeringsnod som beräknar den övergripande prestandan för flödet som testas baserat på de enskilda poängen.
- De kan logga mått med hjälp av
log_metric()funktionen .
Vi introducerar hur indata och utdata ska definieras i utvecklingen av utvärderingsmetoder.
Ingångar
En utvärdering körs efter en annan körning för att utvärdera hur väl utdata för den körningen överensstämmer med specifika kriterier och mål. Därför tar utvärderingen emot utdata som genereras från den körningen.
Andra indata kan också krävas, till exempel grundsanning, som kan komma från en datauppsättning. Som standard använder utvärderingen samma datauppsättning som testdatauppsättningen som tillhandahålls till den testade körningen. Men om motsvarande etiketter eller målgrunds sanningsvärden finns i en annan datauppsättning kan du enkelt växla till den.
För att kunna köra en utvärdering måste du därför ange källorna till dessa obligatoriska indata. När du lämnar in en utvärdering ser du ett avsnitt "indatamappning".
- Om datakällan kommer från körningsutdata anges källan som
${run.output.[OutputName]} - Om datakällan kommer från testdatauppsättningen anges källan som
${data.[ColumnName]}
Observera
Om utvärderingen inte kräver data från datauppsättningen behöver du inte referera till några datamängdskolumner i avsnittet för indatamappning, vilket indikerar att valet av datauppsättning är en valfri konfiguration. Valet av datauppsättning påverkar inte utvärderingsresultatet.
Beskrivning av indata
För att påminna om vilka indata som behövs för att beräkna mått kan du lägga till en beskrivning för varje nödvändig indata. Beskrivningarna visas när källorna mappas vid batchkörning av inlämning.
Om du vill lägga till beskrivningar för varje indata väljer du Visa beskrivning i indataavsnittet när du utvecklar utvärderingsmetoden. Och du kan välja "Dölj beskrivning" för att dölja beskrivningen.
Sedan visas den här beskrivningen när du använder den här utvärderingsmetoden i batchkörning.
Utdata och mått
Utdata från en utvärdering är de resultat som mäter prestanda för flödet som testas. Utdata innehåller vanligtvis mått som poäng och kan även innehålla text för resonemang och förslag.
Resultat på instansnivå
I promptflöde bearbetar flödet varje exempeldatauppsättning en i taget och genererar en utdatapost. På samma sätt finns det i de flesta utvärderingsfall ett mått för varje utdata, så att du kan kontrollera hur flödet presterar på varje enskild data.
Om du vill registrera poängen för varje dataexempel beräknar du poängen för varje utdata och loggar poängen som ett flödesutdata genom att ange den i utdataavsnittet. Den här redigeringsupplevelsen är densamma som att definiera ett standardflödesutdata.
Vi beräknar den här poängen i line_process noden, som du kan skapa och redigera från grunden när du skapar efter typ. Du kan också ersätta den här python-noden med en LLM-nod för att använda LLM för att beräkna poängen.
När den här utvärderingsmetoden används för att utvärdera ett annat flöde kan poäng på instansnivå visas på flikenÖversiktsutdata>.
Måttloggning och aggregeringsnod
Dessutom är det viktigt att ange en övergripande bedömning för körningen. Du kan kontrollera "set as aggregation" för en Python nod i ett utvärderingsflöde för att omvandla den till en "reduce"-nod, så att noden kan ta in indata ens en lista och bearbeta dem i batch.
På så sätt kan du beräkna och bearbeta alla poäng för varje flödesutdata och beräkna ett övergripande resultat för varje variant.
Du kan logga mått i en aggregeringsnod med hjälp av Prompt flow_sdk.log_metrics(). Måtten ska vara numeriska (float/int). Loggning av strängtypsmått stöds inte.
Vi beräknar den här poängen i aggregate noden, som du kan skapa och redigera från grunden när du skapar efter typ. Du kan också ersätta den här Python noden med en LLM-nod för att använda LLM för att beräkna poängen. Se följande exempel för att använda API:et log_metric i ett utvärderingsflöde:
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
När du anropade den här funktionen i noden Python behöver du inte tilldela den någon annanstans, och du kan visa måtten senare. När den här utvärderingsmetoden används i en batchkörning kan poäng på instansnivå visas på fliken Översiktsmått>.