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 swojej aplikacji, aby rozszerzyć aplikację czatu poza limity tokenów i modeli w usłudze Azure OpenAI Service. To podejście używa usługi Azure Container Apps do tworzenia trzech punktów końcowych usługi Azure OpenAI i podstawowego kontenera w celu 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, zmień zmienną środowiskową tak, aby obsługiwała niestandardowy punkt końcowy modułu równoważenia obciążenia i ponownie ją wdrożyć.

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

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

Notatka

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 implementacje referencyjne, które można łatwo wdrożyć. Pomagają one 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 z usługą Container Apps. To rozwiązanie bezproblemowo uwidacznia pojedynczy punkt końcowy z usługi Container Apps na serwer aplikacji czatu.

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

Aplikacja kontenerowa znajduje się przed zestawem zasobów 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 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 ograniczonym z powodu limitów przydziału, aplikacja kontenera może natychmiast ponowić próbę innego zasobu usługi Azure OpenAI w celu spełnienia oryginalnego żądania aplikacji czatu.

Diagram przedstawiający scenariusz ograniczania przepustowości z kodem odpowiedzi z błędem 429 i nagłówkiem odpowiedzi, ile sekund klient musi poczekać na ponowną próbę.

Warunki wstępne

  • Subskrypcja platformy Azure. Utwórz jeden za darmo.

  • Dostęp udzielony 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.

  • dev containers 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.

  • Do korzystania z usługi CodeSpaces wymagane jest tylko konto usługi GitHub

Otwieranie przykładowej aplikacji modułu równoważenia obciążenia usługi Container Apps

  • GitHub Codespaces (zalecane)
  • programu Visual Studio Code

GitHub Codespaces uruchamia kontener deweloperski zarządzany przez GitHub, używając programu Visual Studio Code na potrzeby przeglądarki 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 w usłudze GitHub Codespaces.

Ważny

Wszystkie konta GitHub mogą korzystać z GitHub Codespaces do 60 godzin bezpłatnie każdego miesiąca z instancjami o dwóch rdzeniach. Aby uzyskać więcej informacji, zobacz co miesiąc uwzględnione w Usługach GitHub Codespaces zasoby magazynowe i godziny rdzenia.

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

  1. Zaloguj się do CLI programisty platformy Azure, aby zapewnić autoryzację na potrzeby aprowizacji i wdrażania.

    azd auth login --use-device-code
    
  2. Ustaw zmienną środowiskową, aby używać uwierzytelniania Azure CLI w kroku po aprowizacji.

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

    azd up
    

    Wybierz subskrypcję i region wdrożenia. Nie muszą być tą samą subskrypcją i regionem co aplikacja do czatowania.

  4. Poczekaj na zakończenie wdrożenia, zanim przejdziesz dalej.

Pobierz punkt końcowy wdrożenia

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

    azd env get-values
    
  2. Skopiuj wartość CONTAINER_APP_URL. Należy go użyć w następnej sekcji.

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

Te przykłady zostały ukończone w przykładzie aplikacji czatu.

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

    Język GitHub Codespaces Visual Studio Code
    .NET Otwórz w usłudze GitHub Codespaces Otwórz w kontenerach deweloperskich
    JavaScript Otwórz w usłudze GitHub Codespaces Otwórz w kontenerach deweloperskich
    Pyton Otwórz w usłudze GitHub Codespaces Otwórz w kontenerach deweloperskich
  2. Zaloguj się do narzędzia Azure Developer CLI (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 czatu o użyciu niestandardowego adresu URL dla żądań usługi Azure OpenAI:

    azd env set OPENAI_HOST azure_custom
    
  5. Dodaj następującą zmienną środowiskową. Zastąp <CONTAINER_APP_URL> adresem URL z poprzedniej sekcji. Ta akcja informuje zaplecze aplikacji czatu o tym, jaka jest wartość niestandardowego adresu URL żądania usługi Azure OpenAI.

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

    azd up
    

Teraz możesz używać aplikacji do czatu z pewnością siebie, że została stworzona do skalowania dla wielu użytkowników, nie wyczerpując limitu.

Wyświetl dzienniki w czasie rzeczywistym, aby zobaczyć wyniki równoważnika obciążenia.

  1. W witrynie Azure Portalwyszukaj grupę zasobów.

  2. Z listy zasobów w grupie wybierz zasób usługi Azure Container Apps.

  3. Wybierz pozycję Monitorowanie>strumienia 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 usługi Azure Container Apps z dwoma wierszami dziennika wyróżnionymi w celu zademonstrowania komentarzy dziennika.

Gdy moduł równoważenia obciążenia otrzymuje informację, że żądanie przekracza limit przydziału, automatycznie przełącza się na inny zasób.

Skonfiguruj limit modułu TPM

Domyślnie każde wystąpienie usługi Azure OpenAI w module równoważenia obciążenia jest wdrażane z pojemnością 30 000 tokenów na minutę (TPM). Możesz używać aplikacji czatu z pewnością, że została stworzona do obsługi wielu użytkowników bez wyczerpania limitu. Zmień tę wartość, gdy:

  • Występują błędy dotyczące pojemności wdrożenia: zmniejsz wartość.
  • Potrzebujesz 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

Po zakończeniu pracy 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 o aplikacji czatu, aby wyczyścić zasoby.

Czyszczenie zasobów równoważnika obciążenia przesyłu

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 usuwane, co pozwala na ponowne wykorzystanie tokenów dla usługi Azure OpenAI na minutę.
  • force: usuwanie odbywa się dyskretnie bez konieczności wyrażania zgody użytkownika.

Czyszczenie usług GitHub Codespaces i Visual Studio Code

Usunięcie środowiska GitHub Codespaces zapewnia maksymalizację liczby bezpłatnych godzin przysługujących na twoje konto.

Ważny

Aby uzyskać więcej informacji na temat uprawnień Twojego konta w usłudze GitHub, zobacz miesięczny limit magazynowania i godzin rdzeni w ramach GitHub Codespaces.

  1. Zaloguj się do pulpitu nawigacyjnego usługi GitHub Codespaces.

  2. Znajdź obecnie uruchomione przestrzenie kodu pochodzące z repozytorium azure-samples/openai-aca-lb GitHub.

    Zrzut ekranu przedstawiający wszystkie uruchomione przestrzenie kodu, 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ą Usuń.

Uzyskiwanie pomocy

Jeśli masz problemy z wdrożeniem równoważenia obciążenia usługi Azure API Management, dodaj swoją kwestię do sekcji Problemy w repozytorium.

Przykładowy kod

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

Następny krok

  • Użyj narzędzia Azure Load Testing do testowania obciążenia Twojej aplikacji czatowej