Sdílet prostřednictvím


Začínáme: Chatování s použitím vlastních dat (ukázka Pythonu)

Tento článek ukazuje, jak nasadit a spustit chat s vlastní ukázkou datpomocí ukázkového kódu pro Python. Tato ukázková chatovací aplikace je vytvořená pomocí Pythonu, služby Azure OpenAI a Retrieval Augmented Generation (RAG) prostřednictvím Azure AI Search.

Aplikace poskytuje odpovědi na uživatelské otázky týkající se výhod zaměstnanců fiktivní společnosti. Používá Retrieval-Augmented Generation (RAG) k odkazování na obsah ze zadaných souborů PDF, které mohou zahrnovat:

  • Příručka pro zaměstnance
  • Dokument s přehledem výhod
  • Seznam rolí a očekávání společnosti

Díky analýze těchto dokumentů může aplikace reagovat na dotazy v přirozeném jazyce s přesnými a kontextově relevantními odpověďmi. Tento přístup ukazuje, jak můžete pomocí vlastních dat využívat inteligentní chatové prostředí specifické pro doménu pomocí Azure OpenAI a Azure AI Search.

Dozvíte se také, jak nakonfigurovat nastavení aplikace tak, aby upravila chování odpovědi.

Po dokončení kroků v tomto článku můžete začít s přizpůsobením projektu vlastním kódem. Tento článek je součástí série, která vás provede vytvořením chatovací aplikace se službou Azure OpenAI a službou Azure AI Search. Mezi další články v řadě patří:

Poznámka:

Tento článek je založený na jedné nebo více šablonách aplikací AI, které slouží jako dobře udržované referenční implementace. Tyto šablony jsou navržené tak, aby byly snadno nasaditelné a poskytovaly spolehlivý a vysoce kvalitní výchozí bod pro vytváření vlastních aplikací AI.

Architektura ukázkové aplikace

Následující diagram znázorňuje jednoduchou architekturu chatovací aplikace.

Diagram znázorňující architekturu ukázky z klienta do back-endové chatovací aplikace se zdroji dat

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

  • Webová aplikace, která hostuje interaktivní chatovací rozhraní (obvykle sestavené pomocí Python Flask nebo JavaScriptu nebo Reactu) a odesílá dotazy uživatelů do back-endu pro zpracování.
  • Prostředek Azure AI Search, který provádí inteligentní vyhledávání v indexovaných dokumentech (PDF, wordových souborech atd.) a vrací relevantní výňatky dokumentů (bloky) pro použití v odpovědích.
  • Instance služby Azure OpenAI, která:
    • Převede dokumenty a uživatelské otázky na vektorové reprezentace pro sémantické vyhledávání podobnosti.
    • Extrahuje důležitá klíčová slova pro upřesnění dotazů Azure AI Search.
    • Syntetizuje konečné odpovědi pomocí načtených dat a uživatelského dotazu.

Typický tok chatovací aplikace je následující:

  • Uživatel odešle otázku: Uživatel zadá otázku v přirozeném jazyce prostřednictvím rozhraní webové aplikace.
  • Azure OpenAI zpracovává otázku: Back-end používá Azure OpenAI k:
    • Vygenerujte vložení otázky pomocí modelu text-embedding-ada-002.
    • Volitelně extrahujte klíčová slova pro upřesnění relevance hledání.
  • Azure AI Search načte relevantní data: Vkládání nebo klíčová slova slouží k provádění sémantického vyhledávání indexovaného obsahu (například SOUBORŮ PDF) ve službě Azure AI Search.
  • Zkombinujte výsledky s otázkou: Nejrelevantnější výňatky (bloky) dokumentů se kombinují s původní otázkou uživatele.
  • Azure OpenAI vygeneruje odpověď: Kombinovaný vstup se předá do modelu GPT (například gpt-35-turbo nebo gpt-4), který generuje odpověď podporující kontext.
  • Odpověď se vrátí uživateli: Vygenerovaná odpověď se zobrazí v rozhraní chatu.

Požadavky

K dispozici je prostředí vývojového kontejneru 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.

Pokud chcete použít tento článek, potřebujete následující požadavky:

  • Předplatné služby Azure. Než začnete, vytvořte si bezplatný účet.

  • Oprávnění účtu Azure. Váš účet Azure musí mít oprávnění Microsoft.Authorization/roleAssignments/write. Role, jako je správce uživatelských přístupů nebo vlastník , splňují tento požadavek.

  • Přístup udělený službě Azure OpenAI ve vašem předplatném Azure Ve většině případů můžete vytvářet vlastní filtry obsahu a spravovat úrovně závažnosti s obecným přístupem k modelům Azure OpenAI. Pro obecný přístup není nutná registrace, která by vyžadovala schválení. Další informace najdete v tématu Funkce omezeného přístupu pro služby Azure AI.

  • Úpravy filtru obsahu nebo zneužití (volitelné). Pokud chcete vytvářet vlastní filtry obsahu, měnit úrovně závažnosti nebo podporovat monitorování zneužití, potřebujete formální schválení přístupu. Přístup můžete požádat vyplněním potřebných registračních formulářů. Další informace najdete v tématu Registrace pro upravené filtry obsahu nebo monitorování zneužití.

  • Podpora a řešení potíží s přístupem Pokud chcete získat přístup k řešení potíží, otevřete problém s podporou v úložišti GitHub.

  • Účet GitHubu. Je nutné forkovat úložiště a použít GitHub Codespaces nebo klonovat úložiště lokálně.

Náklady na využití pro ukázkové zdroje

Většina prostředků používaných v této architektuře spadá do základních cenových úrovní nebo cenových úrovní založených na spotřebě. To znamená, že platíte jenom za to, co používáte, a poplatky jsou obvykle během vývoje nebo testování minimální.

K dokončení této ukázky můžou vzniknout malé náklady spojené s používáním služeb, jako je Azure OpenAI, AI Search a úložiště. Jakmile aplikaci vyhodnotíte nebo nasadíte, můžete odstranit všechny zřízené prostředky, abyste se vyhnuli průběžným poplatkům.

Pro podrobný rozpis očekávaných nákladů si prohlédněte Odhad nákladů v repozitáři GitHub pro ukázku.

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

Začněte nastavením vývojového prostředí, které má nainstalované všechny závislosti pro dokončení tohoto článku.

  • Předplatné služby Azure. Vytvořte si ho zdarma.
  • Oprávnění účtu Azure. Váš účet Azure musí mít oprávnění Microsoft.Authorization/roleAssignments/write. Role, jako je správce uživatelských přístupů nebo vlastník , splňují tento požadavek.
  • Účet GitHubu. Je nutné forkovat úložiště a použít GitHub Codespaces nebo klonovat úložiště lokálně.

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

Podle následujících pokynů nasaďte předkonfigurované vývojové prostředí obsahující všechny požadované závislosti pro dokončení tohoto článku.

Pro nejjednodušší a nejfektivněnější nastavení použijte GitHub Codespaces. GitHub Codespaces spouští vývojový kontejner spravovaný GitHubem a jako uživatelské rozhraní poskytuje Visual Studio Code pro web . Toto prostředí zahrnuje všechny požadované nástroje, sady SDK, rozšíření a závislosti, které jsou předinstalované– takže můžete začít vyvíjet okamžitě bez ruční konfigurace.

Použití Codespaces zajišťuje:

  • Správné vývojářské nástroje a verze jsou už nainstalované.
  • Nemusíte instalovat Docker, VS Code ani rozšíření místně.
  • Rychlé onboardování a nastavení reprodukovatelného prostředí.

Důležité

Všechny účty GitHubu můžou každý měsíc používat GitHub Codespaces až 60 hodin zdarma se 2 základními instancemi. Pokud překročíte bezplatnou kvótu nebo použijete větší výpočetní možnosti, platí standardní fakturační sazby GitHub Codespaces. Další informace najdete na GitHub Codespaces – měsíční zahrnuté úložiště a procesorové hodiny.

  1. Pokud chcete začít pracovat s ukázkovým projektem, vytvořte nový prostor kódu GitHubu main ve větvi Azure-Samples/azure-search-openai-demo úložiště GitHub.

    Pravým tlačítkem myši klikněte na GitHub Codespaces – Otevřete možnost v horní části stránky úložiště a vyberte Otevřít odkaz v novém okně. Tím se zajistí, že se vývojový kontejner spustí na celé obrazovce v kartě vyhrazeného prohlížeče, což vám umožní přístup ke zdrojovému kódu i integrované dokumentaci.

    Obrázek možnosti Otevřít v GitHubu Codespaces

  2. Na stránce Vytvořit nový codespace zkontrolujte konfiguraci codespace a poté vyberte Vytvořit codespace:

    Snímek obrazovky s potvrzením pro vytvoření nového prostoru kódu GitHubu pro ukázku

    Počkejte, až se spustí codespace GitHubu. Proces spuštění může trvat několik minut.

  3. Po otevření kódu GitHubu se přihlaste k Azure pomocí Azure Developer CLI zadáním následujícího příkazu v podokně terminálu v codespace:

    azd auth login
    

    GitHub zobrazí v podokně Terminálu bezpečnostní kód.

    1. Zkopírujte bezpečnostní kód v podokně Terminálu a vyberte Enter. Otevře se okno prohlížeče.

    2. Na příkazovém řádku vložte bezpečnostní kód do pole prohlížeče.

    3. Postupujte podle pokynů k ověření pomocí účtu Azure.

Zbývající úlohy Codespaces GitHubu dokončíte v tomto článku v kontextu tohoto vývojového kontejneru.

Nasazení chatovací aplikace do Azure

Ukázkové úložiště zahrnuje vše, co potřebujete k nasazení chatu s vlastní datovou aplikací do Azure, včetně:

  • Zdrojový kód aplikace (Python)
  • Soubory infrastruktury jako kód (Bicep)
  • Konfigurace pro integraci GitHubu a CI/CD (volitelné)

Pomocí následujících kroků nasaďte aplikaci s Azure Developer CLI (azd).

Důležité

Prostředky Azure vytvořené v této části , zejména Azure AI Search, můžou začít okamžitě po zřízení účtovat poplatky, i když se nasazení přeruší před dokončením. Abyste se vyhnuli neočekávaným poplatkům, monitorujte využití Azure a po testování odstraňte nepoužívané prostředky okamžitě.

  1. V podokně Terminálu editoru Visual Studio Code vytvořte prostředky Azure a nasaďte zdrojový kód spuštěním následujícího azd příkazu:

    azd up
    
  2. Proces vás vyzve k zadání jednoho nebo několika následujících nastavení na základě vaší konfigurace:

    • Název prostředí: Tato hodnota se používá jako součást názvu skupiny prostředků. Zadejte krátký název s malými písmeny a pomlčkami (-například myenv). Velká písmena, číslice a speciální znaky se nepodporují.

    • Předplatné: Vyberte předplatné pro vytvoření prostředků. Pokud nevidíte požadované předplatné, procházejte celý seznam dostupných předplatných pomocí kláves se šipkami.

    • Umístění: Poloha této oblasti se používá pro většinu zdrojů, včetně hostování. Vyberte umístění oblasti blízko vás geograficky.

    • Umístění modelu OpenAI nebo prostředku Document Intelligence: Vyberte umístění, které je nejblíže geograficky. Pokud je pro toto nastavení dostupná oblast, kterou jste vybrali pro umístění, vyberte stejnou oblast.

    Nasazení aplikace může nějakou dobu trvat. Než budete pokračovat, počkejte na dokončení nasazení.

  3. Po úspěšném nasazení aplikace se v podokně Terminálu zobrazí adresa URL koncového bodu:

    Snímek obrazovky znázorňující adresu URL koncového bodu nasazené aplikace, jak je hlášeno po dokončení procesu

  4. Výběrem adresy URL koncového bodu otevřete chatovací aplikaci v prohlížeči:

    Snímek obrazovky chatovací aplikace zobrazující několik návrhů pro vstup chatu a textové pole chatu pro zadání otázky

Získání odpovědí ze souborů PDF pomocí chatovací aplikace

Chatovací aplikace se předem načte s informacemi o výhodách zaměstnanců ze souborů PDF. Chatovací aplikaci můžete použít k kladení otázek ohledně výhod. Následující kroky vás provedou procesem používání chatovací aplikace. Vaše odpovědi se můžou lišit podle toho, jak se aktualizují podkladové modely.

  1. V chatovací aplikaci vyberte možnost Co se stane při kontrole výkonu? nebo zadejte stejný text do textového pole chatu. Aplikace vrátí počáteční odpověď:

    Snímek obrazovky s počáteční odpovědí z chatovací aplikace pro danou otázku, co se stane v revizi výkonu?

  2. V poli odpovědi vyberte citaci:

    Snímek obrazovky se zvýrazněnou citací v poli pro odpověď chatovací aplikace

  3. GitHub Codespaces otevře pravé podokno Citation se třemi oblastmi s kartami a fokus je na kartě Citation :

    Snímek obrazovky pravého podokna otevřeného v GitHub Codespaces s informacemi viditelnými na kartě Citation

    GitHub Codespaces poskytuje tři karty informací, které vám pomůžou pochopit, jak chatovací aplikace vygenerovala odpověď:

    Tabulátor Popis
    Myšlenkový proces Zobrazí skript interakce otázek a odpovědí v chatu. Můžete zobrazit obsah poskytovaný chatovací aplikací system, otázky zadané usersystémem a objasnění assistant.
    Podpůrný obsah Zobrazí seznam informací použitých k zodpovězení vaší otázky a zdrojového materiálu. Počet citací zdrojového materiálu je určen nastavením developera. Výchozí počet citací je 3.
    Citace Zobrazí původní zdroj pro vybranou citaci.
  4. Až budete hotovi, vyberte aktuálně vybranou kartu v pravém podokně. Pravé podokno se zavře.

Změna chování odpovědi pomocí nastavení

Konkrétní model OpenAI určuje inteligenci chatu a nastavení sloužící k interakci s modelem. Možnost Nastavení pro vývojáře otevře podokno Konfigurace generování odpovědí , kde můžete změnit nastavení chatovací aplikace:

Snímek obrazovky s nastavením vývojáře dostupným v pravém podokně v chatovací aplikaci

Nastavení Popis
Přepsat šablonu výzvy Přepíše výzvu použitou k vygenerování odpovědi na základě otázky a výsledků hledání.
Teplota Nastaví teplotu požadavku na rozsáhlý jazykový model (LLM), který vygeneruje odpověď. Vyšší teploty vedou k kreativním reakcím, ale mohou být méně praktické.
Semeno Nastaví počáteční hodnoty, aby se zlepšila reprodukovatelnost odpovědí modelu. Počáteční hodnota může být libovolné celé číslo.
Minimální skóre hledání Nastaví minimální skóre pro výsledky hledání vrácené službou Azure AI Search. Rozsah skóre závisí na tom, jestli používáte hybridní (výchozí), pouze vektory nebo text pouze pro nastavení režimu načítání .
Minimální skóre rerankeru Nastaví minimální skóre pro výsledky hledání vrácené sémantickým přerovnáním. Skóre se vždy pohybuje v rozmezí od 0 do 4. Čím vyšší je skóre, tím více sémanticky relevantní výsledek je otázka.
Načtení tohoto počtu výsledků hledání Nastaví počet výsledků hledání, které se mají načíst ze služby Azure AI Search. Větší počet výsledků může zvýšit pravděpodobnost nalezení správné odpovědi, ale může vést ke ztrátě modelu uprostřed. Vrácené zdroje můžete zobrazit na kartách Myšlenkový proces a Podpůrný obsah v podokně Citace .
Zahrnout kategorii Určuje kategorie, které se mají zahrnout při generování výsledků hledání. K výběru použijte rozevírací seznam. Výchozí akcí je zahrnout všechny kategorie.
Vyloučit kategorii Určuje všechny kategorie, které se mají z výsledků hledání vyloučit. Ve výchozí sadě dat nejsou použity žádné kategorie.
Použijte sémantický ranker pro vyhledání Povolí sémantický ranker služby Azure AI Search, což je model, který přehodnocuje výsledky vyhledávání na základě sémantické podobnosti s dotazem uživatele.
Použití sémantických titulků Odešle sémantické titulky do LLM místo úplného výsledku hledání. Sémantický titulek se extrahuje z výsledku hledání během procesu sémantického řazení.
Návrhy následných otázek Položí LLM návrh následných otázek na základě dotazu uživatele.
Režim načítání Nastaví režim načítání pro dotaz Azure AI Search. Výchozí akcí je Vectors + Text (Hybrid), která používá kombinaci vektorového vyhledávání a fulltextového vyhledávání. Možnost Vektory používá pouze vektorové vyhledávání. Možnost Text používá pouze fulltextové vyhledávání. Hybridní přístup je optimální.
Odpovědi na dokončení chatu ve streamu Průběžně streamuje odpověď do uživatelského rozhraní chatu při generování obsahu.

Následující kroky vás provedou procesem změny nastavení.

  1. V prohlížeči vyberte možnost Nastavení pro vývojáře .

  2. Pokud chcete tuto možnost povolit, zaškrtněte políčko Navrhnout následné otázky a výběrem možnosti Zavřít změnu nastavení použijte.

  3. V chatovací aplikaci znovu napište otázku tak, že do pole pro otázky zadáte text:

    What happens in a performance review?
    

    Odpověď na chatovací aplikaci teď obsahuje navrhované následné otázky:

    Snímek obrazovky, který znázorňuje, jak chatovací aplikace poskytuje navrhované následné otázky po odpovědi

  4. Znovu vyberte možnost Nastavení pro vývojáře a zrušte výběr možnosti Použít sémantický ranker pro načtení . Zavřete nastavení.

  5. Položte stejnou otázku znovu a všimněte si rozdílu v odpovědi z chatovací aplikace.

    Se sémantickým hodnotitelem: "Během kontroly výkonu ve společnosti Contoso Electronics bude váš nadřízený diskutovat o vašem výkonu za poslední rok a poskytne vám zpětnou vazbu k oblastem pro zlepšení. Budete mít také příležitost diskutovat o svých cílech a cílech pro nadcházející rok. Přezkum je obousměrný dialog mezi manažery a zaměstnanci a doporučuje se, aby zaměstnanci byli během procesu upřímní a otevření (1). Zpětná vazba poskytnutá během přezkumu by měla být pozitivní a konstruktivní, zaměřená na pomoc zaměstnancům při vývoji a rozvoji jejich rolí. Zaměstnanci obdrží písemné shrnutí hodnocení výkonu, které bude zahrnovat hodnocení jejich výkonu, zpětné vazby a cílů pro nadcházející rok (1).

    Bez sémantického rankeru: "Během kontroly výkonu ve společnosti Contoso Electronics s vámi váš nadřízený bude diskutovat o vašem výkonu za poslední rok a poskytne zpětnou vazbu k oblastem pro zlepšení. Jedná se o obousměrný dialog, ve kterém se doporučuje být upřímný a otevřený (1). Zpětná vazba poskytnutá během přezkumu by měla být pozitivní a konstruktivní, zaměřená na pomoc při vývoji a rozvoji vaší role. Dostanete písemné shrnutí recenze, včetně hodnocení vašeho výkonu, zpětné vazby a cílů pro nadcházející rok (1)."

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

Po dokončení cvičení je osvědčeným postupem odebrat všechny prostředky, které už nejsou potřeba.

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

Odstraňte prostředky Azure a odeberte zdrojový kód spuštěním následujícího azd příkazu:

azd down --purge --force

Mezi přepínače příkazů patří:

  • purge: Odstraněné prostředky se okamžitě důkladně vymažou. Tato možnost umožňuje opakovaně používat metriku tokenů Azure OpenAI za minutu (TPM).
  • force: Odstranění probíhá bezobslužně bez nutnosti souhlasu uživatele.

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

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 nárocí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. Na řídicím panelu vyhledejte aktuálně spuštěné prostory kódu pocházející z Azure-Samples/azure-search-openai-demo úložiště GitHub.

    Snímek obrazovky se všemi spuštěnými službami GitHub Codespaces, včetně jejich stavu a šablon

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

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

Získání pomoci

Toto ukázkové úložiště nabízí informace o řešení potíží.

Pokud se váš problém nevyřeší, přidejte svůj problém na webovou stránku Problémy úložiště.

  • Získejte zdrojový kód pro ukázku použitou v tomto článku
  • Vytvořte chatovací aplikaci s architekturou osvědčených postupů pomocí Azure OpenAI.
  • Řízení přístupu v generativních aplikacích AI pomocí Azure AI Search
  • Vytvořte řešení OpenAI připravené pro podniky pomocí služby Azure API Management.
  • Výkonnější než vyhledávání pomocí vektorů díky schopnostem hybridního vyhledávání a hodnocení