Azure OpenAI schalen voor JavaScript met Azure API Management

Meer informatie over het toevoegen van taakverdeling op bedrijfsniveau aan uw toepassing om de chat-app uit te breiden buiten het Azure OpenAI-token en de quotumlimieten voor modellen. Deze benadering maakt gebruik van Azure API Management om op intelligente wijze verkeer te leiden tussen drie Azure OpenAI-resources.

Voor dit artikel moet u twee afzonderlijke voorbeelden implementeren:

  • Chat-app

    • Als u de chat-app nog niet hebt geïmplementeerd, wacht u totdat het voorbeeld van de load balancer is geïmplementeerd.
    • Als u de chat-app al eenmaal hebt geïmplementeerd, wijzigt u de omgevingsvariabele om een aangepast eindpunt voor de load balancer te ondersteunen en opnieuw te implementeren.
  • Load balancer met Azure API Management

Architectuur voor taakverdeling van Azure OpenAI met Azure API Management

Omdat de Azure OpenAI-resource specifieke token- en modelquotumlimieten heeft, is een chat-app met één Azure OpenAI-resource gevoelig voor gespreksfouten vanwege deze limieten.

Diagram van de architectuur van de chat-app met Azure OpenAI-resource gemarkeerd.

Als u de chat-app wilt gebruiken zonder deze limieten te bereiken, gebruikt u een oplossing met gelijke taakverdeling met Azure API Management. Deze oplossing maakt naadloos één eindpunt van Azure API Management beschikbaar voor uw chat-app-server.

Diagram van de architectuur van de chat-app met Azure API Management vóór drie Azure OpenAI-resources.

De Azure API Management-resource bevindt zich als API-laag voor een set Azure OpenAI-resources. De API-laag is van toepassing op twee scenario's: normaal en beperkt. Tijdens een normaal scenario waarin token- en modelquota beschikbaar zijn, retourneert de Azure OpenAI-resource een 200 terug via de API-laag en de back-end-app-server.

Diagram met een normaal scenario. In het normale scenario ziet u drie Azure OpenAI-eindpuntgroepen met de eerste groep van twee eindpunten die succesvol verkeer krijgen.

Wanneer een resource wordt beperkt vanwege quotumlimieten, kan de API-laag een andere Azure OpenAI-resource onmiddellijk opnieuw proberen om te voldoen aan de oorspronkelijke aanvraag voor de chat-app.

Diagram met een beperkingsscenario met een 429 mislukte antwoordcode en een antwoordheader van het aantal seconden dat de client moet wachten om het opnieuw te proberen.

Vereisten

Voorbeeld-app voor lokale balancer van Azure API Management openen

GitHub Codespaces voert een ontwikkelcontainer uit die wordt beheerd door GitHub met Visual Studio Code voor het web als de gebruikersinterface. Voor de eenvoudigste ontwikkelomgeving gebruikt u GitHub Codespaces zodat u de juiste ontwikkelhulpprogramma's en afhankelijkheden vooraf hebt geïnstalleerd om dit artikel te voltooien.

Openen in GitHub Codespaces

Belangrijk

Alle GitHub-accounts kunnen Codespaces elke maand maximaal 60 uur gratis gebruiken met 2 kernexemplaren. Zie GitHub Codespaces maandelijks inbegrepen opslag- en kernuren voor meer informatie.

Azure API Management-load balancer implementeren

  1. Als u de load balancer wilt implementeren in Azure, meldt u zich aan bij Azure Developer CLI (AZD).

    azd auth login
    
  2. Voltooi de aanmeldingsinstructies.

  3. Implementeer de load balancer-app.

    azd up
    

    U moet een abonnement en regio voor de implementatie selecteren. Dit hoeft niet hetzelfde abonnement en dezelfde regio te zijn als de chat-app.

  4. Wacht tot de implementatie is voltooid voordat u doorgaat. Dit kan tot 30 minuten duren.

Load balancer-eindpunt ophalen

Voer de volgende bash-opdracht uit om de omgevingsvariabelen van de implementatie te bekijken. U hebt deze informatie later nodig.

azd env get-values | grep APIM_GATEWAY_URL

Chat-app opnieuw implementeren met load balancer-eindpunt

Deze zijn voltooid in het voorbeeld van de chat-app.

  1. Open de dev-container van de chat-app met behulp van een van de volgende opties.

    Taal Codespaces Visual Studio Code
    .NET Openen in GitHub Codespaces Openen in Dev Containers
    JavaScript Openen in GitHub Codespaces Openen in Dev Containers
    Python Openen in GitHub Codespaces Openen in Dev Containers
  2. Meld u aan bij Azure Developer CLI (AZD).

    azd auth login
    

    Voltooi de aanmeldingsinstructies.

  3. Maak een AZD-omgeving met een naam, zoals chat-app.

    azd env new <name>
    
  4. Voeg de volgende omgevingsvariabele toe, waarmee de back-end van de Chat-app een aangepaste URL voor de OpenAI-aanvragen moet gebruiken.

    azd env set OPENAI_HOST azure_custom
    
  5. Voeg de volgende omgevingsvariabele toe, waarmee de back-end van de Chat-app wordt aangegeven wat de waarde is van de aangepaste URL voor de OpenAI-aanvraag.

    azd env set set AZURE_OPENAI_CUSTOM_URL <APIM_GATEWAY_URL>
    
  6. Implementeer de chat-app.

    azd up
    

De tokens per minuutquotum (TPM) configureren

Standaard wordt elk van de OpenAI-exemplaren in de load balancer geïmplementeerd met 30.000 TPM-capaciteit (tokens per minuut). U kunt de chat-app gebruiken met het vertrouwen dat deze is gebouwd om te schalen voor veel gebruikers zonder dat er geen quotum meer is. Wijzig deze waarde wanneer:

  • U krijgt fouten in de implementatiecapaciteit: verlaag deze waarde.
  • Het plannen van een hogere capaciteit, verhoogt de waarde.
  1. Gebruik de volgende opdracht om de waarde te wijzigen.

    azd env set OPENAI_CAPACITY 50
    
  2. Implementeer de load balancer opnieuw.

    azd up
    

Resources opschonen

Wanneer u klaar bent met zowel de chat-app als de load balancer, moet u de resources opschonen. De Azure-resources die in dit artikel zijn gemaakt, worden gefactureerd voor uw Azure-abonnement. Als u deze resources in de toekomst niet meer nodig hebt, verwijdert u deze om te voorkomen dat er meer kosten in rekening worden gebracht.

Resources voor chat-apps opschonen

Ga terug naar het artikel van de chat-app om deze resources op te schonen.

Load balancer-resources opschonen

Voer de volgende Azure Developer CLI-opdracht uit om de Azure-resources te verwijderen en de broncode te verwijderen:

azd down --purge --force

De schakelopties bieden:

  • purge: Verwijderde resources worden onmiddellijk verwijderd. Hiermee kunt u de TPM van Azure OpenAI opnieuw gebruiken.
  • force: het verwijderen gebeurt op de achtergrond, zonder dat hiervoor toestemming van de gebruiker is vereist.

GitHub Codespaces opschonen

Als u de GitHub Codespaces-omgeving verwijdert, zorgt u ervoor dat u de hoeveelheid gratis rechten per kernuren kunt maximaliseren die u voor uw account krijgt.

Belangrijk

Zie GitHub Codespaces maandelijks inbegrepen opslag- en kernuren voor meer informatie over de rechten van uw GitHub-account.

  1. Meld u aan bij het GitHub Codespaces-dashboard (https://github.com/codespaces).

  2. Zoek uw momenteel uitgevoerde Codespaces die afkomstig zijn uit de azure-samples/openai-apim-lb GitHub-opslagplaats.

    Schermopname van alle actieve Codespaces, inclusief hun status en sjablonen.

  3. Open het contextmenu voor het codespaces-item en selecteer vervolgens Verwijderen.

    Schermopname van het contextmenu voor één coderuimte met de optie Verwijderen gemarkeerd.

Hulp vragen

Als u problemen ondervindt bij het implementeren van de Load Balancer van Azure API Management, meldt u het probleem aan bij de problemen van de opslagplaats.

Voorbeeldcode

Voorbeelden die in dit artikel worden gebruikt, zijn:

Volgende stap