Sdílet prostřednictvím


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

Přečtěte si, jak do aplikace přidat vyrovnávání zatížení, abyste rozšířili chatovací aplikaci nad rámec limitů tokenu služby Azure OpenAI a kvót modelu. 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 nasazení dvou samostatných vzorů:

  • Chatovací aplikace

    • Pokud jste chatovací aplikaci ještě nenasadili, počkejte po nasazení ukázky nástroje pro vyrovnávání zatížení.

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

    • Chatovací aplikace je 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é referenční implementace, které se dají snadno nasadit. 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 tokenů a modelů, je chatovací aplikace, která používá 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í ve službě Container Apps. Toto řešení bezproblémově zpřístupňuje jeden koncový bod z 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

Kontejnerová aplikace je umístěna před sadou prostředků Azure OpenAI. Aplikace kontejneru řeší dva scénáře: normální a omezené. Během normálního scénáře, kdy je k dispozici kvóta tokenu a modelu, vrátí prostředek Azure OpenAI 200 zpět prostřednictvím aplikace kontejneru a aplikačního serveru.

Diagram znázorňují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 kvůli omezením kvót, kontejnerová aplikace může okamžitě zkusit jiný prostředek Azure OpenAI, aby splnila původní požadavek chatovací aplikace.

diagram, který ukazuje scénář omezování s chybovým kódem odpovědi 429 a hlavičkou, která udává, kolik sekund musí klient čekat, než může zkusit znovu.

Požadavky

Otevření ukázkové aplikace nástroje pro vyrovnávání zatížení služby Container Apps

GitHub Codespaces spouští vývojový kontejner spravovaný GitHubem s Visual Studio Code verzi pro web 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 v GitHub Codespaces.

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 viz GitHub Codespaces zahrnuté úložiště a hodiny jádra měsíčně.

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

  1. Přihlaste se k Azure Developer CLI pro ověření kroků zřizování a nasazení.

    azd auth login --use-device-code
    
  2. Nastavte proměnnou prostředí pro použití ověřování Azure CLI ve fázi po dokončení zřízení.

    azd config set auth.useAzCliAuth "true"
    
  3. Nasazení aplikace nástroje pro vyrovnávání zatížení:

    azd up
    

    Vyberte předplatné a oblast pro nasazení. Nemusí 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 kontejneru použijte následující příkaz:

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

Znovu nasadit chatovací aplikaci s koncovým bodem vyrovnávače zátěže

Tyto příklady jsou dokončeny 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 GitHub Codespaces Visual Studio Code
    .NET Otevřete v GitHub Codespaces Otevřít v Dev kontejnerech
    JavaScript Otevřít v GitHub Codespaces Otevřít v Dev kontejnerech
    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á říká back-endu chatovací aplikace, aby pro požadavky Azure OpenAI používala vlastní adresu URL:

    azd env set OPENAI_HOST azure_custom
    
  5. Přidejte následující proměnnou prostředí. Nahraďte <CONTAINER_APP_URL> adresou URL z předchozí části. Tato akce oznámí backendu chatové aplikace, jaká hodnota je nastavena pro vlastní adresu URL požadavku Azure OpenAI.

    azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
    
  6. Nasazení chatovací aplikace:

    azd up
    

Chatovací aplikaci teď můžete používat s jistotou, že je připravena na to, aby škálovala 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 webu Azure Portalvyhledejte skupinu prostředků.

  2. V seznamu prostředků ve skupině vyberte prostředek Azure Container Apps.

  3. Vyberte Monitorování>tok protokolu pro zobrazení protokolu.

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

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

    Snímek obrazovky ukazující streamování protokolu Azure Container Apps, s dvěma zvýrazněnými řádky protokolu, které znázorňují komentáře k protokolům

Když nástroj pro vyrovnávání zatížení obdrží stav, že požadavek překročí kvótu, nástroj pro vyrovnávání zatížení se automaticky otočí na jiný prostředek.

Konfigurace kvóty 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řena tak, aby se dala škálovat napříč mnoha uživateli bez vyčerpání omezení. 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ž dokončíte práci s chatovací aplikací a 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í zdrojů chatovací aplikace

Vraťte se do článku o chatovací aplikaci a uvolněte zdroje.

Vyčištění prostředků vyrovnávače zatížení při 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, abyste mohli znovu použít tokeny služby Azure OpenAI za minutu.
  • force: Odstranění probíhá bezobslužně bez nutnosti souhlasu uživatele.

Vyčištění GitHub Codespaces a Visual Studio Code

Odstraněním prostředí GitHub Codespaces zaručíte, že můžete co nejvíce využít množství bezplatných hodin na jádro, které máte k dispozici na svém účtu.

Důležitý

Další informace o oprávněních vašeho účtu GitHub najdete v části GitHub Codespaces, kde je uvedeno měsíční zahrnuté úložiště a hodiny zpracování.

  1. Přihlaste se k řídicímu panelu GitHub Codespaces.

  2. Vyhledejte aktuálně spuštěné codespaces, které pocházejí z úložiště azure-samples/openai-aca-lb na GitHubu.

    snímek obrazovky, který zobrazuje všechny spuštěné Codespaces, včetně jejich stavu a šablon

  3. Otevřete kontextovou nabídku pro prostor pro kód, a pak vyberte Odstranit.

    Snímek obrazovky, který zobrazuje místní nabídku pro jeden kódový prostor se zvýrazněnou volbou Odstranit

Získání nápovědy

Pokud máte potíže s nasazením vyrovnávače zatížení služby Azure API Management, přidejte svůj problém na webovou stránku problémů úložiště.

Ukázkový kód

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

K zátěžovým testům chatovací aplikace použijte azure Load Testing.