Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 service
azd 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.
- 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, 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.
- 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é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.
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.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, 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ý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 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í.
Vytvořte
.env
soubor založený na.env.sample
.cp .env.sample .env
Spuštěním tohoto příkazu získejte požadované hodnoty pro
AZURE_OPENAI_EVAL_DEPLOYMENT
aAZURE_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
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.
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í, 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ší. 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 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í ve my_input/qa.jsonl
formá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
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].
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
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
Proveďte třetí 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á 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!
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" } } }
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í 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. 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.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 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.
Přihlaste se k řídicímu panelu GitHub Codespaces.
Vyhledejte aktuálně spuštěné codespaces, které pocházejí z úložiště Azure-Samples/ai-rag-chat-evaluator na GitHubu.
Otevřete kontextovou nabídku pro prostor pro kód, a pak vyberte Odstranit.
Vraťte se k článku o chatovací aplikaci, abyste vyčistili tyto zdroje.
Související obsah
- Podívejte se na úložiště vyhodnocení.
- Podívejte se na úložiště GitHub v podnikové chatovací aplikaci.
- Vytvořte chatovací aplikaci s využitím architektury řešení osvědčených postupů pro Azure OpenAI.
- Seznamte se s řízením přístupu v generivních aplikacích AI pomocí služby Azure AI Search.
- Sestavte řešení Azure OpenAI připravené pro podniky pomocí služby Azure API Management.
- Viz Azure AI vyhledávání: Překonávání vektorového vyhledávání s hybridními možnostmi vyhledávání a hodnocení.