Ridimensionare la chat OpenAI di Azure per Java usando RAG con App Azure Container
Informazioni su come aggiungere il bilanciamento del carico all'applicazione per estendere l'app di chat oltre i limiti del token e delle quote del modello di Azure OpenAI. Questo approccio usa App contenitore di Azure per creare tre endpoint Azure OpenAI 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 l'app di chat non è ancora stata distribuita, attendere fino a quando non viene distribuito l'esempio di bilanciamento del carico.
Se l'app di chat è già stata distribuita una volta, si modificherà la variabile di ambiente per supportare un endpoint personalizzato per il bilanciamento del carico e lo si distribuirà nuovamente.
L'app di chat è disponibile in queste lingue:
App di bilanciamento del carico
Nota
Questo articolo usa uno o più modelli di app di intelligenza artificiale come base per gli esempi e le linee guida nell'articolo. I modelli di app di intelligenza artificiale offrono implementazioni di riferimento ben gestite e facili da distribuire per garantire un punto di partenza di alta qualità per le app di intelligenza artificiale.
Architettura per il bilanciamento del carico di Azure OpenAI con App contenitore di Azure
Poiché la risorsa Azure OpenAI ha limiti di quota specifici per token e modelli, un'app di chat che usa una singola risorsa Azure OpenAI è soggetta a errori di conversazione a causa di tali limiti.
Per usare l'app di chat senza superare tali limiti, usare una soluzione con bilanciamento del carico con App contenitore di Azure. Questa soluzione espone facilmente un singolo endpoint da App contenitore di Azure al server dell'app di chat.
L'app Contenitore di Azure si trova davanti a un set di risorse Azure OpenAI. L'app Contenitore risolve due scenari: normali e limitati. In uno scenario normale in cui è disponibile la quota di token e modelli, la risorsa Azure OpenAI restituisce 200 tramite l'app Contenitore e l'app Server.
Quando una risorsa si trova in uno scenario limitato, ad esempio a causa dei limiti di quota, l'app contenitore di Azure può riprovare immediatamente con un'altra risorsa Azure OpenAI per soddisfare la richiesta originale dell'app di chat.
Prerequisiti
Abbonamento di Azure. Crearne uno gratuito
Accesso concesso ad Azure OpenAI nella sottoscrizione di Azure desiderata.
Attualmente, l'accesso a questo servizio viene concesso solo dall'applicazione. È possibile richiedere l'accesso a OpenAI di Azure completando il modulo all'indirizzo https://aka.ms/oai/access.
I contenitori di sviluppo sono disponibili per entrambi gli esempi, con tutte le dipendenze necessarie per completare questo articolo. È possibile eseguire i contenitori di sviluppo in GitHub Codespaces (in un browser) o in locale con Visual Studio Code.
- Account GitHub
Aprire l'app di esempio del bilanciatore locale delle app contenitori
GitHub Codespaces esegue un contenitore di sviluppo gestito da GitHub con Visual Studio Code per il Web come interfaccia utente. Per l'ambiente di sviluppo più semplice, usa GitHub Codespaces per avere gli strumenti di sviluppo e le dipendenze corretti preinstallati per completare questo articolo.
Importante
Tutti gli account GitHub possono usare Codespaces per un massimo di 60 ore gratuite ogni mese con 2 istanze di core. Per altre informazioni, vedere Spazio di archiviazione e ore core mensili inclusi in GitHub Codespaces.
Distribuire il bilanciamento del carico di App contenitore di Azure
Accedere ad Azure Developer CLI per fornire l'autenticazione ai passaggi di provisioning e distribuzione.
azd auth login --use-device-code
Impostare una variabile di ambiente per usare l'autenticazione dell'interfaccia della riga di comando di Azure al passaggio di post-provisioning.
azd config set auth.useAzCliAuth "true"
Distribuire l'app di bilanciamento del carico.
azd up
È necessario selezionare una sottoscrizione e un'area per la distribuzione. Non è necessario che siano la stessa sottoscrizione e la stessa area dell'app di chat.
Attendere il completamento della distribuzione prima di continuare.
Ottenere l'endpoint distribuzione
Usare il comando seguente per visualizzare l'endpoint distribuito per l'app Azure Container.
azd env get-values
Copiare il valore
CONTAINER_APP_URL
. sarà necessario nella sezione successiva.
Ridistribuire l'app di Chat con l'endpoint del bilanciamento del carico
Questi vengono completati nell'esempio dell'app di chat.
Aprire il contenitore di sviluppo dell'esempio di app di chat usando una delle seguenti opzioni.
Lingua Codespaces Visual Studio Code .NET JavaScript Python Accedere ad Azure Developer CLI (AZD).
azd auth login
Completare le istruzioni di accesso.
Creare un ambiente AZD con un nome come
chat-app
.azd env new <name>
Aggiungere la variabile di ambiente seguente, che indica al back-end dell'app Chat di usare un URL personalizzato per le richieste di OpenAI.
azd env set OPENAI_HOST azure_custom
Aggiungere la variabile di ambiente seguente, sostituendo
<CONTAINER_APP_URL>
con l'URL della sezione precedente. Questa azione indica al back-end dell'app di Chat il valore dell'URL personalizzato per la richiesta OpenAI.azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
Distribuire l'app di chat.
azd up
Ora è possibile usare l'app di chat con la certezza che è stata creata per la scalabilità tra molti utenti senza esaurire la quota.
Trasmettere i log per visualizzare i risultati del bilanciamento del carico
Nel portale di Azurecercare il gruppo di risorse.
Dall'elenco delle risorse del gruppo, selezionare la risorsa App contenitore.
Selezionare Monitoraggio -> Flusso di log per visualizzare il log.
Usare l'app di chat per generare traffico nel log.
Cercare i log che fanno riferimento alle risorse Azure OpenAI. Ognuna delle tre risorse ha un'identità numerica nel commento del log che inizia con
Proxying to https://openai3
, dove3
indica la terza risorsa Azure OpenAI.Mentre si usa l'app di chat, quando il servizio di bilanciamento del carico riceve lo stato che la richiesta ha superato la quota, il servizio di bilanciamento del carico si sposta automaticamente su un'altra risorsa.
Configurare la quota di token al minuto (TPM)
Per impostazione predefinita, ognuna delle istanze OpenAI nel bilanciamento del carico verrà distribuita con una capacità di 30.000 TPM (token al minuto). È possibile usare l'app di chat con la certezza che sia stata creata per la scalabilità tra molti utenti senza esaurire la quota. Modificare questo valore quando:
- Si ottengono errori di capacità di distribuzione: abbassare il valore.
- Pianificare una capacità maggiore, aumentare il valore.
Usare il comando seguente per modificare il valore.
azd env set OPENAI_CAPACITY 50
Ridistribuire il bilanciamento del carico.
azd up
Pulire le risorse
Dopo aver completato sia l'app di chat che il bilanciamento del carico, pulire le risorse. Le risorse di Azure create in questo articolo vengono fatturate alla sottoscrizione di Azure. Se prevedi che queste risorse non ti servano in futuro, eliminale per evitare di incorrere in costi aggiuntivi.
Pulire le risorse dell'app di chat
Tornare all'articolo sull'app di chat per pulire tali risorse.
Pulire le risorse del bilanciamento del caricamento
Esegui il seguente comando Azure Developer CLI per eliminare le risorse di Azure e rimuovere il codice sorgente:
azd down --purge --force
Le opzioni forniscono:
purge
: le risorse eliminate vengono eliminate immediatamente. In questo modo è possibile riutilizzare il TPM Azure OpenAI.force
: l'eliminazione viene eseguita automaticamente, senza richiedere il consenso dell'utente.
Pulire GitHub Codespaces
L'eliminazione dell'ambiente GitHub Codespaces offre la possibilità di aumentare le ore gratuite per core a cui si ha diritto per l'account.
Importante
Per altre informazioni sui diritti dell'account GitHub, vedere Ore di archiviazione e di core mensili incluse in GitHub Codespaces.
Accedere al dashboard di GitHub Codespaces (https://github.com/codespaces).
Individuare i codespace attualmente in esecuzione provenienti dal repository GitHub
azure-samples/openai-aca-lb
.Aprire il menu di scelta rapida per il codespace e selezionare Elimina.
Come ottenere assistenza
Se si verificano problemi durante la distribuzione del bilanciamento del carico di Gestione API di Azure, registrare il problema nella sezione Problemi del repository.
Codice di esempio
Gli esempi usati in questo articolo includono:
Passaggio successivo
- Usare Test di carico di Azure per testare il carico dell'app di chat con