Condividi tramite


Ridimensionare Azure OpenAI per Python con Azure Gestione API

Informazioni su come aggiungere il bilanciamento del carico di livello aziendale all'applicazione per estendere l'app di chat oltre i limiti di quota del token e del modello di Azure OpenAI. Questo approccio usa Azure Gestione API per indirizzare in modo intelligente il traffico tra tre risorse OpenAI di Azure.

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.
  • Bilanciamento del carico con Azure Gestione API

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 Azure Gestione API

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.

Diagramma che mostra l'architettura dell'app di chat con la risorsa Azure OpenAI evidenziata.

Per usare l'app di chat senza raggiungere questi limiti, usare una soluzione con carico bilanciato con Azure Gestione API. Questa soluzione espone facilmente un singolo endpoint da Azure Gestione API al server delle app di chat.

Diagramma che mostra l'architettura delle app di chat con Azure Gestione API davanti a tre risorse OpenAI di Azure.

La risorsa di Azure Gestione API, come livello API, si trova davanti a un set di risorse OpenAI di Azure. Il livello API si applica a due scenari: normale e limitato. Durante uno scenario normale in cui è disponibile la quota di token e modelli, la risorsa OpenAI di Azure restituisce 200 tramite il livello API e il server app back-end.

Diagramma che mostra uno scenario normale. Lo scenario normale mostra tre gruppi di endpoint Azure OpenAI con il primo gruppo di due endpoint che ricevono traffico con esito positivo.

Quando una risorsa viene limitata a causa dei limiti di quota, il livello API può ritentare immediatamente una risorsa OpenAI di Azure diversa per soddisfare la richiesta originale dell'app di chat.

Diagramma che mostra uno scenario di limitazione con un codice di risposta 429 e un'intestazione di risposta che indica quanti secondi il client deve attendere per riprovare.

Prerequisiti

Aprire l'app di esempio azure Gestione API servizio di bilanciamento locale

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.

Aprire questo progetto in GitHub Codespaces

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 servizio di bilanciamento del carico di Azure Gestione API

  1. Per distribuire il servizio di bilanciamento del carico in Azure, accedere ad Azure Developer CLI (AZD).

    azd auth login
    
  2. Completare le istruzioni di accesso.

  3. 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.

  4. Attendere il completamento della distribuzione prima di continuare. L'operazione può richiedere fino a 30 minuti.

Ottenere l'endpoint del servizio di bilanciamento del carico

Eseguire il comando bash seguente per visualizzare le variabili di ambiente dalla distribuzione. Queste informazioni saranno necessarie più avanti.

azd env get-values | grep APIM_GATEWAY_URL

Ridistribuire l'app di Chat con l'endpoint del bilanciamento del carico

Questi vengono completati nell'esempio dell'app di chat.

  1. Aprire il contenitore di sviluppo dell'esempio di app di chat usando una delle seguenti opzioni.

    Lingua Codespaces Visual Studio Code
    .NET Aprire in GitHub Codespaces Aprire in contenitori di sviluppo
    JavaScript Aprire in GitHub Codespaces Aprire in contenitori di sviluppo
    Python Aprire in GitHub Codespaces Aprire in contenitori di sviluppo
  2. Accedere ad Azure Developer CLI (AZD).

    azd auth login
    

    Completare le istruzioni di accesso.

  3. Creare un ambiente AZD con un nome come chat-app.

    azd env new <name>
    
  4. Aggiungere la variabile di ambiente seguente, che indica al back-end dell'app di Chat di usare un URL personalizzato per le richieste di OpenAI.

    azd env set OPENAI_HOST azure_custom
    
  5. Aggiungere la variabile di ambiente, che indica al back-end dell'app di Chat il valore dell'URL personalizzato per la richiesta di OpenAI.

    azd env set AZURE_OPENAI_CUSTOM_URL <APIM_GATEWAY_URL>
    
  6. Distribuire l'app di chat.

    azd up
    

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.
  1. Usare il comando seguente per modificare il valore.

    azd env set OPENAI_CAPACITY 50
    
  2. 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 servizio di bilanciamento del carico

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.

  1. Accedere al dashboard di GitHub Codespaces (https://github.com/codespaces).

  2. Individuare i codespace attualmente in esecuzione provenienti dal repository GitHub azure-samples/openai-apim-lb.

    Screenshot di tutti i codespace in esecuzione, inclusi lo stato e i modelli.

  3. Aprire il menu di scelta rapida per l'elemento Codespaces e quindi selezionare Elimina.

    Screenshot del menu di scelta rapida per un singolo codespace con l'opzione di eliminazione evidenziata.

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