Sdílet prostřednictvím


Škálování chatu Azure OpenAI pro .NET s využitím RAG s Azure Container Apps

Zjistěte, jak do aplikace přidat vyrovnávání zatížení, abyste mohli chatovací aplikaci rozšířit nad rámec limitů kvóty modelu a tokenu Azure OpenAI. Tento přístup používá Azure Container Apps k vytvoření tří koncových bodů Azure OpenAI a primárního kontejneru pro směrování příchozího provozu do jednoho ze tří koncových bodů.

Tento článek vyžaduje, abyste nasadili dva samostatné příklady:

  • Chatovací aplikace

    • Pokud jste chatovací aplikaci ještě nenasadili, počkejte, až se nejprve nasadí vzorek vyrovnávače zatížení.

    • Pokud jste chatovací aplikaci už jednou nasadili, změníte proměnnou prostředí tak, aby podporovala vlastní koncový bod nástroje pro vyrovnávání zatížení, a znovu ji nasadíte.

    • Chatovací aplikace dostupná v těchto jazycích:

  • Aplikace pro vyrovnávání zatížení

Poznámka

Tento článek používá jednu nebo více šablon aplikací AI jako základ pro příklady a pokyny v č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.

Architektura pro vyrovnávání zatížení Azure OpenAI s využitím Azure Container Apps

Vzhledem k tomu, že prostředek Azure OpenAI má konkrétní limity kvót tokenu a modelu, je chatovací aplikace využívající jeden prostředek Azure OpenAI náchylný k selhání konverzací kvůli těmto limitům.

diagram znázorňující architekturu chatovací aplikace se zvýrazněným prostředkem Azure OpenAI

Pokud chcete chatovací aplikaci používat bez dosažení těchto limitů, použijte řešení s vyrovnáváním zatížení se službou Azure Container Apps. Toto řešení bezproblémově zpřístupňuje jeden koncový bod z Azure Container Apps na váš chatovací aplikační server.

diagram znázorňující architekturu chatovacích aplikací s Azure Container Apps před třemi prostředky Azure OpenAI

Aplikace Azure Container se nachází před sadou prostředků Azure OpenAI. Aplikace Container App řeší dva scénáře: běžný a snížený výkon. Během normálního scénáře, kde je k dispozici kvóta tokenu a modelu, vrátí prostředek Azure OpenAI 200 zpět prostřednictvím container App a App Serveru.

diagram zobrazující normální scénář V normálním scénáři se zobrazují tři skupiny koncových bodů Azure OpenAI s první skupinou dvou koncových bodů, které získávají úspěšný provoz.

Pokud je prostředek v omezeném scénáři, jako jsou limity kvót, může aplikace Kontejner Azure okamžitě zkusit jiný prostředek Azure OpenAI, aby splnila původní žádost o chatovací aplikaci.

Diagram zobrazující scénář omezování se selhávajícím kódem odpovědi 429 a hlavičkou odpovědi, která uvádí, kolik sekund musí klient čekat, než může zkusit znovu.

Požadavky

  • Předplatné Azure. Vytvořit zdarma

  • Přístup udělený službě Azure OpenAI v požadovaném předplatném Azure

    V současné době je přístup k této službě udělen pouze aplikací. Měli byste požádat o přístup k Azure OpenAI.

  • dev containers jsou k dispozici pro obě ukázky se všemi závislostmi potřebnými k dokončení tohoto článku. Vývojové kontejnery můžete spouštět v GitHub Codespaces (v prohlížeči) nebo místně pomocí editoru Visual Studio Code.

Ukázková aplikace místního vyrovnávače zátěže pro kontejnerové aplikace

GitHub Codespaces spouští vývojový kontejner spravovaný GitHubem s Visual Studio Code pro webovou jako uživatelské 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.

Otevřít tento projekt v GitHub Codespaces

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, kde je zahrnuto měsíční úložiště a jádrové hodiny.

Nasazení nástroje pro vyrovnávání zatížení Azure Container Apps

  1. Přihlaste se k Azure Developer CLI a poskytněte autentizaci zřizovacím a nasazovacím krokům.

    azd auth login --use-device-code
    
  2. Nastavte proměnnou prostředí tak, aby používala ověřování Azure CLI pro krok po zřízení.

    azd config set auth.useAzCliAuth "true"
    
  3. Nasaďte aplikaci nástroje pro vyrovnávání zatížení.

    azd up
    

    Budete muset vybrat předplatné a oblast nasazení. Nemusí to být stejné předplatné a oblast jako chatovací aplikace.

  4. Než budete pokračovat, počkejte na dokončení nasazení.

Získejte koncový bod nasazení

  1. K zobrazení nasazeného koncového bodu pro aplikaci Kontejner Azure použijte následující příkaz.

    azd env get-values
    
  2. Zkopírujte hodnotu CONTAINER_APP_URL. Použijete ho v další části.

Opětovné nasazení aplikace Chat s koncovým bodem vyrovnávače zatížení

Ty jsou hotové v ukázce chatovací aplikace.

  1. Otevřete ukázkový vývojový kontejner chatovací aplikace pomocí jedné z následujících možností.

    Jazyk Codespaces Visual Studio Code
    .NET Otevřít v GitHub Codespaces Otevřít v Dev Containers
    JavaScript Otevřít v GitHub Codespaces Otevřít v Dev Containers
    Python Otevřít v GitHub Codespaces Otevřít v Dev Containers
  2. Přihlaste se k Azure Developer CLI (AZD).

    azd auth login
    

    Dokončete pokyny pro přihlášení.

  3. Vytvořte prostředí AZD s názvem, například chat-app.

    azd env new <name>
    
  4. Přidejte následující proměnnou prostředí, která umožňuje backend aplikace Chat používat vlastní URL pro požadavky OpenAI.

    azd env set OPENAI_HOST azure_custom
    
  5. Přidejte následující proměnnou prostředí, která nahrazuje <CONTAINER_APP_URL> adresy URL z předchozí části. Tato akce řekne back-endu chatovací aplikace, jaká je hodnota vlastní adresy URL požadavku OpenAI.

    azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
    
  6. Nasaďte chatovací aplikaci.

    azd up
    

Chatovací aplikaci nyní můžete používat s jistotou, že je vytvořena tak, aby se mohla škálovat pro mnoho uživatelů bez vyčerpání kvóty.

Streamování protokolů pro zobrazení výsledků nástroje pro vyrovnávání zatížení

  1. Na portálu Azurevyhledejte skupinu prostředků.

  2. V seznamu prostředků ve skupině vyberte prostředek Kontejnerová aplikace.

  3. Vyberte Sledování –> protokolový tok pro zobrazení protokolu.

  4. K vygenerování provozu v protokolu použijte chatovací aplikaci.

  5. Vyhledejte protokoly, které odkazují na prostředky Azure OpenAI. Každý ze tří prostředků má v komentáři protokolu svou číselnou identitu začínající Proxying to https://openai3, kde 3 označuje třetí prostředek Azure OpenAI.

    snímek obrazovky zobrazující streamovací protokoly aplikace Azure Container App se dvěma řádky protokolů s vysokým světlým indikátorem, který ukazuje komentář k protokolu.

  6. Když při používání chatovací aplikace obdrží nástroj pro vyrovnávání zatížení stav, že žádost překročila kvótu, nástroj pro vyrovnávání zatížení se automaticky otočí do jiného prostředku.

Nakonfigurujte kvótu TPM

Ve výchozím nastavení se každá instance Azure OpenAI v nástroji pro vyrovnávání zatížení nasadí s kapacitou 30 000 tokenů za minutu (TPM). Chatovací aplikaci můžete používat s jistotou, že je vytvořená tak, aby se dala škálovat napříč mnoha uživateli bez vyčerpání kvóty. Tuto hodnotu změňte v těchto případech:

  • Zobrazí se chyby kapacity nasazení: Snižte hodnotu.
  • Potřebujete vyšší kapacitu: Zvyšte hodnotu.
  1. Ke změně hodnoty použijte následující příkaz:

    azd env set OPENAI_CAPACITY 50
    
  2. Znovu nasaďte nástroj pro vyrovnávání zatížení:

    azd up
    

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

Až budete hotovi s chatovací aplikací i nástrojem pro vyrovnávání zatížení, vyčistěte prostředky. 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ů.

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

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

Vyčistit prostředky vyvažovače nahrávání

Spuštěním následujícího příkazu Azure Developer CLI odstraňte prostředky Azure a odeberte zdrojový kód:

azd down --purge --force

Přepínače poskytují:

  • purge: Odstraněné prostředky se okamžitě vymažou. To vám umožní opakovaně používat čip TPM Azure OpenAI.
  • 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 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 měsíční zahrnuté úložiště a hlavní hodiny v GitHub Codespaces.

  1. Přihlaste se k řídicímu panelu Codespaces GitHubu (https://github.com/codespaces).

  2. Vyhledejte aktuálně spuštěné Codespaces z úložiště azure-samples/openai-aca-lb na GitHubu.

    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 místní nabídky pro jeden prostor kódu se zvýrazněnou možností odstranit

Získání nápovědy

Pokud máte potíže s nasazením load balanceru služby Azure API Management, zapište svůj problém do sekce problémy úložiště .

Ukázkový kód

Ukázky použité v tomto článku zahrnují:

Další krok