Oktatóanyag: 3. rész – Egyéni csevegőalkalmazás kiértékelése a Microsoft Foundry SDK-val (klasszikus)

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.

  • 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.

  1. Hozzon létre egy chat_eval_data.jsonl nevű fájlt az Eszközök mappában.

  2. 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.

  1. Hozzon létre egy evaluate.py nevű fájlt a főmappában.

  2. 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.

  3. 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.

  4. 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.

  1. Az Foundry portálon a projektben válassza a Modellek + végpontok lehetőséget.
  2. Válassza a gpt-4o-mini lehetőséget.
  3. Válassza a Szerkesztés lehetőséget.
  4. Ha rendelkezik kvótával, növelje a tokenek percenkénti korlátját 30-ra vagy többre.
  5. Válassza a Mentés és bezárás lehetőséget.

A kiértékelési szkript futtatása

  1. A konzolról jelentkezzen be Azure fiókjába a Azure CLI használatával:

    az login
    
  2. Telepí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:

  1. Mentse a fájlt.

  2. Futtassa újra a kiértékelési szkriptet:

    python evaluate.py
    
  3. Hasonlí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-turbo ha 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.