Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Scopri come aggiungere il bilanciamento del carico alla tua applicazione per estendere l'applicazione di chat oltre i limiti di token e di quota del modello del servizio OpenAI di Azure. Questo approccio usa app contenitore di Azure per creare tre endpoint OpenAI di Azure e un contenitore primario per indirizzare il traffico in ingresso a uno dei tre endpoint.
Questo articolo richiede la distribuzione di due esempi distinti:
App di chat
Se non hai ancora distribuito l'app di chat, attendi fino a quando non viene distribuito l'esempio per il bilanciamento del carico.
Se l'app chat è già stata distribuita una sola volta, modificare la variabile di ambiente per supportare un endpoint personalizzato per il servizio di bilanciamento del carico e ridistribuirlo nuovamente.
L'app chat è disponibile in queste lingue:
App di bilanciamento del carico
Annotazioni
Questo articolo utilizza uno o più modelli di app di intelligenza artificiale come base per gli esempi e le linee guida presenti nell’articolo. I modelli di app di intelligenza artificiale offrono implementazioni di riferimento ben gestite che sono facili da distribuire. Consentono di garantire un punto di partenza di alta qualità per le app di intelligenza artificiale.
Architettura per il bilanciamento del carico di Azure OpenAI con Azure Container Apps
Poiché la risorsa OpenAI di Azure ha limiti di quota di token e modelli specifici, un'app di chat che usa una singola risorsa OpenAI di Azure è soggetta a errori di conversazione a causa di tali limiti.
Per usare l'app di chat senza raggiungere tali limiti, utilizzare una soluzione con bilanciamento del carico con Container Apps. Questa soluzione espone senza soluzione di continuità un singolo endpoint da Container Apps al server della tua app di chat.
L'app contenitore è posta davanti a un insieme di risorse OpenAI di Azure. L'app container risolve due scenari: normale e limitato. Durante uno scenario normale in cui è disponibile la quota di token e modelli, la risorsa Azure OpenAI restituisce un 200 tramite l'app contenitore e il server dell'app.
Quando una risorsa si trova in uno scenario limitato a causa dei limiti di quota, l'applicazione container può immediatamente tentare di utilizzare una risorsa OpenAI di Azure diversa per soddisfare la richiesta originale della chat app.
Prerequisiti
Una sottoscrizione di Azure. Crea uno gratuitamente
I container di sviluppo sono disponibili per entrambi gli esempi, con tutte le dipendenze richieste per completare questo articolo. È possibile eseguire i contenitori di sviluppo in GitHub Codespaces in un browser o in locale usando Visual Studio Code.
- Un account GitHub.
Apri l'app di esempio del bilanciamento del carico per Container Apps.
- GitHub Codespaces (scelta consigliata)
- Visual Studio Code
GitHub Codespaces esegue un contenitore di sviluppo gestito da GitHub, utilizzando Visual Studio Code per il Web come interfaccia utente. Per l'ambiente di sviluppo più semplice, usare GitHub Codespaces per avere gli strumenti di sviluppo e le dipendenze corretti preinstallati per completare questo articolo.
Importante
Tutti gli account GitHub possono usare GitHub Codespaces per un massimo di 60 ore gratuite ogni mese con due istanze principali. Per ulteriori informazioni, consultare Spazio di archiviazione e ore core mensili incluse in GitHub Codespaces.
Distribuire il bilanciatore del carico di Azure Container Apps
Accedi alla CLI Azure Developer per fornire l'autenticazione durante i passaggi di provisioning e distribuzione:
azd auth login --use-device-code
Impostare una variabile di ambiente per utilizzare l'autenticazione della CLI di Azure nella fase di post-provisioning.
azd config set auth.useAzCliAuth "true"
Distribuire l'applicazione per il bilanciamento del carico:
azd up
Selezionare una sottoscrizione e un'area per la distribuzione. Non devono appartenere alla stessa sottoscrizione e alla stessa area dell'app di chat.
Attendere il completamento della distribuzione prima di continuare.
Ottenere l'endpoint di distribuzione
Usare il comando seguente per visualizzare l'endpoint distribuito per l'app contenitore:
azd env get-values
Copiare il valore
CONTAINER_APP_URL
. Tu lo usi nella sezione successiva.
Ridistribuire l'app di chat con l'endpoint del bilanciatore di carico
Questi esempi vengono completati nell'esempio di app di chat.
- Distribuzione iniziale
- ridistribuzione
Aprire il contenitore di sviluppo dell'esempio di app di chat usando una delle opzioni seguenti.
Lingua GitHub Codespaces Visual Studio Code .NET Apri in GitHub Codespaces JavaScript Apri in GitHub Codespaces Pitone Apri in GitHub Codespaces Accedi alla CLI per sviluppatori di Azure (
AZD
):azd auth login
Completare le istruzioni di accesso.
Creare un ambiente
AZD
con un nome, ad esempiochat-app
:azd env new <name>
Aggiungere la variabile di ambiente seguente, che indica al back-end dell'app di chat di usare un URL personalizzato per le richieste OpenAI di Azure:
azd env set OPENAI_HOST azure_custom
Aggiungere la variabile di ambiente seguente. Sostituire
<CONTAINER_APP_URL>
per l'URL della sezione precedente. Questa azione indica al back-end dell'app di chat il valore dell'URL personalizzato per la richiesta OpenAI di Azure.azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
Distribuire l'app chat:
azd up
Utilizza l'app di chat con la sicurezza che scala per molti utenti senza esaurire il limite di utilizzo.
Trasmettere i log per visualizzare i risultati del bilanciamento del carico
Nell'elenco delle risorse nel gruppo, selezionare la risorsa Azure Container Apps.
Selezionare Monitoraggio del flusso di log> per visualizzare il log.
Usare l'app chat per generare traffico nel log.
Cercate i log che fanno riferimento alle risorse Azure OpenAI. Ognuna delle tre risorse ha la propria identità numerica nel commento del log che inizia con
Proxying to https://openai3
, dove3
indica la terza risorsa OpenAI di Azure.
Quando il servizio di bilanciamento del carico riceve lo stato che la richiesta supera la quota, il servizio di bilanciamento del carico ruota automaticamente su un'altra risorsa.
Configurare la quota TPM
Per impostazione predefinita, ogni istanza di Azure OpenAI nel servizio di bilanciamento del carico viene distribuita con una capacità di 30.000 token al minuto (TPM). È possibile usare l'app di chat sapendo che è scalabile per molti utenti senza consumare la quota. Modificare questo valore quando:
- Ottieni errori di capacità di distribuzione: abbassa il valore.
- È necessaria una capacità superiore: aumentare il valore.
Usare il comando seguente per modificare il valore:
azd env set OPENAI_CAPACITY 50
Riassegnare il bilanciatore di carico:
azd up
Pulire le risorse
Quando hai finito di utilizzare l'app chat e il bilanciatore di carico, ripulisci le risorse. Le risorse di Azure create e discusse in questo articolo vengono fatturate al tuo abbonamento di Azure. Se non si prevede che queste risorse siano necessarie in futuro, eliminarle per evitare di incorrere in costi aggiuntivi.
Pulire le risorse dell'app di chat
Tornare all'articolo sull'app di chat per pulire le risorse:
Pulire le risorse del bilanciatore di caricamento
Eliminare le risorse di Azure e rimuovere il codice sorgente:
azd down --purge --force
Gli interruttori forniscono:
-
purge
: Le risorse eliminate vengono interamente rimosse immediatamente, in modo da poter riutilizzare i token del servizio OpenAI di Azure per minuto. -
force
: L'eliminazione avviene in modo silenzioso, senza richiedere il consenso dell'utente.
Pulire GitHub Codespaces e Visual Studio Code
- GitHub Codespaces
- Visual Studio Code
L'eliminazione dell'ambiente GitHub Codespaces garantisce che sia possibile massimizzare l'ammontare delle ore gratuite per core assegnato al tuo account.
Importante
Per ulteriori informazioni sui diritti del tuo account GitHub, consulta archiviazione mensile inclusa e ore core di GitHub Codespaces.
Accedere al dashboard GitHub Codespaces.
Individua gli spazi di codice attualmente in esecuzione provenienti dal repository GitHub azure-samples/openai-aca-lb.
Aprire il menu contestuale per lo spazio di codice e quindi selezionare Elimina.
Ottenere assistenza
Se si verificano problemi durante la distribuzione del servizio di bilanciamento del carico di App Azure Container, aggiungere il problema alla pagina Web Problemi del repository.
Codice di esempio
In questo articolo vengono usati gli esempi seguenti:
- App di chat Java con RAG
- Bilanciamento del carico con Azure Container Apps
Passaggio successivo
- Usa Test di Carico di Azure per effettuare un test di carico della tua app di chat.