Sdílet prostřednictvím


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

Podle pokynů v tomto článku:

  • Použijte poskytnuté ukázkové výzvy přizpůsobené doméně předmětu. Tyto výzvy 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í.

Poznámka:

Tento článek používá jednu nebo více šablon aplikací AI jako základ pro příklady a pokyny v tomto článku. Šablony aplikací AI poskytují dobře udržované referenční implementace, které se dají snadno nasadit. Pomáhají zajistit vysoce kvalitní výchozí bod pro vaše aplikace AI.

Přehled architektury

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

  • Chatovací aplikace hostovaná v Azure: Chatovací aplikace běží ve službě Aplikace Azure Service.
  • Protokol Microsoft AI Chat: Protokol poskytuje standardizované kontrakty rozhraní API napříč řešeními a jazyky AI. Chatovací aplikace odpovídá protokolu Microsoft AI Chat Protocol, 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: Nástroj může vygenerovat mnoho otázek pro každý dokument spolu s odpovědí základní pravdy. Čím více otázek je, tím déle vyhodnocení.
  • Vyhodnocovač: Nástroj spustí ukázkové otázky a testy v chatovací aplikaci a vrátí výsledky.
  • Nástroj pro kontrolu: Nástroj zkontroluje výsledky vyhodnocení.
  • Porovnávací nástroj: Nástroj porovnává odpovědi mezi vyhodnoceními.

Když nasadíte toto vyhodnocení do Azure, vytvoří se koncový bod služby Azure OpenAI pro GPT-4 model s vlastní kapacitou. Při vyhodnocování chatovacích aplikací je důležité, aby měl hodnotitel vlastní prostředek Azure OpenAI s vlastní kapacitou pomocí GPT-4.

Požadavky

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

  • Nasazení chatovací aplikace

  • Tyto chatovací aplikace načítají 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.

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

    • Identifikátor URI rozhraní API chatu: Koncový bod back-endu služby zobrazený na konci azd up procesu.
    • Azure AI Search. Jsou vyžadovány následující hodnoty:
      • Název prostředku: Název prostředku služby Azure AI Search, který se v průběhu procesu hlásí Search serviceazd up .
      • Název indexu: Název indexu Azure AI Search, ve kterém jsou vaše dokumenty uložené. Název indexu najdete na webu Azure Portal pro vyhledávací službu.

    Adresa URL rozhraní API chatu umožňuje vyhodnocení provádět žádosti prostřednictvím back-endové aplikace. Informace o službě Azure AI Search umožňují zkušebním skriptům používat stejné nasazení jako back-end načtené s dokumenty.

    Jakmile tyto informace shromáždíte, nemusíte znovu používat vývojové prostředí chatovacích aplikací . Tento článek se několikrát týká chatovací aplikace a ukazuje, jak ji aplikace Hodnocení používá. Neodstraňujte zdroje chatovací aplikace, dokud nedokončíte všechny kroky 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ého prostředí

Podle těchto pokynů nastavte předkonfigurované vývojové prostředí se všemi požadovanými závislostmi pro dokončení tohoto článku. Uspořádejte si pracovní prostor s monitorem tak, abyste mohli vidět tuto dokumentaci a vývojové prostředí současně.

Tento článek byl testován s switzerlandnorth oblastí pro testovací nasazení.

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. Obsahuje správné vývojářské nástroje a závislosti předinstalované k dokončení tohoto článku.

Důležité

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

  1. Začněte proces vytvoření nového GitHub codespace ve větvi main úložiště Azure-Samples/ai-rag-chat-evaluator na GitHubu.

  2. Pokud chcete zobrazit vývojové prostředí a dokumentaci dostupnou současně, klikněte pravým tlačítkem myši na následující tlačítko a vyberte Otevřít odkaz v novém okně.

    Otevřít v GitHub Codespaces.

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

    Snímek obrazovky znázorňující potvrzovací obrazovku 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, službu Azure OpenAI pro aplikaci pro vyhodnocení:

    azd up
    

    Tento AZD příkaz nenasadí aplikaci pro vyhodnocení, ale vytvoří prostředek Azure OpenAI s požadovaným GPT-4 nasazením ke spuštění vyhodnocení v místním vývojovém prostředí.

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

Název úložiště GitHub se zobrazí na panelu hledání. Tento vizuální indikátor vám pomůže odlišit aplikaci pro vyhodnocení od chatovací aplikace. Toto ai-rag-chat-evaluator úložiště se v tomto článku označuje jako aplikace pro vyhodnocení .

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. Vytvořte .env soubor založený na .env.sample.

    cp .env.sample .env
    
  2. Spuštěním tohoto příkazu získejte požadované hodnoty pro AZURE_OPENAI_EVAL_DEPLOYMENT a AZURE_OPENAI_SERVICE z nasazené skupiny prostředků. Vložte tyto hodnoty do .env souboru.

    azd env get-value AZURE_OPENAI_EVAL_DEPLOYMENT
    azd env get-value AZURE_OPENAI_SERVICE
    
  3. Do souboru, který jste shromáždili v části Požadavky, přidejte následující hodnoty z chatovací aplikace pro její instanci .env Azure AI Search.

    AZURE_SEARCH_SERVICE="<service-name>"
    AZURE_SEARCH_INDEX="<index-name>"
    

Informace o konfiguraci najdete v protokolu Microsoft AI Chat Protocol.

Chatovací aplikace i aplikace pro vyhodnocení implementují specifikaci protokolu Microsoft AI Chat Protocol, open-source, cloudový a jazykově nezávislý kontrakt API rozhraní koncového bodu AI, který slouží k používání a vyhodnocování. Když koncové body klienta a střední vrstvy dodržují tuto specifikaci rozhraní API, můžete pravidelně využívat a spouštět hodnocení na vašich AI backendech.

  1. Vytvořte nový soubor s názvem my_config.json a zkopírujte do něj následující obsah:

    {
        "testdata_path": "my_input/qa.jsonl",
        "results_dir": "my_results/experiment<TIMESTAMP>",
        "target_url": "http://localhost:50505/chat",
        "target_parameters": {
            "overrides": {
                "top": 3,
                "temperature": 0.3,
                "retrieval_mode": "hybrid",
                "semantic_ranker": false,
                "prompt_template": "<READFILE>my_input/prompt_refined.txt",
                "seed": 1
            }
        }
    }
    

    Zkušební skript vytvoří my_results složku.

    Objekt overrides obsahuje všechna nastavení konfigurace potřebná pro aplikaci. Každá aplikace definuje vlastní sadu vlastností nastavení.

  2. Následující tabulka vám umožní pochopit význam vlastností nastavení, které se posílají do chatovací aplikace.

    Vlastnost nastavení Popis
    semantic_ranker Zda použít sémantický ranker, model, který rerankuje výsledky hledání na základě sémantické podobnosti s dotazem uživatele. Pro účely tohoto kurzu ho zakážeme, abychom snížili náklady.
    retrieval_mode Režim načítání, který se má použít. Výchozí hodnota je hybrid.
    temperature Nastavení teploty pro model. Výchozí hodnota je 0.3.
    top Počet výsledků hledání, které se mají vrátit. Výchozí hodnota je 3.
    prompt_template Přepsání výzvy použité k vygenerování odpovědi na základě otázky a výsledků hledání
    seed Počáteční hodnota pro všechna volání modelů GPT. Nastavení počátečních výsledků v rámci vyhodnocení bude konzistentnější.
  3. target_url Změňte hodnotu na hodnotu identifikátoru URI chatovací aplikace, kterou jste shromáždili v části Požadavky. 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ázvem my_input.

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

    python -m evaltools generate --output=my_input/qa.jsonl --persource=2 --numquestions=14
    

Dvojice otázek a odpovědí se generují a ukládají ve my_input/qa.jsonlformátu JSONL jako vstup do vyhodnocovače, který se používá v dalším kroku. Pro produkční vyhodnocení byste vygenerovaly více dvojic otázek a odpovědí. Pro tuto datovou sadu se vygeneruje více než 200 položek.

Poznámka:

Pro každý zdroj se vygeneruje jenom několik otázek a odpovědí, abyste mohli tento postup rychle dokončit. Nejedná se o produkční vyhodnocení, které by mělo mít více otázek a odpovědí na zdroj.

Proveďte první vyhodnocení s vylepšenou výzvou

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

    Vlastnost Nová hodnota
    results_dir my_results/experiment_refined
    prompt_template <READFILE>my_input/prompt_refined.txt

    Upřesňující výzva je 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 a 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:

    python -m evaltools evaluate --config=my_config.json --numquestions=14
    

    Tento skript vytvořil novou složku experimentu s my_results/ vyhodnocením. Složka obsahuje výsledky vyhodnocení.

    Název souboru Popis
    config.json Kopie konfiguračního souboru použitého pro vyhodnocení.
    evaluate_parameters.json Parametry použité pro vyhodnocení. Podobá se config.json, a také zahrnuje další metadata, jako je časové razítko.
    eval_results.jsonl Každá otázka a odpověď spolu s metrikami GPT pro jednotlivé páry otázek a odpovědí.
    summary.json Celkové výsledky, jako jsou průměrné metriky GPT.

Spusťte druhé vyhodnocení se slabou výzvou

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

    Vlastnost Nová hodnota
    results_dir my_results/experiment_weak
    prompt_template <READFILE>my_input/prompt_weak.txt

    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:

    python -m evaltools evaluate --config=my_config.json --numquestions=14
    

Proveďte třetí 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.

    Existující Vlastnost Nová hodnota
    Existující results_dir my_results/experiment_ignoresources_temp09
    Existující prompt_template <READFILE>my_input/prompt_ignoresources.txt
    Nová temperature 0.9

    Výchozí hodnota temperature je 0,7. Čím vyšší teplota, tím více kreativní odpovědi.

    Výzva ignore 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 jako následující příklad, až na to, že nahradíte results_dir svou cestou:

    {
        "testdata_path": "my_input/qa.jsonl",
        "results_dir": "my_results/prompt_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:

    python -m evaltools 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.

    python -m evaltools summary my_results
    
  2. Výsledky vypadají přibližně takto :

    Snímek obrazovky znázorňující nástroj pro kontrolu vyhodnocení zobrazující tři vyhodnocení

    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í Kontroluje, 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.
    Význam Měří, jak přesně odpovědi modelu odpovídají kontextu nebo výzvě. Relevantní odpověď přímo řeší dotaz nebo příkaz uživatele.
    Koherence Kontroluje, jak jsou odpovědi modelu logicky konzistentní. Koherentní odpověď udržuje logický tok a není v rozporu sám.
    Citace Označuje, jestli byla odpověď vrácena ve formátu požadovaném ve výzvě.
    Délka Měří délku odpovědi.
  4. Výsledky by měly znamenat, že všechna tři hodnocení měla vysokou důležitost, zatímco experiment_ignoresources_temp09 nejnižší relevanci měla.

  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.

    python -m evaltools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
    
  2. Zkontrolujte výsledky. Vaše výsledky se můžou lišit.

    Snímek obrazovky znázorňující porovnání 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 správných odpovědí 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. Příklad: Please answer in about 3 sentences.

Vyčištění prostředků a závislostí

Následující kroky vás provedou procesem čištění použitých 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ů.

Pokud chcete odstranit prostředky Azure a odebrat zdrojový kód, spusťte následující příkaz Azure Developer CLI:

azd down --purge

Vyčištění GitHub Codespaces a Visual Studio Code

Odstraněním prostředí GitHub Codespaces můžete zajistit, že maximalizujete nárok na maximální počet bezplatných hodin na jedno jádro, které máte k dispozici 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.

  2. Vyhledejte aktuálně spuštěné codespaces, které pocházejí z úložiště Azure-Samples/ai-rag-chat-evaluator na GitHubu.

    snímek obrazovky, který zobrazuje všechny spuštěné Codespaces, včetně jejich stavu a šablon

  3. Otevřete kontextovou nabídku pro prostor pro kód, a pak vyberte Odstranit.

    Snímek obrazovky, který zobrazuje místní nabídku pro jeden kódový prostor se zvýrazněnou volbou Odstranit

Vraťte se k článku o chatovací aplikaci, abyste vyčistili tyto zdroje.