Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí jenom pro:Portál Foundry (Classic). Tento článek není k dispozici pro nový portál Foundry.
Přečtěte si další informace o novém portálu.
Poznámka:
Odkazy v tomto článku můžou otevírat obsah v nové dokumentaci Microsoft Foundry místo dokumentace Foundry (classic), kterou si právě prohlížíte.
V tomto kurzu vyhodnotíte chatovací aplikaci, kterou jste vytvořili ve 2. části série kurzů. Vyhodnocujete kvalitu vaší aplikace napříč několika metrikami a pak iterujete o vylepšeních. V této části vy:
- Vytvoření testovací datové sady
- Vyhodnocení chatovací aplikace pomocí vyhodnocovačů umělé inteligence Azure
- Iterace a vylepšení aplikace
Tento kurz vychází z Part 2: Vytvoření vlastní chatovací aplikace pomocí sady Microsoft Foundry SDK.
Předpoklady
Důležité
Tento článek obsahuje starší verzi podpory pro projekty založené na centrech. Nebude fungovat u projektů Foundry. Viz Jak zjistím, jaký typ projektu mám?
Poznámky k kompatibilitě sady SDK: Příklady kódu vyžadují konkrétní verzi sady SDK Microsoft Foundry. Pokud narazíte na problémy s kompatibilitou, zvažte migraci z projektu založeného na uzlech na projekt Foundry.
- Účet Azure s aktivním předplatným. Pokud ho nemáte, vytvořte si účet free Azure, který zahrnuje bezplatné zkušební předplatné.
- Pokud ho nemáte, vytvořte projekt založený na centru.
- Dokončete 2. část série kurzů a sestavte chatovací aplikaci.
- Použijte stejný projekt založený na hubu, který jste vytvořili v části 1.
- Oprávnění Azure AI: Role vlastníka nebo přispěvatele pro úpravu limitů rychlosti koncových bodů modelu a provádění hodnotících úloh.
- Ujistěte se, že jste dokončili kroky pro přidání protokolování telemetrie z části 2.
Vytvoření zkušební datové sady
Použijte následující testovací datovou sadu, která obsahuje ukázkové otázky a očekávané odpovědi. Tuto datovou sadu použijte s vyhodnocovačem a get_chat_response() cílovou funkcí k vyhodnocení výkonu chatovací aplikace napříč metrikami relevance, uzemnění a soudržnosti.
Ve složce assets vytvořte soubor s názvem chat_eval_data.jsonl.
Vložte tuto datovou sadu do souboru:
{"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"}
Vyhodnocení pomocí vyhodnocovačů umělé inteligence Azure
Vytvořte zkušební skript, který vygeneruje obálku cílové funkce, načte datovou sadu, spustí vyhodnocení a zaprotokoluje výsledky do project Foundry.
V hlavní složce vytvořte soubor s názvem evaluate.py .
Přidejte následující kód pro import požadovaných knihoven, vytvoření klienta project a konfiguraci některých nastavení:
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)Odkazy: AIProjectClient, DefaultAzureCredential, azure-ai-evaluation.
Přidejte kód pro vytvoření funkce obálky, která implementuje rozhraní pro vyhodnocení dotazů a odpovědí:
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"]}Odkazy: azure-ai-evaluation, cílové funkce vyhodnocení.
Nakonec přidejte kód pro spuštění vyhodnocení, zobrazte výsledky místně a získejte odkaz na výsledky vyhodnocení na portálu Foundry:
# 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']}")Odkazy: azure-ai-evaluation, AIProjectClient.
Konfigurace zkušebního modelu
Hodnotící skript mnohokrát volá model. Zvažte zvýšení počtu tokenů za minutu pro model vyhodnocení.
V části 1 této série kurzů jste vytvořili soubor .env , který určuje název zkušebního modelu, gpt-4o-mini. Pokud máte dostupnou kvótu, zkuste pro tento model zvýšit limit tokenů za minutu. Pokud nemáte dostatečnou kvótu na zvýšení hodnoty, nemějte obavy. Skript je navržený tak, aby zpracovával chyby limitů.
- Na portálu Foundry projektu vyberte Modely + end pointy.
- Vyberte gpt-4o-mini.
- Vyberte možnost Upravit.
- Pokud máte kvótu, zvyšte limit počtu tokenů za minutu na 30 nebo více.
- Vyberte Uložit a zavřít.
Spuštění zkušebního skriptu
Z konzoly se přihlaste ke svému účtu Azure pomocí Azure CLI:
az loginNainstalujte požadované balíčky:
pip install openai pip install azure-ai-evaluation[remote]Reference: azure-ai-evaluation SDK, dokumentace k sadě Sdk pro vyhodnocení.
Ověření nastavení vyhodnocení
Před spuštěním úplného vyhodnocení (což trvá 5 až 10 minut), spuštěním tohoto rychlého testu ověřte, že sada SDK a vaše připojení project fungují:
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")
Pokud se zobrazí "Evaluation SDK is ready!", nastavení je hotové a můžete pokračovat.
Odkazy: AIProjectClient, DefaultAzureCredential.
Zahájení vyhodnocení
Spusťte zkušební skript:
python evaluate.py
Dokončení vyhodnocení trvá 5 až 10 minut. Může se zobrazit upozornění časového limitu a chyby omezení rychlosti. Skript zpracovává tyto chyby automaticky a pokračuje ve zpracování.
Interpretace výstupu vyhodnocení
Ve výstupu konzoly uvidíte odpověď na každou otázku následovanou tabulkou se souhrnnými metrikami zobrazující relevanci, uzemnění a skóre soudržnosti. Skóre se liší od 0 (nejhorší) do 4 (nejlepší) pro metriky s asistencí GPT. Hledejte nízké skóre relevantnosti k identifikaci odpovědí, které nejsou dobře podporovány referenčními dokumenty, a nízké skóre relevance pro odhalení odpovědí mimo téma.
Může se zobrazit mnoho WARNING:opentelemetry.attributes: zpráv a chyby překročení časového limitu. Tyto zprávy můžete klidně ignorovat. Nemají vliv na výsledky vyhodnocení. Zkušební skript je navržený tak, aby zpracovával chyby omezení rychlosti a pokračoval ve zpracování.
Výstup výsledků vyhodnocení obsahuje také odkaz na zobrazení podrobných výsledků na portálu Foundry, kde můžete porovnat zkušební spuštění vedle sebe a sledovat vylepšení v průběhu času.
====================================================
'-----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')
Iterace a vylepšení
Výsledky vyhodnocení ukazují, že odpovědi často nejsou dobře uzemněné v referenčních dokumentech. Pro zlepšení relevance upravte výzvu systému v souboru assets/grounded_chat.prompty, aby model více přímo využíval referenční dokumenty.
Aktuální výzva (problematická)::
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.
Vylepšená výzva:
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.
Po aktualizaci výzvy:
Uložte soubor.
Znovu spusťte zkušební skript:
python evaluate.pyPorovnejte nové výsledky vyhodnocení s předchozím spuštěním. Měli byste vidět lepší skóre spolehlivosti.
Vyzkoušejte další úpravy, například:
- Změna výzvy systému, aby se zaměřila na přesnost namísto úplnosti
- Testování s jiným modelem (například
gpt-4-turbopokud je k dispozici) - Úprava načítání kontextu tak, aby vracely relevantnější dokumenty
Každá iterace vám pomůže pochopit, které změny zlepšují konkrétní metriky.
Vyčistěte zdroje
Abyste se vyhnuli zbytečným Azure nákladům, odstraňte prostředky, které jste vytvořili v tomto kurzu, pokud už nejsou potřeba. Ke správě prostředků můžete použít portál Azure.