Freigeben über


Skalieren von Azure OpenAI für eine Java-Chat-Anwendung unter Verwendung von RAG und Azure Container Apps.

Erfahren Sie, wie Sie Ihrer Anwendung Lastenausgleich hinzufügen, um die Chat-App über die Azure OpenAI-Diensttoken- und Modellkontingentgrenzen hinaus zu erweitern. Dieser Ansatz verwendet Azure-Container-Apps, um drei Azure OpenAI-Endpunkte und einen primären Container zu erstellen, um eingehenden Datenverkehr an einen der drei Endpunkte zu leiten.

In diesem Artikel müssen Sie zwei separate Beispiele bereitstellen:

  • Chat-App

    • Wenn Sie die Chat-App noch nicht bereitgestellt haben, warten Sie, bis das Beispiel zum Lastenausgleich bereitgestellt wurde.

    • Wenn Sie die Chat-App bereits einmal bereitgestellt haben, ändern Sie die Umgebungsvariable so, dass ein benutzerdefinierter Endpunkt für das Lastenausgleichsmodul unterstützt und erneut bereitgestellt wird.

    • Die Chat-App ist in diesen Sprachen verfügbar:

  • Load Balancer-Anwendung

Anmerkung

In diesem Artikel wird mindestens eine KI-App-Vorlage als Grundlage für die Beispiele und Anleitungen im Artikel verwendet. KI-App-Vorlagen bieten Ihnen gut gepflegte Referenzimplementierungen, die einfach bereitzustellen sind. Sie tragen dazu bei, einen qualitativ hochwertigen Ausgangspunkt für Ihre KI-Apps zu gewährleisten.

Architektur für den Lastenausgleich von Azure OpenAI mit Azure-Container-Apps

Da die Azure OpenAI-Ressource bestimmte Token- und Modellkontingentbeschränkungen aufweist, ist eine Chat-App, die eine einzelne Azure OpenAI-Ressource verwendet, anfällig für Unterhaltungsfehler aufgrund dieser Grenzwerte.

Diagramm, das die Architektur der Chat-App mit hervorgehobener Azure OpenAI-Ressource zeigt.

Um die Chat-App zu verwenden, ohne diese Grenzwerte zu erreichen, verwenden Sie eine Lastenausgleichslösung mit Container-Apps. Diese Lösung stellt nahtlos einen einzelnen Endpunkt aus Container-Apps für Ihren Chat-App-Server bereit.

Diagramm, das die Architektur von Chat-Apps mit Azure-Container-Apps vor drei Azure OpenAI-Ressourcen zeigt.

Die Container-App befindet sich vor einer Reihe von Azure OpenAI-Ressourcen. Die Container-App löst zwei Szenarien: normal und gedrosselt. Während eines normalen Szenarios, in dem Token- und Modellkontingente verfügbar sind, gibt die Azure OpenAI-Ressource eine 200 über die Container-App und den App-Server zurück.

Diagramm, das ein normales Szenario zeigt. Das normale Szenario zeigt drei Azure OpenAI-Endpunktgruppen mit der ersten Gruppe von zwei Endpunkten, die erfolgreichen Datenverkehr erhalten.

Wenn sich eine Ressource in einem eingeschränkten Szenario befindet, aufgrund von Kontingentbeschränkungen, kann die Container-App sofort eine andere Azure OpenAI-Ressource wiederholen, um die ursprüngliche Chat-App-Anforderung zu erfüllen.

Diagramm, das ein Drosselungsszenario mit einem HTTP-Statuscode 429 und einem Antwortheader zeigt, aus dem hervorgeht, wie viele Sekunden der Client warten muss, um es erneut zu versuchen.

Voraussetzungen

Öffnen Sie die Container-Apps-Beispielanwendung für den Load Balancer

GitHub Codespaces führt einen von GitHub verwalteten Entwicklungscontainer mit Visual Studio Code für Web als Benutzeroberfläche aus. Verwenden Sie für die einfachste Entwicklungsumgebung GitHub Codespaces, damit Sie die richtigen Entwicklertools und Abhängigkeiten vorinstalliert haben, um diesen Artikel abzuschließen.

In GitHub Codespaces öffnen.

Wichtig

Alle GitHub-Konten können GitHub Codespaces für bis zu 60 Stunden kostenlos jeden Monat mit zwei Kerninstanzen verwenden. Weitere Informationen finden Sie im Artikel zu monatlich enthaltener Speicherkapazität und Kernstunden in GitHub Codespaces.

Bereitstellen des Azure-Container-Apps-Load-Balancers

  1. Melden Sie sich bei der Azure Developer CLI an, um die Authentifizierung für die Bereitstellungs- und Bereitstellungsschritte bereitzustellen:

    azd auth login --use-device-code
    
  2. Legen Sie eine Umgebungsvariable fest, um die Azure CLI-Authentifizierung für den Schritt nach der Bereitstellung zu verwenden:

    azd config set auth.useAzCliAuth "true"
    
  3. Bereitstellen der Lastenausgleichs-App:

    azd up
    

    Wählen Sie ein Abonnement und eine Region für die Bereitstellung aus. Sie müssen nicht dasselbe Abonnement und dieselbe Region wie die Chat-App sein.

  4. Warten Sie, bis die Bereitstellung abgeschlossen ist, bevor Sie fortfahren.

Abrufen des Bereitstellungsendpunkts

  1. Verwenden Sie den folgenden Befehl, um den bereitgestellten Endpunkt für die Container-App anzuzeigen:

    azd env get-values
    
  2. Kopieren Sie den CONTAINER_APP_URL-Wert. Sie verwenden es im nächsten Abschnitt.

Neubereitstellung der Chat-App mit dem Lastenausgleich-Endpoint

Diese Beispiele werden im Chat-App-Beispiel abgeschlossen.

  1. Öffnen Sie den Dev-Container des Chat-App-Beispiels, indem Sie eine der folgenden Optionen verwenden.

    Sprache GitHub Codespaces Visual Studio Code
    .NET In GitHub Codespaces öffnen In Dev-Containern öffnen
    JavaScript In GitHub Codespaces öffnen In Dev-Containern öffnen
    Python In GitHub Codespaces öffnen In Dev-Containern öffnen
  2. Melden Sie sich bei der Azure Developer CLI an (AZD):

    azd auth login
    

    Schließen Sie die Anmeldungsanweisungen ab.

  3. Erstellen einer AZD Umgebung mit einem Namen wie chat-app:

    azd env new <name>
    
  4. Fügen Sie die folgende Umgebungsvariable hinzu, die das Back-End der Chat-App angibt, eine benutzerdefinierte URL für die Azure OpenAI-Anforderungen zu verwenden:

    azd env set OPENAI_HOST azure_custom
    
  5. Fügen Sie die folgende Umgebungsvariable hinzu. Ersetzen Sie <CONTAINER_APP_URL> durch die URL aus dem vorherigen Abschnitt. Diese Aktion teilt dem Back-End der Chat-App mit, was der Wert der benutzerdefinierten URL für die Azure OpenAI-Anforderung ist.

    azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
    
  6. Bereitstellen der Chat-App:

    azd up
    

Verwenden Sie die Chat-Anwendung mit dem Vertrauen, dass sie für eine Vielzahl von Benutzern skaliert, ohne dass das Kontingent verbraucht wird.

Datenstromprotokolle zum Anzeigen der Ergebnisse des Lastenausgleichs

  1. Durchsuchen Sie im Azure-Portal Ihre Ressourcengruppe.

  2. Wählen Sie in der Liste der Ressourcen in der Gruppe die Azure-Container-Apps-Ressource aus.

  3. Wählen Sie denÜberwachungsprotokolldatenstrom> aus, um das Protokoll anzuzeigen.

  4. Verwenden Sie die Chat-App, um Datenverkehr im Protokoll zu generieren.

  5. Suchen Sie nach den Protokollen, die auf die Azure OpenAI-Ressourcen verweisen. Jede der drei Ressourcen weist ihre numerische Identität im Protokollkommentar auf, der mit Proxying to https://openai3 beginnt, wobei 3 die dritte Azure OpenAI-Ressource zeigt.

    Screenshot, der Azure Container Apps-Streamingprotokolle mit zwei hervorgehobenen Protokollzeilen zeigt, um die Protokollkommentare zu veranschaulichen.

Wenn der Lastenausgleicher den Status erhält, dass die Anforderung das Kontingent überschreitet, wechselt der Lastenausgleicher automatisch zu einer anderen Ressource.

Konfigurieren des TPM-Kontingents

Standardmäßig werden alle Azure OpenAI-Instanzen im Lastenausgleich mit einer Kapazität von 30.000 TPM (Token pro Minute) bereitgestellt. Sie können die Chat-App mit der Gewissheit verwenden, dass sie viele Benutzer problemlos bedienen kann, ohne das Limit zu überschreiten. Ändern Sie diesen Wert in folgenden Fällen:

  • Est treten Kapazitätsfehler bei der Bereitstellung auf: Verringern Sie diesen Wert.
  • Sie benötigen eine höhere Kapazität: Erhöhen Sie den Wert.
  1. Verwenden Sie den folgenden Befehl, um den Wert zu ändern:

    azd env set OPENAI_CAPACITY 50
    
  2. Stellen Sie den Load Balancer erneut bereit:

    azd up
    

Bereinigen von Ressourcen

Wenn Sie die Arbeit mit der Chat-App und dem Load Balancer abgeschlossen haben, bereinigen Sie die Ressourcen. Die in diesem Artikel erstellten Azure-Ressourcen werden Ihrem Azure-Abonnement in Rechnung gestellt. Wenn Sie nicht erwarten, dass diese Ressourcen in Zukunft benötigt werden, löschen Sie sie, um mehr Gebühren zu vermeiden.

Chat-App-Ressourcen bereinigen

Kehren Sie zum Artikel der Chat-App zurück, um die Ressourcen zu bereinigen:

Bereinigen Sie die hochgeladenen Lastenausgleichsressourcen

Löschen Sie die Azure-Ressourcen, und entfernen Sie den Quellcode:

azd down --purge --force

Die Schalter bieten:

  • purge: Gelöschte Ressourcen werden sofort gelöscht, sodass Sie die Azure OpenAI-Diensttoken pro Minute wiederverwenden können.
  • force: Die Löschung erfolgt im Hintergrund, ohne dass die Zustimmung des Benutzers erforderlich ist.

GitHub Codespaces und Visual Studio Code bereinigen

Durch das Löschen der GitHub Codespaces-Umgebung wird sichergestellt, dass Sie die anzahl der kostenlosen Berechtigungen pro Kernstunden maximieren können, die Sie für Ihr Konto erhalten.

Wichtig

Weitere Informationen zu den Berechtigungen Ihres GitHub-Kontos finden Sie im Artikel zu monatlich enthaltener Speicherkapazität und Kernstunden in GitHub Codespaces.

  1. Melden Sie sich beim GitHub Codespaces-Dashboardan.

  2. Suchen Sie nach Ihren derzeit ausgeführten Codespaces, die aus dem GitHub-Repository azure-samples/openai-aca-lb stammen.

    Screenshot mit allen laufenden Codespaces, einschließlich Status und Vorlagen.

  3. Öffnen Sie das Kontextmenü für den Codebereich, und wählen Sie dann Löschenaus.

    Screenshot, der das Kontextmenü für einen einzelnen Codespace mit hervorgehobener Option

Hilfe anfordern

Wenn Sie Probleme bei der Bereitstellung des Azure Container Apps-Load-Balancers haben, fügen Sie Ihr Problem zum Issues-Abschnitt des Repositorys auf der Webseite hinzu.

Beispielcode

Die folgenden Beispiele werden in diesem Artikel verwendet:

Nächster Schritt