Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Csak a következőkre vonatkozik:Öntödei (klasszikus) portál. Ez a cikk nem érhető el az új Foundry portálon.
További információ az új portálról.
Megjegyzés
A cikkben szereplő hivatkozások megnyithatják a tartalmat az új Microsoft Foundry-dokumentációban a most megtekintett Foundry (klasszikus) dokumentáció helyett.
Ebben az oktatóanyagban kiértékeli az oktatóanyag-sorozat 2. részében létrehozott csevegőalkalmazást. Az alkalmazás minőségét több metrika alapján értékeli, majd iterálja a fejlesztéseket. Ebben a részben:
- Kiértékelési adatkészlet létrehozása
- A csevegőalkalmazás kiértékelése Azure AI-kiértékelőkkel
- Az alkalmazás iterálása és fejlesztése
Ez az oktatóanyag a 2. rész: Egyéni csevegőalkalmazás létrehozása a Microsoft Foundry SDK-val építkezik.
Előfeltételek
Fontos
Ez a cikk örökölt támogatást nyújt a hub-alapú projektekhez. Az Foundry-projektek esetében nem fog működni. Hogyan tudhatom meg, hogy milyen típusú projektem van?
SDK kompatibilitási megjegyzés: A kódpéldákhoz egy adott Microsoft Foundry SDK-verzió szükséges. Ha kompatibilitási problémákba ütközik, fontolja meg a központi projektből egy Foundry-projektbe való migrálást.
- Aktív előfizetéssel rendelkező Azure fiók. Ha nem rendelkezik ilyen fiókkal, hozzon létre egy free Azure fiókot, amely ingyenes próbaverziós előfizetést tartalmaz.
- Ha nem rendelkezik ilyen projektel, hozzon létre egy központi projektet.
- Töltse ki az oktatóanyag-sorozat 2. részét a csevegőalkalmazás létrehozásához.
- Használja ugyanazt a központi projektet, amelyet az 1. részben hozott létre.
- Azure MI-engedélyek: Tulajdonosi vagy közreműködői szerepkör a modell végponti sebességkorlátainak módosításához és a kiértékelési feladatok futtatásához.
- Győződjön meg arról, hogy végrehajtja a 2. részből származó telemetriai naplózás hozzáadásának lépéseit.
Kiértékelési adatkészlet létrehozása
Használja a következő kiértékelési adatkészletet, amely példakérdéseket és várt válaszokat tartalmaz. Ezzel az adatkészlettel egy kiértékelővel és a get_chat_response() célfüggvényrel értékelheti a csevegőalkalmazás teljesítményét a relevancia, a megalapozottság és a koherencia metrikái között.
Hozzon létre egy chat_eval_data.jsonl nevű fájlt az Eszközök mappában.
Illessze be ezt az adatkészletet a fájlba:
{"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"}Hivatkozások: JSONL-formátum kiértékelési adathalmazokhoz.
Kiértékelés Azure AI-kiértékelőkkel
Hozzon létre egy kiértékelési szkriptet, amely létrehoz egy célfüggvény burkolóját, betölti az adathalmazt, futtatja a kiértékelési műveletet, és naplózza az eredményeket a Foundry-projektben.
Hozzon létre egy evaluate.py nevű fájlt a főmappában.
Adja hozzá a következő kódot a szükséges kódtárak importálásához, egy projektügyfél létrehozásához és néhány beállítás konfigurálásához:
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)Hivatkozások: AIProjectClient, DefaultAzureCredential, azure-ai-evaluation.
Kód hozzáadása egy burkolófüggvény létrehozásához, amely megvalósítja a lekérdezés és a válasz kiértékelési felületét:
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"]}Hivatkozások: azure-ai-evaluation, értékelési célfüggvények.
Végül adjon hozzá kódot a kiértékelés futtatásához, az eredmények helyi megtekintéséhez, és szerezze be a kiértékelési eredményekre mutató hivatkozást az Foundry portálon:
# 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']}")Hivatkozások: azure-ai-evaluation, AIProjectClient.
A kiértékelési modell konfigurálása
A kiértékelési szkript többször hívja meg a modellt. Fontolja meg a tokenek percenkénti számának növelését a kiértékelési modell esetében.
Az oktatóanyag-sorozat 1. részében létrehozott egy .env fájlt, amely megadja a kiértékelési modell nevét. gpt-4o-mini Ha van elérhető kvótája, próbálja meg növelni a modell percenkénti tokenkorlátját. Ha nem rendelkezik elegendő kvótával az érték növeléséhez, ne aggódjon. A szkript a korláthibák kezelésére lett kialakítva.
- Az Foundry portálon a projektben válassza a Modellek + végpontok lehetőséget.
- Válassza a gpt-4o-mini lehetőséget.
- Válassza a Szerkesztés lehetőséget.
- Ha rendelkezik kvótával, növelje a tokenek percenkénti korlátját 30-ra vagy többre.
- Válassza a Mentés és bezárás lehetőséget.
A kiértékelési szkript futtatása
A konzolról jelentkezzen be Azure fiókjába a Azure CLI használatával:
az loginTelepítse a szükséges csomagokat:
pip install openai pip install azure-ai-evaluation[remote]Hivatkozások: azure-ai-evaluation SDK, Evaluation SDK dokumentációja.
A kiértékelési beállítás ellenőrzése
A teljes kiértékelés futtatása előtt (amely 5–10 percet vesz igénybe) ellenőrizze, hogy az SDK és a projektkapcsolat működik-e az alábbi gyorsteszt futtatásával:
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")
Ha megjelenik "Evaluation SDK is ready!", a beállítás befejeződött, és folytathatja a műveletet.
Hivatkozások: AIProjectClient, DefaultAzureCredential.
Az értékelés indítása
Futtassa a kiértékelési szkriptet:
python evaluate.py
A kiértékelés 5–10 percet vesz igénybe. Időtúllépési figyelmeztetések és sebességkorlátozási hibák is megjelenhetnek. A szkript automatikusan kezeli ezeket a hibákat, és folytatja a feldolgozást.
A kiértékelési kimenet értelmezése
A konzol kimenetében minden kérdésre választ kap, majd egy táblázatot, amely a relevancia, a megalapozottság és a koherencia pontszámait ábrázoló összesített metrikákat tartalmaz. A pontszámok a GPT által támogatott metrikák esetében 0 (legrosszabb) és 4 (legjobb) között mozognak. A referenciadokumentumok által nem támogatott válaszok, valamint a témán kívüli válaszok azonosításához alacsony relevanciapontszámokat keres.
Sok WARNING:opentelemetry.attributes: üzenet és időtúllépési hiba jelenhet meg. Ezeket az üzeneteket nyugodtan figyelmen kívül hagyhatja. Ezek nem befolyásolják a kiértékelési eredményeket. A kiértékelési szkript a sebességkorlátozási hibák kezelésére és a feldolgozás folytatására szolgál.
A kiértékelési eredmények kimenete egy hivatkozást is tartalmaz a részletes eredmények megtekintéséhez az Foundry portálon, ahol összehasonlíthatja a kiértékelési futtatásokat egymás mellett, és nyomon követheti a fejlesztéseket az idő függvényében.
====================================================
'-----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')
Iterálás és fejlesztés
A kiértékelési eredmények azt mutatják, hogy a válaszok gyakran nem megalapozottak a referenciadokumentumokban. A megalapozottság javítása érdekében módosítsa a rendszerpromptot az assets/grounded_chat.prompty fájlban, hogy a modell közvetlenebbül használja a referenciadokumentumokat.
Aktuális kérés (problémás):
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.
Továbbfejlesztett üzenet:
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.
A parancssor frissítése után:
Mentse a fájlt.
Futtassa újra a kiértékelési szkriptet:
python evaluate.pyHasonlítsa össze az új kiértékelési eredményeket az előző futtatás eredményével. Javított megalapozottsági pontszámokat láthatja.
Próbálkozzon további módosításokkal, például:
- A rendszerkérés módosítása a pontosság preferálása a teljesség felett érdekében.
- Tesztelés másik modellel (például
gpt-4-turboha elérhető) - A környezet lekérésének módosítása relevánsabb dokumentumok visszaadásához
Minden iteráció segít megérteni, hogy mely változások javítják az egyes metrikákat.
Erőforrások törlése
A szükségtelen Azure költségek elkerülése érdekében törölje az oktatóanyagban létrehozott erőforrásokat, ha már nincs rájuk szükség. Az erőforrások kezeléséhez használhatja a Azure portált.