Začínáme s vyhodnocováním odpovědí v chatovací aplikaci v JavaScriptu

V tomto článku se dozvíte, jak vyhodnotit odpovědi chatovací aplikace proti sadě správných nebo ideálních odpovědí (označovaných jako základní pravda). Kdykoli změníte chatovací aplikaci způsobem, který ovlivňuje odpovědi, spusťte vyhodnocení a porovnejte změny. Tato ukázková aplikace nabízí nástroje, které můžete použít dnes, abyste usnadnili spouštění vyhodnocení.

Postupujte podle pokynů v tomto článku:

  • Použijte poskytnuté ukázkové výzvy přizpůsobené doméně předmětu. Ty už jsou v úložišti.
  • Vygenerujte ukázkové uživatelské otázky a odpovědi základní pravdy z vlastních dokumentů.
  • Spusťte vyhodnocení pomocí ukázkové výzvy s vygenerovanými uživatelskými dotazy.
  • Projděte si analýzu odpovědí.

Přehled architektury

Mezi klíčové součásti architektury patří:

  • Chatovací aplikace hostovaná v Azure: Chatovací aplikace běží ve službě Aplikace Azure Service. Chatovací aplikace odpovídá chatovacímu protokolu, který umožňuje, aby zkušební aplikace běžela proti jakékoli chatovací aplikaci, která odpovídá protokolu.
  • Azure AI Search: Chatovací aplikace používá Azure AI Search k ukládání dat z vlastních dokumentů.
  • Generátor ukázkových otázek: Může vygenerovat řadu otázek pro každý dokument spolu se základní odpovědí na pravdu. Čím více otázek, tím déle hodnocení.
  • Vyhodnocovač spustí ukázkové otázky a zobrazí výzvy k chatovací aplikaci a vrátí výsledky.
  • Nástroj pro kontrolu umožňuje zkontrolovat výsledky vyhodnocení.
  • Nástroj Rozdíl umožňuje porovnat odpovědi mezi vyhodnoceními.

Požadavky

  • Předplatné Azure. Vytvořte si ho zdarma

  • Přístup k Azure OpenAI je udělován v požadovaném předplatném Azure.

    V současné době je přístup k této službě udělován pouze aplikací. Pokud chcete získat přístup k Azure OpenAI, vyplňte formulář na adrese https://aka.ms/oai/access.

  • Dokončete předchozí postup chatovací aplikace a nasaďte chatovací aplikaci do Azure. Tento postup načte data do prostředku Azure AI Search. Tento prostředek se vyžaduje, aby aplikace pro vyhodnocení fungovala. Nedokončujte část Vyčistit prostředky předchozího postupu.

    Budete potřebovat následující informace o prostředcích Azure z tohoto nasazení, které se v tomto článku označují jako chatovací aplikace :

    • Identifikátor URI webového rozhraní API: Identifikátor URI nasazené rozhraní API chatovací aplikace.
    • Azure AI Search. Jsou vyžadovány následující hodnoty:
      • Název prostředku: Název prostředku služby Azure AI Search.
      • Název indexu: Název indexu Azure AI Search, ve kterém jsou vaše dokumenty uložené.
      • Klíč dotazu: Klíč pro dotazování indexu vyhledávání.
    • Pokud jste experimentovali s ověřováním chatovací aplikace, musíte zakázat ověřování uživatelů, aby aplikace pro vyhodnocení měli přístup k chatovací aplikaci.

    Jakmile tyto informace shromáždíte, neměli byste znovu používat vývojové prostředí chatovací aplikace . V tomto článku se několikrát odkazuje na to, jak se chatovací aplikace používá v aplikaci Hodnocení. Neodstraňujte prostředky chatovací aplikace , dokud nedokončíte celý postup v tomto článku.

  • Vývojové prostředí kontejneru je k dispozici se všemi závislostmi potřebnými k dokončení tohoto článku. Vývojový kontejner můžete spustit v GitHub Codespaces (v prohlížeči) nebo místně pomocí editoru Visual Studio Code.

Otevřené vývojové prostředí

Začněte teď s vývojovým prostředím, které má nainstalované všechny závislosti k dokončení tohoto článku. Pracovní prostor monitorování byste měli uspořádat tak, abyste viděli tuto dokumentaci i vývojové prostředí najednou.

GitHub Codespaces spouští vývojový kontejner spravovaný GitHubem pomocí editoru Visual Studio Code pro web jako uživatelského rozhraní. Pro nejjednodušší vývojové prostředí použijte GitHub Codespaces, abyste měli předinstalované správné vývojářské nástroje a závislosti k dokončení tohoto článku.

Důležité

Všechny účty GitHubu můžou každý měsíc používat Codespaces až 60 hodin zdarma se 2 jádrovými instancemi. Další informace najdete v tématu GitHub Codespaces měsíčně zahrnuté úložiště a hodiny jádra.

  1. Spusťte proces vytvoření nového prostředí GitHub Codespace ve main větvi Azure-Samples/ai-rag-chat-evaluator úložiště GitHub.

  2. Klikněte pravým tlačítkem myši na následující tlačítko a vyberte Otevřít odkaz v novém okně , abyste měli k dispozici vývojové prostředí i dokumentaci najednou.

  3. Na stránce Vytvořit kódspace zkontrolujte nastavení konfigurace codespace a pak vyberte Vytvořit nový prostor kódu.

    Snímek obrazovky s potvrzením před vytvořením nového prostoru kódu

  4. Počkejte, až se prostor kódu spustí. Tento proces spuštění může trvat několik minut.

  5. V terminálu v dolní části obrazovky se přihlaste k Azure pomocí Azure Developer CLI.

    azd auth login --use-device-code
    
  6. Zkopírujte kód z terminálu a vložte ho do prohlížeče. Postupujte podle pokynů k ověření pomocí účtu Azure.

  7. Zřiďte požadovaný prostředek Azure, Azure OpenAI, pro aplikaci pro vyhodnocení.

    azd up
    

    Tím se aplikace pro vyhodnocení nenasadí, ale vytvoří prostředek Azure OpenAI s nasazením GPT-4, které je potřeba ke místnímu spuštění vyhodnocení ve vývojovém prostředí.

  8. Zbývající úlohy v tomto článku probíhají v kontextu tohoto vývojového kontejneru.

  9. Název úložiště GitHub se zobrazí na panelu hledání. To vám pomůže rozlišovat mezi touto zkušební aplikací od chatovací aplikace. Toto ai-rag-chat-evaluator úložiště se v tomto článku označuje jako aplikace Hodnocení.

Příprava hodnot prostředí a informací o konfiguraci

Aktualizujte hodnoty prostředí a informace o konfiguraci s informacemi, které jste shromáždili během požadavků pro aplikaci pro vyhodnocení.

  1. Pomocí následujícího příkazu získejte informace o prostředcích aplikace Evaluations do .env souboru:

    azd env get-values > .env
    
  2. Do instance Azure AI Search, kterou jste shromáždili v části Požadavky, přidejte následující hodnoty z chatovací aplikace:.env

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

    Hodnota AZURE_SEARCH_KEY je klíč dotazu pro instanci služby Azure AI Search.

  3. example_config.json Zkopírujte soubor v kořenové složce aplikace Evaluations do nového souboru my_config.json.

  4. Nahraďte stávající obsah my_config.json následujícím obsahem:

    {
        "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. Změňte hodnotu identifikátoru URI chatovací aplikace, kterou jste shromáždili v části Požadavky.target_url Chatovací aplikace musí odpovídat protokolu chatu. Identifikátor URI má následující formát https://CHAT-APP-URL/chat. Ujistěte se, že protokol a chat trasa jsou součástí identifikátoru URI.

Generování ukázkových dat

Aby bylo možné vyhodnotit nové odpovědi, musí být porovnány s odpovědí "základní pravdy", což je ideální odpověď na konkrétní otázku. Vygenerujte otázky a odpovědi z dokumentů uložených ve službě Azure AI Search pro chatovací aplikaci.

  1. example_input Zkopírujte složku do nové složky s názvemmy_input.

  2. V terminálu spusťte následující příkaz, který vygeneruje ukázková data:

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

Dvojice otázek a odpovědí se generují a ukládají jako my_input/qa.jsonl vstup do vyhodnocovače použitého v dalším kroku (ve formátu JSONL). V případě produkčního vyhodnocení byste pro tuto datovou sadu vygenerovaly více dvojic kontroly kvality, možná více než 200.

Poznámka:

Tento postup vám umožní rychle dokončit několik otázek a odpovědí na zdroj. Nejedná se o produkční vyhodnocení, které by mělo mít více otázek a odpovědí na zdroj.

Spuštění prvního vyhodnocení s upřesňující výzvou

  1. Upravte vlastnosti konfiguračního my_config.json souboru:

    • Změňte results_dir název výzvy: my_results/experiment_refined.
    • Změňte prompt_template na: <READFILE>my_input/experiment_refined.txt Pokud chcete v vyhodnocení použít zpřesněnou šablonu výzvy.

    Upřesňující výzva je velmi specifická pro doménu předmětu.

    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. V terminálu spusťte vyhodnocení spuštěním následujícího příkazu:

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

    Tím se v rámci vyhodnocení vytvořila nová složka my_results experimentu. Složka obsahuje výsledky vyhodnocení, mezi které patří:

    • eval_results.jsonl: Každá otázka a odpověď spolu s metrikami GPT pro jednotlivé páry kontroly kvality.
    • summary.json: Celkové výsledky, jako jsou průměrné metriky GPT.

Spuštění druhého vyhodnocení se slabou výzvou

  1. Upravte vlastnosti konfiguračního my_config.json souboru:

    • Změnit results_dir na: my_results/experiment_weak
    • Změňte prompt_template na: <READFILE>my_input/prompt_weak.txt Pokud chcete v dalším vyhodnocení použít šablonu slabé výzvy.

    Tato slabá výzva nemá žádný kontext k doméně předmětu:

    You are a helpful assistant.
    
  2. V terminálu spusťte vyhodnocení spuštěním následujícího příkazu:

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

Spuštění třetího vyhodnocení s konkrétní teplotou

Použijte výzvu, která umožňuje větší kreativitu.

  1. Upravte vlastnosti konfiguračního my_config.json souboru:

    • Změnit results_dir na: my_results/experiment_ignoresources_temp09
    • Změnit prompt_template na: <READFILE>my_input/prompt_ignoresources.txt
    • Přidejte nové přepsání "temperature": 0.9 – výchozí teplota je 0,7. Čím vyšší teplota, tím více kreativní odpovědi.

    Výzva pro ignorování je krátká:

    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. Objekt konfigurace by měl vypadat takto, s výjimkou použití vlastního results_dirobjektu:

    {
        "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. V terminálu spusťte vyhodnocení spuštěním následujícího příkazu:

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

Kontrola výsledků vyhodnocení

Provedli jste tři vyhodnocení na základě různých výzev a nastavení aplikace. Výsledky se ukládají do my_results složky. Zkontrolujte, jak se výsledky liší v závislosti na nastavení.

  1. Výsledky vyhodnocení zobrazíte pomocí nástroje pro kontrolu:

    python3 -m review_tools summary my_results
    
  2. Výsledky vypadají takto:

    Snímek obrazovky s nástrojem pro kontrolu vyhodnocení se třemi vyhodnoceními

    Každá hodnota se vrátí jako číslo a procento.

  3. K pochopení významu hodnot použijte následující tabulku.

    Hodnota Popis
    Uzemnění To se týká toho, jak dobře jsou odpovědi modelu založeny na faktických a ověřitelných informacích. Odpověď se považuje za základ, pokud je fakt přesně přesná a odráží realitu.
    Relevance Tím se měří, jak přesně odpovědi modelu odpovídají kontextu nebo výzvě. Relevantní odpověď přímo řeší dotaz nebo příkaz uživatele.
    Soudržnost To se týká toho, jak jsou odpovědi modelu logicky konzistentní. Koherentní odpověď udržuje logický tok a není v rozporu sám.
    Citace To značí, jestli byla odpověď vrácena ve formátu požadovaném ve výzvě.
    Délka Tím se měří délka odpovědi.
  4. Výsledky by měly indikovat, že všechna hodnocení mají vysokou důležitost, zatímco experiment_ignoresources_temp09 nejnižší relevance.

  5. Výběrem složky zobrazíte konfiguraci pro vyhodnocení.

  6. Stisknutím kláves Ctrl + C ukončete aplikaci a vraťte se do terminálu.

Porovnání odpovědí

Porovnejte vrácené odpovědi z vyhodnocení.

  1. Vyberte dvě vyhodnocení, která chcete porovnat, a pak pomocí stejného nástroje pro kontrolu porovnejte odpovědi:

    python3 -m review_tools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
    
  2. Zkontrolujte výsledky.

    Snímek obrazovky s porovnáním odpovědí na vyhodnocení mezi vyhodnoceními

  3. Stisknutím kláves Ctrl + C ukončete aplikaci a vraťte se do terminálu.

Návrhy pro další hodnocení

  • Upravte výzvy my_input a upravte odpovědi, jako je doména předmětu, délka a další faktory.
  • my_config.json Upravte soubor, aby se změnily parametry, například temperature, a semantic_ranker znovu spusťte experimenty.
  • Porovnejte různé odpovědi, abyste pochopili, jak výzva a otázka ovlivňují kvalitu odpovědí.
  • Vygenerujte samostatnou sadu otázek a odpovědí na pravdu pro každý dokument v indexu Azure AI Search. Pak znovu spusťte vyhodnocení a podívejte se, jak se odpovědi liší.
  • Upravte výzvy tak, aby označily kratší nebo delší odpovědi přidáním požadavku na konec výzvy. Například Please answer in about 3 sentences.

Vyčištění prostředků

Vyčištění prostředků Azure

Prostředky Azure vytvořené v tomto článku se fakturují k vašemu předplatnému Azure. Pokud v budoucnu tyto prostředky nepotřebujete, odstraňte je, abyste se vyhnuli účtování dalších poplatků.

Spuštěním následujícího příkazu Azure Developer CLI odstraňte prostředky Azure a odeberte zdrojový kód:

azd down --purge

Vyčištění služby GitHub Codespaces

Odstraněním prostředí GitHub Codespaces zajistíte, že můžete maximalizovat nárok na počet bezplatných hodin za jádro, které získáte pro svůj účet.

Důležité

Další informace o oprávněních účtu GitHub najdete v tématu GitHub Codespaces měsíčně zahrnuté hodiny úložiště a jádra.

  1. Přihlaste se k řídicímu panelu GitHub Codespaces (https://github.com/codespaces).

  2. Vyhledejte aktuálně spuštěné Codespaces zdrojové z Azure-Samples/ai-rag-chat-evaluator úložiště GitHub.

    Snímek obrazovky se všemi spuštěnými codespaces včetně jejich stavu a šablon

  3. Otevřete místní nabídku pro codespace a pak vyberte Odstranit.

    Snímek obrazovky s místní nabídkou pro jeden prostor kódu se zvýrazněnou možností odstranit

Vraťte se do článku chatovací aplikace, abyste tyto prostředky vyčistili.

Další kroky