Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Anmärkning
Det här dokumentet refererar till Microsoft Foundry-portalen (klassisk).
🔍 Visa dokumentationen för Microsoft Foundry (ny) för att lära dig mer om den nya portalen.
I den här självstudien utvärderar du chattappen som du skapade i del 2 i självstudieserien. Du utvärderar appens kvalitet i flera mått och itererar sedan förbättringar. I den här delen kommer du att:
- Skapa en utvärderingsdatauppsättning
- Utvärdera chattappen med Azure AI-utvärderare
- Iterera och förbättra din app
Den här självstudien bygger på del 2: Skapa en anpassad chattapp med Microsoft Foundry SDK.
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 kostnadsfritt Azure-konto, som innehåller en kostnadsfri utvärderingsprenumeration.
- Om du inte har något skapar du ett hubbbaserat projekt.
- Slutför del 2 av självstudieserien för att skapa chattprogrammet.
- Använd samma hubbbaserade projekt som du skapade i del 1.
- Azure AI-behörigheter: Rollen Ägare eller Deltagare för att kunna ändra hastighetsbegränsningar för modellslutpunkter och utföra utvärderingsjobb.
- Se till att du slutför stegen för att lägga till telemetriloggning från del 2.
Skapa en utvärderingsdatauppsättning
Använd följande utvärderingsdatauppsättning, som innehåller exempelfrågor och förväntade svar. Använd den här datauppsättningen med get_chat_response() en utvärderare och målfunktionen för att utvärdera chattappens prestanda över relevans, förankring och sammanhang.
Skapa en fil med namnet chat_eval_data.jsonl i mappen tillgångar .
Klistra in den här datamängden i filen:
{"query": "Which tent is the most waterproof?", "truth": "The Alpine Explorer Tent has the highest rainfly waterproof rating at 3000m"} {"query": "Which camping table holds the most weight?", "truth": "The Adventure Dining Table has a higher weight capacity than all of the other camping tables mentioned"} {"query": "How much do the TrailWalker Hiking Shoes cost? ", "truth": "The Trailewalker Hiking Shoes are priced at $110"} {"query": "What is the proper care for trailwalker hiking shoes? ", "truth": "After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth."} {"query": "What brand is TrailMaster tent? ", "truth": "OutdoorLiving"} {"query": "How do I carry the TrailMaster tent around? ", "truth": " Carry bag included for convenient storage and transportation"} {"query": "What is the floor area for Floor Area? ", "truth": "80 square feet"} {"query": "What is the material for TrailBlaze Hiking Pants?", "truth": "Made of high-quality nylon fabric"} {"query": "What color does TrailBlaze Hiking Pants come in?", "truth": "Khaki"} {"query": "Can the warrenty for TrailBlaze pants be transfered? ", "truth": "The warranty is non-transferable and applies only to the original purchaser of the TrailBlaze Hiking Pants. It is valid only when the product is purchased from an authorized retailer."} {"query": "How long are the TrailBlaze pants under warranty for? ", "truth": " The TrailBlaze Hiking Pants are backed by a 1-year limited warranty from the date of purchase."} {"query": "What is the material for PowerBurner Camping Stove? ", "truth": "Stainless Steel"} {"query": "Is France in Europe?", "truth": "Sorry, I can only queries related to outdoor/camping gear and equipment"}Referenser: JSONL-format för utvärderingsdatauppsättningar.
Utvärdera med Azure AI-utvärderare
Skapa ett utvärderingsskript som genererar en målfunktionsomslutning, läser in din datauppsättning, kör utvärderingen och loggar resultatet till ditt Foundry-projekt.
Skapa en fil med namnet evaluate.py i huvudmappen.
Lägg till följande kod för att importera de bibliotek som krävs, skapa en projektklient och konfigurera vissa inställningar:
import os import pandas as pd from azure.ai.projects import AIProjectClient from azure.ai.projects.models import ConnectionType from azure.ai.evaluation import evaluate, GroundednessEvaluator from azure.identity import DefaultAzureCredential from chat_with_products import chat_with_products # load environment variables from the .env file at the root of this repo from dotenv import load_dotenv load_dotenv() # create a project client using environment variables loaded from the .env file project = AIProjectClient.from_connection_string( conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) connection = project.connections.get_default(connection_type=ConnectionType.AZURE_OPEN_AI, include_credentials=True) evaluator_model = { "azure_endpoint": connection.endpoint_url, "azure_deployment": os.environ["EVALUATION_MODEL"], "api_version": "2024-06-01", "api_key": connection.key, } groundedness = GroundednessEvaluator(evaluator_model)Referenser: AIProjectClient, DefaultAzureCredential, azure-ai-evaluation.
Lägg till kod för att skapa en omslutningsfunktion som implementerar utvärderingsgränssnittet för utvärdering av frågor och svar:
def evaluate_chat_with_products(query): response = chat_with_products(messages=[{"role": "user", "content": query}]) return {"response": response["message"].content, "context": response["context"]["grounding_data"]}Referenser: azure-ai-evaluation, utvärderingsmålfunktioner.
Lägg slutligen till kod för att köra utvärderingen, visa resultatet lokalt och få en länk till utvärderingsresultaten i Foundry-portalen:
# Evaluate must be called inside of __main__, not on import if __name__ == "__main__": from config import ASSET_PATH # workaround for multiprocessing issue on linux from pprint import pprint from pathlib import Path import multiprocessing import contextlib with contextlib.suppress(RuntimeError): multiprocessing.set_start_method("spawn", force=True) # run evaluation with a dataset and target function, log to the project result = evaluate( data=Path(ASSET_PATH) / "chat_eval_data.jsonl", target=evaluate_chat_with_products, evaluation_name="evaluate_chat_with_products", evaluators={ "groundedness": groundedness, }, evaluator_config={ "default": { "query": {"${data.query}"}, "response": {"${target.response}"}, "context": {"${target.context}"}, } }, azure_ai_project=project.scope, output_path="./myevalresults.json", ) tabular_result = pd.DataFrame(result.get("rows")) pprint("-----Summarized Metrics-----") pprint(result["metrics"]) pprint("-----Tabular Result-----") pprint(tabular_result) pprint(f"View evaluation results in AI Studio: {result['studio_url']}")Referenser: azure-ai-evaluation, AIProjectClient.
Konfigurera utvärderingsmodellen
Utvärderingsskriptet anropar modellen många gånger. Överväg att öka antalet token per minut för utvärderingsmodellen.
I del 1 av den här självstudieserien skapade du en .env-fil som anger namnet på utvärderingsmodellen, gpt-4o-mini. Försök att öka gränsen för token per minut för den här modellen om du har en tillgänglig kvot. Oroa dig inte om du inte har tillräckligt med kvot för att öka värdet. Skriptet är utformat för att hantera gränsfel.
- I projektet i Foundry-portalen väljer du Modeller + slutpunkter.
- Välj gpt-4o-mini.
- Välj Redigera.
- Om du har en kvot ökar du gränsen för token per minut till 30 eller mer.
- Välj Spara och stäng.
Kör utvärderingsskriptet
Logga in på ditt Azure-konto från konsolen med hjälp av Azure CLI:
az loginInstallera de paket som krävs:
pip install openai pip install azure-ai-evaluation[remote]Referenser: azure-ai-evaluation SDK, utvärderings-SDK-dokumentation.
Verifiera utvärderingskonfigurationen
Innan du kör den fullständiga utvärderingen (vilket tar 5–10 minuter) kontrollerar du att SDK:et och projektanslutningen fungerar genom att köra det här snabbtestet:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
# Test that you can connect to your project
project = AIProjectClient.from_connection_string(
conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential()
)
print("Evaluation SDK is ready! You can now run evaluate.py")
Om du ser "Evaluation SDK is ready!"är konfigurationen klar och du kan fortsätta.
Referenser: AIProjectClient, DefaultAzureCredential.
Starta utvärderingen
Kör utvärderingsskriptet:
python evaluate.py
Utvärderingen tar 5–10 minuter att slutföra. Du kan se timeout-varningar och hastighetsbegränsningsfel. Skriptet hanterar dessa fel automatiskt och fortsätter bearbetningen.
Tolka utvärderingsutdata
I konsolens utdata ser du ett svar på varje fråga, följt av en tabell med sammanfattade mått som visar relevans, grund och konsekvenspoäng. Poängen varierar från 0 (sämsta) till 4 (bäst) för GPT-assisterade mått. Leta efter poäng med låg grund för att identifiera svar som inte stöds bra av referensdokumenten och låga relevanspoäng för att identifiera svar utanför ämnet.
Du kan se många WARNING:opentelemetry.attributes: meddelanden och timeout-fel. Du kan ignorera dessa meddelanden utan att oroa dig. De påverkar inte utvärderingsresultaten. Utvärderingsskriptet är utformat för att hantera hastighetsbegränsningsfel och fortsätta bearbetningen.
Resultatet av utvärderingen innehåller också en länk för att visa detaljerade resultat i Foundry-portalen, där du kan jämföra utvärderingskörningar sida vid sida och spåra förbättringar över tid.
====================================================
'-----Summarized Metrics-----'
{'groundedness.gpt_groundedness': 1.6666666666666667,
'groundedness.groundedness': 1.6666666666666667}
'-----Tabular Result-----'
outputs.response ... line_number
0 Could you specify which tent you are referring... ... 0
1 Could you please specify which camping table y... ... 1
2 Sorry, I only can answer queries related to ou... ... 2
3 Could you please clarify which aspects of care... ... 3
4 Sorry, I only can answer queries related to ou... ... 4
5 The TrailMaster X4 Tent comes with an included... ... 5
6 (Failed) ... 6
7 The TrailBlaze Hiking Pants are crafted from h... ... 7
8 Sorry, I only can answer queries related to ou... ... 8
9 Sorry, I only can answer queries related to ou... ... 9
10 Sorry, I only can answer queries related to ou... ... 10
11 The PowerBurner Camping Stove is designed with... ... 11
12 Sorry, I only can answer queries related to ou... ... 12
[13 rows x 8 columns]
('View evaluation results in Foundry portal: '
'https://xxxxxxxxxxxxxxxxxxxxxxx')
Iterera och förbättra
Utvärderingsresultaten visar att svaren ofta inte är väl förankrade i referensdokumenten. För att förbättra grunderna ändrar du systemprompten i filen assets/grounded_chat.prompty för att uppmuntra modellen att använda referensdokumenten mer direkt.
Aktuell fråga (problematisk):
If the question is not related to outdoor/camping gear and clothing, just say 'Sorry, I only can answer queries related to outdoor/camping gear and clothing. So, how can I help?'
If the question is related to outdoor/camping gear and clothing but vague, ask clarifying questions.
Förbättrad fråga:
If the question is related to outdoor/camping gear and clothing, answer based on the reference documents provided.
If you cannot find information in the reference documents, say: 'I don't have information about that specific topic. Let me help with related products or try a different question.'
For vague questions, ask clarifying questions to better assist.
När du har uppdaterat prompten:
Spara filen.
Kör utvärderingsskriptet igen:
python evaluate.pyJämför de nya utvärderingsresultaten med föregående körning. Du bör se förbättrade tillförlitlighetspoäng.
Prova ytterligare ändringar som:
- Ändra systemprompten för att fokusera på noggrannhet över fullständighet
- Testa med en annan modell (till exempel
gpt-4-turboom det är tillgängligt) - Justera kontexthämtningen för att returnera mer relevanta dokument
Varje iteration hjälper dig att förstå vilka ändringar som förbättrar specifika mått.
Rensa resurser
För att undvika onödiga Azure-kostnader tar du bort de resurser som du skapade i den här självstudien om de inte längre behövs. Om du vill hantera resurser kan du använda Azure Portal.