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.
- Název prostředku: Název prostředku služby Azure AI Search, který se v průběhu procesu hlásí
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.
- Identifikátor URI rozhraní API chatu: Koncový bod back-endu služby zobrazený na konci
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.
- Účet GitHub
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.
Spusťte proces vytvoření nového prostředí GitHub Codespace ve
main
větviAzure-Samples/ai-rag-chat-evaluator
úložiště GitHub.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ě.
Na stránce Vytvořit kódspace zkontrolujte nastavení konfigurace codespace a pak vyberte Vytvořit nový prostor kódu.
Počkejte, až se prostor kódu spustí. Tento proces spuštění může trvat několik minut.
V terminálu v dolní části obrazovky se přihlaste k Azure pomocí Azure Developer CLI.
azd auth login --use-device-code
Zkopírujte kód z terminálu a vložte ho do prohlížeče. Postupujte podle pokynů k ověření pomocí účtu Azure.
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ýmGPT-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 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í.
Vytvořte
.env
soubor na.env.sample
základě:cp .env.sample .env
Spuštěním těchto příkazů získejte požadované hodnoty pro
AZURE_OPENAI_EVAL_DEPLOYMENT
nasazenou skupinu prostředků aAZURE_OPENAI_SERVICE
vložte je do.env
souboru:azd env get-value AZURE_OPENAI_EVAL_DEPLOYMENT azd env get-value AZURE_OPENAI_SERVICE
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 specification
kontrakt 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.
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í.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ší. 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áthttps://CHAT-APP-URL/chat
. Ujistěte se, že protokol achat
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.
example_input
Zkopírujte složku do nové složky s názvemmy_input
.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
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].
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
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.
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.
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!
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" } } }
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í.
Výsledky vyhodnocení zobrazíte pomocí nástroje pro kontrolu:
python -m evaltools summary my_results
Výsledky vypadají přibližně takto :
Každá hodnota se vrátí jako číslo a procento.
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. Výsledky by měly naznačovat, že všechna tři hodnocení mají vysokou relevanci, zatímco
experiment_ignoresources_temp09
nejnižší relevanci.Výběrem složky zobrazíte konfiguraci pro vyhodnocení.
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í.
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
Zkontrolujte výsledky. Vaše výsledky se můžou lišit.
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říkladtemperature
, asemantic_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.
Přihlaste se k řídicímu panelu GitHub Codespaces (https://github.com/codespaces).
Vyhledejte aktuálně spuštěné Codespaces zdrojové z
Azure-Samples/ai-rag-chat-evaluator
úložiště GitHub.Otevřete místní nabídku pro codespace a pak vyberte Odstranit.
Vraťte se do článku chatovací aplikace , abyste tyto prostředky vyčistili.
Další kroky
- Úložiště vyhodnocení
- Úložiště GitHub v podnikové chatovací aplikaci
- Vytvoření chatovací aplikace s využitím architektury osvědčených postupů Azure OpenAI
- Řízení přístupu v aplikacích Generative AI pomocí Azure AI Search
- Vytvoření řešení OpenAI připravené pro podniky pomocí služby Azure API Management
- Outperforming vector search with hybrid retrieval and ranking capabilities