Skalieren von Azure OpenAI für Python-Chat mithilfe von RAG mit 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:
Lastenausgleichs-App
Anmerkung
In diesem Artikel werden eine oder mehrere KI-App-Vorlagen als Grundlage für die im Artikel verwendeten Beispiele und Anleitungen 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.
Um die Chat-App zu nutzen, ohne an diese Grenzen zu stoßen, verwenden Sie eine Lösung mit Lastausgleich mit Container Apps. Diese Lösung stellt nahtlos einen einzigen Endpunkt von Container Apps zu Ihrem Chat-App-Server zur Verfügung.
Die Container-App ist vor einer Reihe von Azure OpenAI-Ressourcen positioniert. Die Container-App löst zwei Szenarien: normal und gedrosselt. Während einer normales Szenario wo Token- und Modellkontingente verfügbar sind, gibt die Azure OpenAI-Ressource eine 200 über die Container-App und den App-Server zurück.
Wenn sich eine Ressource in einem Drosselungsszenario kann die Container-App aufgrund von Quotenbeschränkungen sofort eine andere Azure OpenAI-Ressource erneut versuchen, um die ursprüngliche Chat-App-Anfrage zu erfüllen.
Voraussetzungen
Ein Azure-Abonnement. Kostenlos eine erstellen.
Entwicklungscontainer sind für beide Beispiele mit allen Abhängigkeiten verfügbar, die zur Vervollständigung dieses Artikels erforderlich sind. Sie können die Entwicklercontainer in GitHub Codespaces (in einem Browser) oder lokal mit Visual Studio Code ausführen.
- GitHub-Konto
Öffnen Sie die Container Apps Load Balancer Beispielanwendung
GitHub Codespaces führt einen von GitHub verwalteten Entwicklungscontainer mit Visual Studio Code für das Web als Benutzeroberfläche. Verwenden Sie für die einfachste Entwicklungsumgebung GitHub Codespaces, damit Sie die richtigen Entwicklertools und Abhängigkeiten vorinstalliert haben, um diesen Artikel abzuschließen.
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 Balancer
Melden Sie sich bei der Azure Developer CLI an, um eine Authentifizierung für die Bereitstellungs- und Implementierungsschritte bereitzustellen.
azd auth login --use-device-code
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"
Stellen Sie die Load Balancer-Anwendung bereit:
azd up
Wählen Sie ein Abonnement und eine Region für die Bereitstellung aus. Es müssen nicht dasselbe Abonnement und dieselbe Region wie bei der Chat-App sein.
Warten Sie, bis die Bereitstellung abgeschlossen ist, bevor Sie fortfahren.
Abrufen des Bereitstellungsendpunkts
Verwenden Sie den folgenden Befehl, um den bereitgestellten Endpunkt für die Container-App anzuzeigen:
azd env get-values
Kopieren Sie den
CONTAINER_APP_URL
-Wert. Sie verwenden es im nächsten Abschnitt.
Verteilen Sie die Chat-Anwendung mit dem Lastausgleichsendpunkt neu
Diese Beispiele werden auf dem Chat-App-Beispiel vervollständigt.
Öffnen Sie den Dev-Container des Chat-App-Beispiels, indem Sie eine der folgenden Optionen verwenden.
Sprache GitHub Codespaces Visual Studio Code .NET JavaScript Python Melden Sie sich bei der Azure Developer CLI (
AZD
) an:azd auth login
Schließen Sie die Anmeldeanweisungen ab.
Erstellen einer
AZD
Umgebung mit einem Namen wiechat-app
:azd env new <name>
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
Fügen Sie die folgende Umgebungsvariable hinzu. Ersetzen Sie
<CONTAINER_APP_URL>
für 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>
Bereitstellen der Chat-App:
azd up
Sie können jetzt die Chat-App mit dem Vertrauen verwenden, dass sie für viele Benutzer entwickelt wurde, ohne dass das Kontingent überschritten wird.
Datenstromprotokolle zum Anzeigen der Ergebnisse des Lastenausgleichs
Durchsuchen Sie im Azure-Portal Ihre Ressourcengruppe.
Wählen Sie in der Liste der Ressourcen in der Gruppe die Azure-Container-Apps-Ressource aus.
Wählen Sie Überwachung>Log-Stream um das Protokoll anzuzeigen.
Verwenden Sie die Chat-App, um Datenverkehr im Protokoll zu generieren.
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, wobei3
die dritte Azure OpenAI-Ressource angibt.
Wenn der Load Balancer den Status erhält, dass die Anfrage die Quote überschreitet, wechselt er automatisch zu einer anderen Ressource.
Konfigurieren Sie die TPM-Quote
Standardmäßig wird jede Azure OpenAI-Instanz im Load Balancer mit einer Kapazität von 30.000 Token pro Minute (TPM) bereitgestellt. Sie können die Chat-App mit der Zuversicht verwenden, dass sie so konzipiert wurde, dass sie für viele Benutzer skaliert, ohne dass das Kontingent überschritten wird. Ändern Sie diesen Wert in folgenden Fällen:
- Sie erhalten Verteilungskapazitätsfehler: Verringern Sie den Wert.
- Sie benötigen eine höhere Kapazität: Erhöhen Sie den Wert.
Verwenden Sie den folgenden Befehl, um den Wert zu ändern:
azd env set OPENAI_CAPACITY 50
Stellen Sie den Load Balancer neu ein:
azd up
Bereinigen von Ressourcen
Wenn Sie mit der Chat-App und dem Lastausgleich fertig sind, räumen Sie die Ressourcen auf. 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.
Bereinigen Sie die Chat-App-Ressourcen
Rückgabe Sie zum Artikel über die Chat-App zurück, um die Ressourcen zu bereinigen:
Bereinigen Sie die hochgeladenen Lastenausgleichsressourcen
Führen Sie den folgenden Azure Developer CLI-Befehl aus, um die Azure-Ressourcen zu löschen und den Quellcode zu entfernen:
azd down --purge --force
Die Schalter bieten:
-
purge
: Gelöschte Ressourcen werden sofort gelöscht, sodass Sie die Azure OpenAI Service-Tokens 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 aufräumen
Das Löschen der GitHub Codespaces-Umgebung stellt sicher, dass Sie die Anzahl der kostenlosen Stunden pro Kernstunden, Berechtigung die Sie für Ihr Konto erhalten, maximieren können.
Wichtig
Weitere Informationen zu den Berechtigungen Ihres GitHub-Kontos finden Sie im Artikel zu monatlich enthaltener Speicherkapazität und Kernstunden in GitHub Codespaces.
Melden Sie sich bei der GitHub Codespaces Dashboard.
Suchen Sie Ihre derzeit laufenden Codespaces, die aus dem azure-beispiele/openai-aca-lb GitHub-Repository.
Öffnen Sie das Kontextmenü für den Codespace, und wählen Sie dann Löschen.
Hilfe anfordern
Wenn Sie Probleme beim Bereitstellen des Azure API Management-Lastenausgleichs haben, fügen Sie Ihr Problem dem Repository hinzu. Probleme Webseite.
Beispielcode
Beispiele, die in diesem Artikel verwendet werden, umfassen:
- Python-Chat-Anwendung mit Retrieval Augmented Generation (RAG)
- Azure Load Balancer with Azure Container Apps
Verwandte Inhalte
Verwenden Sie Azure Load Testing, um Ihre Chat-App einem Lasttest zu unterziehen.