Udostępnij za pośrednictwem


Skalowanie usługi Azure OpenAI dla języka JavaScript przy użyciu usługi Azure API Management

Dowiedz się, jak dodać równoważenie obciążenia na poziomie korporacyjnym do swojej aplikacji, aby rozszerzyć aplikację czatu ponad limity przydziału tokenów i modeli usługi Azure OpenAI Service. To podejście używa usługi Azure API Management do inteligentnego kierowania ruchem między trzema zasobami usługi Azure OpenAI.

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ć.
  • Moduł równoważenia obciążenia za pomocą usługi Azure API Management.

Uwaga

W tym artykule wykorzystano jeden lub więcej szablonów aplikacji sztucznej inteligencji jako podstawę 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 API Management

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ą API Management. To rozwiązanie bezproblemowo uwidacznia pojedynczy punkt końcowy z usługi API Management do serwera aplikacji czatu.

Diagram przedstawiający architekturę aplikacji czatu za pomocą usługi Azure API Management przed trzema zasobami usługi Azure OpenAI.

Zasób usługi API Management, jako warstwa interfejsu API, znajduje się przed zestawem zasobów usługi Azure OpenAI. Warstwa API ma zastosowanie do dwóch scenariuszy: normalny i przepustowość ograniczona. 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 warstwy interfejsu API i serwera aplikacji zaplecza.

Diagram przedstawiający normalny scenariusz z trzema grupami punktów końcowych usługi Azure OpenAI. Pierwsza grupa dwóch punktów końcowych uzyskuje pomyślny ruch.

Gdy zasób jest ograniczony z powodu limitów przydziału, warstwa API może natychmiast ponowić próbę użycia innego zasobu Azure OpenAI w celu realizacji 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ę.

Wymagania wstępne

Otwórz przykładową aplikację lokalnego modułu równoważenia obciążenia usługi Azure API Management

GitHub Codespaces uruchamia kontener deweloperski, zarządzany przez GitHub, z użyciem Visual Studio Code for the 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 w usłudze GitHub Codespaces.

Ważne

Wszystkie konta GitHub mogą korzystać z GitHub Codespaces przez maksymalnie 60 godzin bezpłatnie każdego miesiąca z dwoma rdzeniowymi instancjami. pl-PL: Aby uzyskać więcej informacji, zobacz miesięczny limit przestrzeni dyskowej i godzin rdzeni dla GitHub Codespaces.

Wdrażanie modułu równoważenia obciążenia usługi Azure API Management

  1. Aby wdrożyć moduł równoważenia obciążenia na platformie Azure, zaloguj się do interfejsu wiersza polecenia dewelopera platformy Azure (AZD):

    azd auth login
    
  2. Zakończ instrukcje logowania.

  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 tym samym regionem co aplikacja do czatu.

  4. Poczekaj na zakończenie wdrożenia, zanim przejdziesz dalej. Ten proces może potrwać do 30 minut.

Pobierz punkt końcowy równoważnika obciążenia

Uruchom następujące polecenie Bash, aby wyświetlić zmienne środowiskowe z wdrożenia. Te informacje będą potrzebne później.

azd env get-values | grep APIM_GATEWAY_URL

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

Te przykłady są wykonane na próbce 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 GitHub CodespacesOtwórz w GitHub Codespaces Open in Dev ContainersOtwórz w kontenerach deweloperskich
    JavaScript Open in GitHub CodespacesOtwórz w GitHub Codespaces Otwórz w kontenerach deweloperskichOtwórz w kontenerach deweloperskich
    Python Otwórz w GitHub CodespacesOtwórz w GitHub Codespaces Open in Dev ContainersOtwórz w kontenerach deweloperskich
  2. Zaloguj się do 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ą, która informuje zaplecze aplikacji czatu o tym, jaka jest wartość niestandardowego adresu URL żądania usługi Azure OpenAI:

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

    azd up
    

Konfigurowanie limitu 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żyć aplikacji czatu z ufnością, że została utworzona tak, by mogła obsługiwać wielu użytkowników bez wyczerpania limitu. Zmień tę wartość, gdy:

  • Pojawiają się błędy związane z pojemnością wdrożenia: zmniejsz wartość.
  • Potrzebna jest większa pojemność: 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

Powróć do artykułu dotyczącego aplikacji czatu, aby wyczyścić te zasoby.

Czyszczenie zasobów modułu 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 usuwane. Tokeny usługi Azure OpenAI można ponownie używać co minutę.
  • force: Usunięcie odbywa się bez informowania i bez konieczności wyrażania zgody użytkownika.

Czyszczenie zasobów

Usunięcie środowiska GitHub Codespaces pozwala na maksymalne wykorzystanie przydzielonych darmowych godzin procesora dla twojego konta.

Ważne

Aby uzyskać więcej informacji na temat uprawnień konta GitHub, zobacz GitHub Codespaces: miesięczna zawarta przestrzeń do przechowywania i godziny rdzeni.

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

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

    Zrzut ekranu przedstawiający wszystkie uruchomione przestrzenie kodu, w tym ich stan i szablony.

  3. Otwórz menu kontekstowe elementu GitHub Codespaces, a następnie wybierz pozycję Usuń.

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

Uzyskaj pomoc

Jeśli masz problemy z wdrożeniem modułu równoważenia obciążenia w usłudze Azure API Management, dodaj swój problem na stronie sekcji Zgłoszenia repozytorium.

Przykładowy kod

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

Następne kroki