Első lépések a válaszok kiértékeléséhez egy JavaScript-alapú csevegőalkalmazásban

Ez a cikk bemutatja, hogyan értékelheti ki egy csevegőalkalmazás válaszait a helyes vagy ideális válaszok (az úgynevezett alapigazságok) alapján. Amikor úgy módosítja a csevegőalkalmazást, hogy az hatással legyen a válaszokra, futtasson egy értékelést a módosítások összehasonlítása érdekében. Ez a bemutató alkalmazás olyan eszközöket kínál, amelyekkel ma egyszerűbbé teheti az értékelések futtatását.

A cikkben található utasításokat követve a következőket fogja követni:

  • A megadott mintakéréseket a tárgytartományra szabva használhatja. Ezek már szerepelnek az adattárban.
  • Saját dokumentumaiból mintafelhasználói kérdéseket és alapigaz válaszokat hozhat létre.
  • Kiértékelések futtatása egy mintakérdés használatával a létrehozott felhasználói kérdésekkel.
  • Tekintse át a válaszok elemzését.

Architekturális áttekintés

Az architektúra fő összetevői a következők:

  • Azure-ban üzemeltetett csevegőalkalmazás: A csevegőalkalmazás a Azure-alkalmazás Szolgáltatásban fut. A csevegőalkalmazás megfelel a csevegési protokollnak, amely lehetővé teszi, hogy a kiértékelési alkalmazás a protokollnak megfelelő csevegőalkalmazásokkal fusson.
  • Azure AI Search: A csevegőalkalmazás az Azure AI Search használatával tárolja az adatokat a saját dokumentumaiból.
  • Mintakérdés-generátor: Számos kérdést generálhat az egyes dokumentumokhoz, valamint az alapigaz választ. Minél több a kérdés, annál hosszabb az értékelés.
  • Az értékelő mintakérdéseket és kérdéseket futtat a csevegőalkalmazáson, és visszaadja az eredményeket.
  • A Felülvizsgálati eszköz lehetővé teszi az értékelések eredményeinek áttekintését.
  • A Diff eszköz lehetővé teszi a válaszok összehasonlítását az értékelések között.

Előfeltételek

  • Egy Azure-előfizetés. Hozzon létre egyet ingyen

  • A hozzáférést az Azure OpenAI a kívánt Azure-előfizetésen belül kapja meg.

    Ezen szolgáltatáshoz jelenleg csak alkalmazás útján kapható hozzáférés. Az Azure OpenAI-hoz való hozzáférésre a következő https://aka.ms/oai/accessűrlap kitöltésével jelentkezhet: .

  • Végezze el az előző csevegőalkalmazás-eljárást a csevegőalkalmazás Azure-ban való üzembe helyezéséhez. Ez az eljárás betölti az adatokat az Azure AI Search-erőforrásba. Ez az erőforrás szükséges a kiértékelési alkalmazás működéséhez. Ne fejezze be az előző eljárás Erőforrások törlése szakaszát.

    A következő Azure-erőforrásadatokra lesz szüksége az üzemelő példányból, amelyet ebben a cikkben csevegőalkalmazásnak nevezünk:

    • Webes API URI: Az üzembe helyezett csevegőalkalmazás API URI-ja.
    • Azure AI Search. A következő értékek szükségesek:
      • Erőforrás neve: Az Azure AI Search-erőforrás neve.
      • Index neve: Annak az Azure AI Search-indexnek a neve, amelyben a dokumentumok találhatók.
      • Lekérdezési kulcs: A keresési index lekérdezéséhez használt kulcs.
    • Ha kísérletezett a csevegőalkalmazás hitelesítésével, le kell tiltania a felhasználói hitelesítést, hogy a kiértékelő alkalmazás hozzáférhessen a csevegőalkalmazáshoz.

    Miután összegyűjtötte ezeket az információkat, nem kell újra használnia a csevegőalkalmazás fejlesztési környezetét. A cikk későbbi részében többször is hivatkozunk rá, hogy jelezze, hogyan használja a csevegőalkalmazást a Evaluations alkalmazás. Ne törölje a csevegőalkalmazás erőforrásait, amíg el nem végzi a jelen cikkben szereplő teljes eljárást.

  • A cikk elvégzéséhez szükséges összes függőséget tartalmazó fejlesztői tárolókörnyezet érhető el. A fejlesztői tárolót a GitHub Codespacesben (böngészőben) vagy helyileg is futtathatja a Visual Studio Code használatával.

Nyílt fejlesztési környezet

Kezdje most a jelen cikk végrehajtásához telepített összes függőséget tartalmazó fejlesztői környezettel. Gondoskodjon a monitor-munkaterületről, hogy egyszerre jelenhesse meg ezt a dokumentációt és a fejlesztési környezetet is.

A GitHub Codespaces egy, a GitHub által felügyelt fejlesztői tárolót futtat a Webes Visual Studio Code-tal felhasználói felületként. A legegyszerűbb fejlesztési környezethez használja a GitHub Codespacest, hogy a megfelelő fejlesztői eszközökkel és függőségekkel rendelkezzen a cikk elvégzéséhez.

Fontos

Minden GitHub-fiók legfeljebb 60 órán át használhatja a Codespace-eket havonta 2 magpéldánysal. További információ: GitHub Codespaces havonta tartalmazza a tárterületet és az alapórákat.

  1. Indítsa el az új GitHub Codespace létrehozásának folyamatát a mainAzure-Samples/ai-rag-chat-evaluator GitHub-adattár ágán.

  2. Kattintson a jobb gombbal a következő gombra, és válassza a Hivatkozás megnyitása új ablakban lehetőséget, hogy egyszerre legyen elérhető a fejlesztési környezet és a dokumentáció is.

  3. A Kódtér létrehozása lapon tekintse át a kódtér konfigurációs beállításait, majd válassza az Új kódtér létrehozása lehetőséget

    Képernyőkép a megerősítést kérő képernyőről egy új kódtér létrehozása előtt.

  4. Várja meg, amíg a kódtér elindul. Ez az indítási folyamat eltarthat néhány percig.

  5. A képernyő alján lévő terminálon jelentkezzen be az Azure-ba az Azure Developer CLI használatával.

    azd auth login --use-device-code
    
  6. Másolja ki a kódot a terminálból, majd illessze be egy böngészőbe. Kövesse az utasításokat az Azure-fiókkal való hitelesítéshez.

  7. A kiértékelési alkalmazáshoz ki kell építenie a szükséges Azure-erőforrást, az Azure OpenAI-t.

    azd up
    

    Ez nem telepíti a kiértékelési alkalmazást, de létrehoz egy Azure OpenAI-erőforrást egy GPT-4 üzembe helyezéssel, amely a kiértékelések helyi futtatásához szükséges a fejlesztési környezetben.

  8. A cikkben szereplő fennmaradó feladatok ennek a fejlesztési tárolónak a kontextusában történnek.

  9. A GitHub-adattár neve megjelenik a keresősávon. Ez segít megkülönböztetni ezt a kiértékelési alkalmazást a csevegőalkalmazástól. Ezt ai-rag-chat-evaluator az adattárat ebben a cikkben a Evaluations alkalmazásnak nevezzük.

Környezeti értékek és konfigurációs információk előkészítése

Frissítse a környezeti értékeket és a konfigurációs adatokat a kiértékelési alkalmazás előfeltételei során összegyűjtött információkkal.

  1. Az alábbi paranccsal lekérheti a Evaluations alkalmazás erőforrásadatait egy .env fájlba:

    azd env get-values > .env
    
  2. Adja hozzá a következő értékeket az Azure AI Search-példányhoz tartozó csevegőalkalmazásból az .envelőfeltételek szakaszban összegyűjtött értékhez:

    AZURE_SEARCH_SERVICE="<service-name>"
    AZURE_SEARCH_INDEX="<index-name>"
    AZURE_SEARCH_KEY="<query-key>"
    

    Az AZURE_SEARCH_KEY érték az Azure AI Search-példány lekérdezéskulcsa .

  3. Másolja a example_config.json Kiértékelési alkalmazás mappa gyökerénél lévő fájlt egy új fájlbamy_config.json.

  4. Cserélje le a meglévő tartalmat my_config.json a következő tartalomra:

    {
        "testdata_path": "my_input/qa.jsonl",
        "results_dir": "my_results/experiment<TIMESTAMP>",
        "target_url": "http://localhost:50505/chat",
        "target_parameters": {
            "overrides": {
                "semantic_ranker": false,
                "prompt_template": "<READFILE>my_input/prompt_refined.txt"
            }
        }
    }
    
  5. Módosítsa a target_url csevegőalkalmazás URI-értékére, amelyet az előfeltételek szakaszban gyűjtött össze. A csevegőalkalmazásnak meg kell felelnie a csevegési protokollnak. Az URI formátuma a következő https://CHAT-APP-URL/chat. Győződjön meg arról, hogy a protokoll és az chat útvonal az URI része.

Mintaadatok létrehozása

Az új válaszok kiértékeléséhez össze kell hasonlítani őket egy "alapigazsággal", amely egy adott kérdés ideális válasza. Kérdések és válaszok létrehozása az Azure AI Searchben tárolt dokumentumokból a csevegőalkalmazáshoz.

  1. Másolja a example_input mappát egy új nevűmy_input mappába.

  2. Egy terminálban futtassa a következő parancsot a mintaadatok létrehozásához:

    python3 -m scripts generate --output=my_input/qa.jsonl --numquestions=14 --persource=2
    

A kérdés-válasz párokat a rendszer a következő lépésben my_input/qa.jsonlhasznált kiértékelő bemeneteként hozza létre és tárolja (JSONL formátumban). Éles kiértékeléshez több minőségbiztosítási párt hozna létre, talán több mint 200-et ehhez az adatkészlethez.

Feljegyzés

A forrásonkénti kérdések és válaszok száma azt jelenti, hogy lehetővé teszi az eljárás gyors elvégzését. Ez nem egy éles értékelés, amelynek forrásonként több kérdésre és válaszra van szükség.

Az első értékelés futtatása pontosított kéréssel

  1. A konfigurációs fájl tulajdonságainak my_config.json szerkesztése:

    • Módosítsa results_dir úgy, hogy tartalmazza a parancssor nevét: my_results/experiment_refined.
    • Váltás prompt_template a következőre: <READFILE>my_input/experiment_refined.txt a pontosított parancssori sablon használata a kiértékelésben.

    A pontosított kérés nagyon specifikus a tárgytartományra vonatkozóan.

    If there isn't enough information below, say you don't know. Do not generate answers that don't use the sources below. If asking a clarifying question to the user would help, ask the question.
    
    Use clear and concise language and write in a confident yet friendly tone. In your answers ensure the employee understands how your response connects to the information in the sources and include all citations necessary to help the employee validate the answer provided.
    
    For tabular information return it as an html table. Do not return markdown format. If the question is not in English, answer in the language used in the question.
    
    Each source has a name followed by colon and the actual information, always include the source name for each fact you use in the response. Use square brackets to reference the source, e.g. [info1.txt]. Don't combine sources, list each source separately, e.g. [info1.txt][info2.pdf].
    
  2. Egy terminálban futtassa a következő parancsot a kiértékelés futtatásához:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

    Ezzel létrehozott egy új kísérletmappát a my_results kiértékeléssel. A mappa tartalmazza az értékelés eredményeit, beleértve a következőket:

    • eval_results.jsonl: Minden kérdés és válasz, valamint az egyes QA-párok GPT-metrikái.
    • summary.json: Az általános eredmények, például az átlagos GPT-metrikák.

Második értékelés futtatása gyenge kéréssel

  1. A konfigurációs fájl tulajdonságainak my_config.json szerkesztése:

    • Váltás results_dir a következőre: my_results/experiment_weak
    • Váltás prompt_template a következőre: <READFILE>my_input/prompt_weak.txt a gyenge parancssori sablon használata a következő értékelésben.

    Ennek a gyenge kérésnek nincs kontextusa a tárgytartományról:

    You are a helpful assistant.
    
  2. Egy terminálban futtassa a következő parancsot a kiértékelés futtatásához:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

Harmadik értékelés futtatása adott hőmérséklettel

Használjon egy parancssort, amely nagyobb kreativitást tesz lehetővé.

  1. A konfigurációs fájl tulajdonságainak my_config.json szerkesztése:

    • Váltás results_dir a következőre: my_results/experiment_ignoresources_temp09
    • Váltás prompt_template a következőre: <READFILE>my_input/prompt_ignoresources.txt
    • Új felülbírálás hozzáadása – "temperature": 0.9 az alapértelmezett hőmérséklet 0,7. Minél magasabb a hőmérséklet, annál kreatívabb a válasz.

    A figyelmen kívül hagyás rövid:

    Your job is to answer questions to the best of your ability. You will be given sources but you should IGNORE them. Be creative!
    
  2. A konfigurációs objektumnak a következőt kell használnia, kivéve a sajátját results_dir:

    {
        "testdata_path": "my_input/qa.jsonl",
        "results_dir": "my_results/experiment_ignoresources_temp09",
        "target_url": "https://YOUR-CHAT-APP/chat",
        "target_parameters": {
            "overrides": {
                "temperature": 0.9,
                "semantic_ranker": false,
                "prompt_template": "<READFILE>my_input/prompt_ignoresources.txt"
            }
        }
    }
    
  3. Egy terminálban futtassa a következő parancsot a kiértékelés futtatásához:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

Az értékelési eredmények áttekintése

Három kiértékelést hajtott végre különböző kérések és alkalmazásbeállítások alapján. Az eredmények a my_results mappában vannak tárolva. Tekintse át, hogyan különböznek az eredmények a beállítások alapján.

  1. Az értékelés eredményeinek megtekintéséhez használja a felülvizsgálati eszközt:

    python3 -m review_tools summary my_results
    
  2. Az eredmények a következőképpen néznek ki:

    Képernyőkép a kiértékelési felülvizsgálati eszközről, amelyen a három értékelés látható.

    A függvény minden értéket számként és százalékértékként ad vissza.

  3. Az értékek jelentésének megértéséhez használja az alábbi táblázatot.

    Érték Leírás
    Alapozottság Ez azt jelenti, hogy a modell válaszai mennyire alapulnak tényszerű, ellenőrizhető információkon. A válasz akkor tekinthető megalapozottnak, ha tényszerűen pontos, és tükrözi a valóságot.
    Relevancia Ez azt méri, hogy a modell válaszai mennyire összhangban vannak a környezettel vagy a kéréssel. A releváns válasz közvetlenül a felhasználó lekérdezésére vagy utasítására vonatkozik.
    Koherencia Ez azt jelenti, hogy a modell válaszai logikailag konzisztensek. A koherens válasz egy logikai folyamatot tart fenn, és nem mond ellent önmagának.
    Idézés Ez azt jelzi, hogy a válasz a kérdésben kért formátumban lett-e visszaadva.
    Hossz Ez a válasz hosszát méri.
  4. Az eredményeknek azt kell jeleznie, hogy mind a 3 értékelésnek magas volt a relevanciája, míg a experiment_ignoresources_temp09 legalacsonyabb volt a relevanciája.

  5. Válassza ki a mappát a kiértékelés konfigurációjának megtekintéséhez.

  6. A Ctrl C billentyűkombinációval + lépjen ki az alkalmazásból, és térjen vissza a terminálhoz.

A válaszok összehasonlítása

Hasonlítsa össze a kiértékelésekből kapott válaszokat.

  1. Válassza ki az összehasonlítandó értékelések közül kettőt, majd ugyanazt a felülvizsgálati eszközt használva hasonlítsa össze a válaszokat:

    python3 -m review_tools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
    
  2. Tekintse át az eredményeket.

    A kiértékelési válaszok kiértékelések közötti összehasonlításának képernyőképe.

  3. A Ctrl C billentyűkombinációval + lépjen ki az alkalmazásból, és térjen vissza a terminálhoz.

Javaslatok további értékelésekhez

  • Szerkessze a kérdéseket my_input , és szabja testre a válaszokat, például a tárgytartományt, a hosszt és más tényezőket.
  • Szerkessze a my_config.json fájlt az olyan paraméterek módosításához, mint temperaturepéldául a kísérletek, és semantic_ranker futtassa újra a kísérleteket.
  • Hasonlítsa össze a különböző válaszokat annak megértéséhez, hogy a kérdés és a kérdés milyen hatással van a válasz minőségére.
  • Az Azure AI Search-index minden dokumentumához külön kérdéseket és alapigaz válaszokat hozhat létre. Ezután futtassa újra az értékeléseket, hogy lássa, miben különböznek a válaszok.
  • Módosítsa az utasításokat a rövidebb vagy hosszabb válaszok jelzésére a követelménynek a parancssor végéhez való hozzáadásával. Például: Please answer in about 3 sentences.

Az erőforrások eltávolítása

Azure-erőforrások tisztítása

A cikkben létrehozott Azure-erőforrások számlázása az Azure-előfizetésbe kerül. Ha a jövőben nem lesz szüksége ezekre az erőforrásokra, törölje őket, hogy elkerülje a további költségek felmerülését.

Futtassa a következő Azure Developer CLI-parancsot az Azure-erőforrások törléséhez és a forráskód eltávolításához:

azd down --purge

GitHub-kódterek eltávolítása

A GitHub Codespaces-környezet törlése biztosítja, hogy maximálisan kihasználható legyen a fiókhoz tartozó ingyenes óránkénti jogosultság.

Fontos

A GitHub-fiók jogosultságairól további információt a GitHub Codespaces havi tartalmazza a tárterületet és az alapórákat.

  1. Jelentkezzen be a GitHub Codespaces irányítópultjára (https://github.com/codespaces).

  2. Keresse meg a Jelenleg futó, a Azure-Samples/ai-rag-chat-evaluator GitHub-adattárból származó kódtereket.

    Képernyőkép az összes futó kódtérről, beleértve azok állapotát és sablonjait.

  3. Nyissa meg a kódtér helyi menüjét, majd válassza a Törlés lehetőséget.

    Képernyőkép egyetlen kódtér helyi menüjéről a törlési lehetőség kiemelésével.

Térjen vissza a csevegőalkalmazás cikkéhez, hogy megtisztítsa ezeket az erőforrásokat.

Következő lépések