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

Postupujte 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é a snadno použitelné referenční implementace, které 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 Protocol 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: Může generovat mnoho otázek pro každý dokument spolu s odpovědí základní pravdy. Čí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.

Když toto vyhodnocení nasadíte do Azure, vytvoří se pro model koncový bod Azure OpenAI s vlastní kapacitouGPT-4. Při vyhodnocování chatovacích aplikací je důležité, aby vyhodnocovací nástroj používal vlastní prostředek OpenAI s GPT-4 vlastní kapacitou.

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.

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

    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 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 service azd up .
      • Název indexu: Název indexu Azure AI Search, ve kterém jsou vaše dokumenty uložené. Najdete ho na webu Azure Portal pro Search.

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

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, 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. 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 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 AZD command se aplikace pro vyhodnocení nenasadí, 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í.

  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í. 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 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. Vytvořte .env soubor na .env.samplezákladě:

    cp .env.sample .env
    
  2. Spuštěním těchto příkazů získejte požadované hodnoty pro AZURE_OPENAI_EVAL_DEPLOYMENT nasazenou skupinu prostředků a AZURE_OPENAI_SERVICE vložte je do .env souboru:

    azd env get-value AZURE_OPENAI_EVAL_DEPLOYMENT
    azd env get-value AZURE_OPENAI_SERVICE
    
  3. 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>"
    

Informace o konfiguraci najdete v protokolu Microsoft AI Chat Protocol.

Chatovací aplikace i aplikace pro vyhodnocení implementují Microsoft AI Chat Protocol specificationkontrakt rozhraní API koncového bodu AI, který se používá ke spotřebě a vyhodnocení, opensourcový, cloudový i jazykový. Když koncový bod klienta a střední vrstvy dodržuje tuto specifikaci rozhraní API, můžete konzistentně využívat a spouštět hodnocení na back-endech AI.

  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í odesílaných 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.
    Teplota Nastavení teploty pro model. Výchozí hodnota je 0.3.
    nejlepší 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í
    semeno 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. 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:

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

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, a to 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:

    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 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í, mezi které patří:

    Název souboru Popis
    config.json Kopie konfiguračního souboru použitého pro vyhodnocení.
    evaluate_parameters.json Parametry použité pro vyhodnocení. Velmi podobná, config.json ale obsahuje další metadata, jako je časové razítko.
    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:

    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
    

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:

    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á Teplota 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í s výjimkou nahrazení results_dir vaší 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 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.
    Koherence 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 naznačovat, že všechna tři hodnocení mají vysokou relevanci, zatímco experiment_ignoresources_temp09 nejnižší relevanci.

  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 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ů a závislostí

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