Udostępnij za pośrednictwem


Skalowanie interfejsu Azure OpenAI na potrzeby czatu platformy .NET przy użyciu narzędzia RAG z usługą Azure Container Apps

Dowiedz się, jak dodać równoważenie obciążenia do aplikacji, aby rozszerzyć aplikację czatu poza limity przydziału tokenu usługi Azure OpenAI i modelu. To podejście używa usługi Azure Container Apps do tworzenia trzech punktów końcowych usługi Azure OpenAI, a także podstawowego kontenera do kierowania ruchu przychodzącego do jednego z trzech punktów końcowych.

Ten artykuł wymaga wdrożenia dwóch oddzielnych przykładów:

  • Aplikacja do czatu

    • Jeśli aplikacja czatu nie została jeszcze wdrożona, poczekaj na wdrożenie przykładu modułu równoważenia obciążenia.

    • Jeśli aplikacja czatu została już wdrożona raz, zmienisz zmienną środowiskową tak, aby obsługiwała niestandardowy punkt końcowy dla modułu równoważenia obciążenia i ponownie ją wdrożysz.

    • Aplikacja do czatu dostępna w następujących językach:

  • Aplikacja modułu równoważenia obciążenia

Uwaga

W tym artykule użyto co najmniej jednego szablonu aplikacji sztucznej inteligencji jako podstawy przykładów i wskazówek w artykule. Szablony aplikacji sztucznej inteligencji zapewniają dobrze utrzymywane, łatwe w wdrażaniu implementacje referencyjne, które pomagają zapewnić wysokiej jakości punkt wyjścia dla aplikacji sztucznej inteligencji.

Architektura równoważenia obciążenia usługi Azure OpenAI za pomocą usługi Azure Container Apps

Ponieważ zasób usługi Azure OpenAI ma określone limity przydziału tokenu i modelu, aplikacja czatu korzystająca z jednego zasobu usługi Azure OpenAI jest podatna na błędy konwersacji z powodu tych limitów.

Diagram przedstawiający architekturę aplikacji czatu z wyróżnionym zasobem usługi Azure OpenAI.

Aby użyć aplikacji do czatu bez osiągnięcia tych limitów, użyj rozwiązania o zrównoważonym obciążeniu w usłudze Azure Container Apps. To rozwiązanie bezproblemowo uwidacznia pojedynczy punkt końcowy z usługi Azure Container Apps na serwerze aplikacji czatu.

Diagram przedstawiający architekturę aplikacji czatu z usługą Azure Container Apps przed trzema zasobami usługi Azure OpenAI.

Aplikacja Azure Container znajduje się przed zestawem zasobów usługi Azure OpenAI. Aplikacja kontenera rozwiązuje dwa scenariusze: normalne i ograniczone. W normalnym scenariuszu, w którym jest dostępny limit przydziału tokenu i modelu, zasób usługi Azure OpenAI zwraca wartość 200 z powrotem za pośrednictwem aplikacji kontenera i serwera aplikacji.

Diagram przedstawiający normalny scenariusz. W normalnym scenariuszu przedstawiono trzy grupy punktów końcowych usługi Azure OpenAI z pierwszą grupą dwóch punktów końcowych uzyskujących pomyślny ruch.

Gdy zasób znajduje się w scenariuszu z ograniczeniami, takim jak ze względu na limity przydziału, aplikacja kontenera platformy Azure może natychmiast ponowić próbę innego zasobu usługi Azure OpenAI, aby zapełnić oryginalne żądanie aplikacji do czatu.

Diagram przedstawiający scenariusz ograniczania przepustowości z kodem odpowiedzi z błędem 429 i nagłówkiem odpowiedzi o liczbie sekund, przez które klient musi czekać, aby ponowić próbę.

Wymagania wstępne

  • Subskrypcja platformy Azure. Utwórz bezpłatnie

  • Dostęp jest udzielany usłudze Azure OpenAI w żądanej subskrypcji platformy Azure.

    Obecnie dostęp do tej usługi jest udzielany tylko przez aplikację. Należy ubiegać się o dostęp do usługi Azure OpenAI.

  • Kontenery deweloperskie są dostępne dla obu przykładów z wszystkimi zależnościami wymaganymi do ukończenia tego artykułu. Kontenery deweloperskie można uruchamiać w usłudze GitHub Codespaces (w przeglądarce) lub lokalnie przy użyciu programu Visual Studio Code.

Otwórz przykładową aplikację usługi Container Apps dla lokalnego równoważenia obciążenia

Usługa GitHub Codespaces uruchamia kontener deweloperski zarządzany przez usługę GitHub za pomocą programu Visual Studio Code dla sieci Web jako interfejsu użytkownika. W przypadku najprostszego środowiska programistycznego użyj usługi GitHub Codespaces, aby wstępnie zainstalować odpowiednie narzędzia deweloperskie i zależności, aby ukończyć ten artykuł.

Otwórz ten projekt w usłudze GitHub Codespaces

Ważne

Wszystkie konta usługi GitHub mogą korzystać z usługi Codespaces przez maksymalnie 60 godzin bezpłatnych każdego miesiąca z 2 podstawowymi wystąpieniami. Aby uzyskać więcej informacji, zobacz GitHub Codespaces monthly included storage and core hours (Miesięczne miejsca do magazynowania i godzin rdzeni usługi GitHub Codespaces).

Wdrażanie modułu równoważenia obciążenia usługi Azure Container Apps

  1. Zaloguj się do interfejsu wiersza polecenia dewelopera platformy Azure, aby zapewnić uwierzytelnianie w krokach aprowizacji i wdrażania.

    azd auth login --use-device-code
    
  2. Ustaw zmienną środowiskową, aby używać uwierzytelniania interfejsu wiersza polecenia platformy Azure do kroku po aprowizacji.

    azd config set auth.useAzCliAuth "true"
    
  3. Wdróż aplikację modułu równoważenia obciążenia.

    azd up
    

    Musisz wybrać subskrypcję i region wdrożenia. Nie muszą one być tą samą subskrypcją i regionem co aplikacja do czatu.

  4. Przed kontynuowaniem zaczekaj na ukończenie wdrażania.

Pobieranie punktu końcowego wdrożenia

  1. Użyj następującego polecenia, aby wyświetlić wdrożony punkt końcowy dla aplikacji kontenera platformy Azure.

    azd env get-values
    
  2. Skopiuj wartość CONTAINER_APP_URL. Będzie on używany w następnej sekcji.

Ponowne wdrażanie aplikacji czatu za pomocą punktu końcowego modułu równoważenia obciążenia

Zostały one ukończone w przykładzie aplikacji do czatu.

  1. Otwórz przykładowy kontener deweloperski aplikacji czatu, korzystając z jednej z następujących opcji.

    Język Środowiska codespace Visual Studio Code
    .NET Otwieranie w usłudze GitHub Codespaces Otwórz w kontenerach deweloperskich
    JavaScript Otwieranie w usłudze GitHub Codespaces Otwórz w kontenerach deweloperskich
    Python Otwieranie w usłudze GitHub Codespaces Otwórz w kontenerach deweloperskich
  2. Zaloguj się do interfejsu wiersza polecenia dla deweloperów platformy Azure (AZD).

    azd auth login
    

    Zakończ instrukcje logowania.

  3. Utwórz środowisko AZD o nazwie takiej jak chat-app.

    azd env new <name>
    
  4. Dodaj następującą zmienną środowiskową, która informuje zaplecze aplikacji Czat o użyciu niestandardowego adresu URL dla żądań OpenAI.

    azd env set OPENAI_HOST azure_custom
    
  5. Dodaj następującą zmienną środowiskową, podstawiając <CONTAINER_APP_URL> adres URL z poprzedniej sekcji. Ta akcja informuje zaplecze aplikacji Czat o tym, jaka jest wartość niestandardowego adresu URL żądania OpenAI.

    azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
    
  6. Wdróż aplikację do czatu.

    azd up
    

Teraz możesz używać aplikacji do czatu z ufnością, że została utworzona do skalowania w wielu użytkownikach bez wyczerpania limitu przydziału.

Przesyłanie strumieniowe dzienników w celu wyświetlenia wyników modułu równoważenia obciążenia

  1. W witrynie Azure Portal wyszukaj grupę zasobów.

  2. Z listy zasobów w grupie wybierz zasób aplikacji kontenera.

  3. Wybierz pozycję Monitorowanie —> strumień dziennika, aby wyświetlić dziennik.

  4. Użyj aplikacji do czatu, aby wygenerować ruch w dzienniku.

  5. Poszukaj dzienników, które odwołują się do zasobów usługi Azure OpenAI. Każdy z trzech zasobów ma swoją tożsamość liczbową w komentarzu dziennika rozpoczynającym się od Proxying to https://openai3, gdzie 3 wskazuje trzeci zasób usługi Azure OpenAI.

    Zrzut ekranu przedstawiający dzienniki przesyłania strumieniowego aplikacji kontenera platformy Azure z dwoma liniami dzienników z dużymi światłami, które pokazują komentarz dziennika.

  6. Gdy używasz aplikacji do czatu, gdy moduł równoważenia obciążenia otrzymuje stan przekroczenia limitu przydziału, moduł równoważenia obciążenia automatycznie obraca się do innego zasobu.

Konfigurowanie tokenów na minutę przydziału (TPM)

Domyślnie każdy z wystąpień interfejsu OpenAI w module równoważenia obciążenia zostanie wdrożony z 30 000 modułów TPM (tokenów na minutę). Możesz użyć aplikacji czatu z ufnością, że została utworzona w celu skalowania wielu użytkowników bez wyczerpania limitu przydziału. Zmień tę wartość, gdy:

  • Występują błędy pojemności wdrożenia: niższa ta wartość.
  • Planowanie większej pojemności, podnieś wartość.
  1. Użyj następującego polecenia, aby zmienić wartość.

    azd env set OPENAI_CAPACITY 50
    
  2. Ponownie wdróż moduł równoważenia obciążenia.

    azd up
    

Czyszczenie zasobów

Gdy skończysz z aplikacją czatu i modułem równoważenia obciążenia, wyczyść zasoby. Zasoby platformy Azure utworzone w tym artykule są rozliczane z subskrypcją platformy Azure. Jeśli nie spodziewasz się, że te zasoby będą potrzebne w przyszłości, usuń je, aby uniknąć naliczania dodatkowych opłat.

Czyszczenie zasobów aplikacji do czatu

Wróć do artykułu aplikacji czatu, aby wyczyścić te zasoby.

Czyszczenie zasobów usługi równoważenia obciążenia

Uruchom następujące polecenie interfejsu wiersza polecenia dla deweloperów platformy Azure, aby usunąć zasoby platformy Azure i usunąć kod źródłowy:

azd down --purge --force

Przełączniki zapewniają:

  • purge: Usunięte zasoby są natychmiast czyszczone. Umożliwia to ponowne użycie modułu TPM usługi Azure OpenAI.
  • force: Usunięcie odbywa się w trybie dyskretnym bez konieczności wyrażania zgody użytkownika.

Czyszczenie usługi GitHub Codespaces

Usunięcie środowiska Usługi GitHub Codespaces gwarantuje, że możesz zmaksymalizować ilość bezpłatnych godzin na godziny korzystania z konta.

Ważne

Aby uzyskać więcej informacji na temat uprawnień konta usługi GitHub, zobacz Artykuł GitHub Codespaces monthly included storage and core hours (Miesięczne miejsca do magazynowania i godzin rdzeni w usłudze GitHub).

  1. Zaloguj się do pulpitu nawigacyjnego usługi GitHub Codespaces (https://github.com/codespaces).

  2. Znajdź aktualnie uruchomione środowisko Codespaces pochodzące z azure-samples/openai-aca-lb repozytorium GitHub.

    Zrzut ekranu przedstawiający wszystkie uruchomione obszary Codespace, w tym ich stan i szablony.

  3. Otwórz menu kontekstowe dla przestrzeni kodu, a następnie wybierz pozycję Usuń.

    Zrzut ekranu przedstawiający menu kontekstowe dla pojedynczej przestrzeni kodu z wyróżnioną opcją usuwania.

Uzyskaj pomoc

Jeśli masz problemy z wdrożeniem modułu równoważenia obciążenia usługi Azure API Management, zaloguj się do problemów z repozytorium.

Przykładowy kod

Przykłady używane w tym artykule obejmują:

Następny krok

  • Testowanie obciążenia platformy Azure do testowania obciążenia aplikacji do czatu