Delen via


Azure OpenAI schalen voor .NET-chat met BEHULP van RAG met Azure Container Apps

Meer informatie over het toevoegen van taakverdeling aan uw toepassing om de chat-app uit te breiden buiten het Azure OpenAI Service-token en de quotumlimieten voor modellen. Deze benadering maakt gebruik van Azure Container Apps om drie Azure OpenAI-eindpunten en een primaire container te maken om binnenkomend verkeer naar een van de drie eindpunten te leiden.

Voor dit artikel moet u twee afzonderlijke voorbeelden implementeren:

  • Chatapp

    • 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 ter ondersteuning van een aangepast eindpunt voor de load balancer en implementeert u deze opnieuw.

    • De chat-app is beschikbaar in deze talen:

  • Loadbalancer-app

Notitie

In dit artikel worden een of meer AI-app-sjablonen gebruikt als basis voor de voorbeelden en richtlijnen in het artikel. AI-app-sjablonen bieden u goed onderhouden referentie-implementaties die eenvoudig te implementeren zijn. Ze helpen u om een startpunt van hoge kwaliteit voor uw AI-apps te garanderen.

Architectuur voor taakverdeling van Azure OpenAI met Azure Container Apps

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

diagram waarin de architectuur van de chat-app wordt weergegeven met de Azure OpenAI-resource gemarkeerd.

Als u de chat-app wilt gebruiken zonder deze limieten te bereiken, gebruikt u een oplossing met gelijke taakverdeling met Container Apps. Met deze oplossing wordt naadloos één eindpunt van Container Apps beschikbaar gesteld aan uw chat-app-server.

diagram waarin de architectuur van de chat-app wordt weergegeven met Azure Container Apps vóór drie Azure OpenAI-resources.

De container-app staat voor een reeks Azure OpenAI-resources. De container-app lost twee scenario's op: normaal en beperkt. Tijdens een normaal scenario waar token- en modelquota beschikbaar zijn, retourneert de Azure OpenAI-resource een 200 terug via de container-app en 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 zich in een beperkt scenario bevindt vanwege quotumlimieten, kan de container-app 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 foutcode en een antwoordheader die aangeeft hoeveel seconden de client moet wachten voordat hij het opnieuw kan proberen.

Voorwaarden

  • Azure-abonnement. Maak er gratis.

  • Toegang verleend aan Azure OpenAI in het gewenste Azure-abonnement.

    Momenteel wordt toegang tot deze service alleen verleend op aanvraag. U moet aanvragen voor toegang voor Azure OpenAI.

  • Dev-containers beschikbaar zijn voor beide voorbeelden, waarbij alle afhankelijkheden zijn vereist om dit artikel te voltooien. U kunt de dev-containers uitvoeren in GitHub Codespaces (in een browser) of lokaal met behulp van Visual Studio Code.

  • Alleen een GitHub-account is vereist voor het gebruik van CodeSpaces

Open de voorbeeld-app voor de load balancer van containerapps.

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.

Open in GitHub Codespaces.

Belangrijk

Alle GitHub-accounts kunnen Elke maand maximaal 60 uur gratis GitHub Codespaces gebruiken met twee kernexemplaren. Voor meer informatie, zie maandelijkse opslag- en kernuren van GitHub Codespaces.

De load balancer van Azure Container Apps implementeren

  1. Meld u aan bij de Azure Developer CLI om verificatie te bieden voor de inrichtings- en implementatiestappen:

    azd auth login --use-device-code
    
  2. Stel een omgevingsvariabele in om Azure CLI-verificatie te gebruiken voor de stap na de voorziening.

    azd config set auth.useAzCliAuth "true"
    
  3. Implementeer de load balancer-app:

    azd up
    

    Selecteer een abonnement en regio voor de implementatie. Ze hoeven niet hetzelfde abonnement en dezelfde regio te zijn als de chat-app.

  4. Wacht tot de implementatie is voltooid voordat u doorgaat.

Het implementatie-eindpunt ophalen

  1. Gebruik de volgende opdracht om het geïmplementeerde eindpunt voor de container-app weer te geven:

    azd env get-values
    
  2. Kopieer CONTAINER_APP_URL-waarde. U gebruikt deze in de volgende sectie.

De chatapp herimplementeren met het eindpunt van de load balancer.

Deze voorbeelden 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 GitHub 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 de 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 Azure OpenAI-aanvragen moet gebruiken:

    azd env set OPENAI_HOST azure_custom
    
  5. Voeg de volgende omgevingsvariabele toe. Vervang <CONTAINER_APP_URL> door de URL uit de vorige sectie. Deze actie vertelt de back-end van de chat-app wat de waarde is van de aangepaste URL voor de Azure OpenAI-aanvraag.

    azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
    
  6. De chat-app implementeren:

    azd up
    

U kunt nu met vertrouwen de chat-app gebruiken, wetende dat deze is ontworpen om op te schalen voor vele gebruikers zonder dat het quotum opraakt.

Logboeken streamen om de resultaten van de load balancer te bekijken

  1. Zoek in de Azure Portaluw resourcegroep.

  2. Selecteer in de lijst met resources in de groep de Azure Container Apps-resource.

  3. Selecteer Monitoring>Log stream om het logboek te bekijken.

  4. Gebruik de chat-app om verkeer in het logboek te genereren.

  5. Zoek naar de logboeken, die verwijzen naar de Azure OpenAI-resources. Elk van de drie resources heeft zijn numerieke identiteit in de logboekcommentaar die begint met Proxying to https://openai3, waarbij 3 de derde Azure OpenAI-resource aangeeft.

    Schermopname van streaminglogboeken van Azure Container Apps met twee logboeklijnen gemarkeerd om de logboekopmerkingen te demonstreren.

Wanneer de load balancer de status ontvangt dat de aanvraag het quotum overschrijdt, draait de load balancer automatisch naar een andere resource.

Het TPM-quotum configureren

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

  • U krijgt fouten in de implementatiecapaciteit: verlaag de waarde.
  • U hebt een hogere capaciteit nodig: Verhoog 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
    

Middelen opschonen

Wanneer u klaar bent met de chat-app en 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.

Chat-app-resources opschonen

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

Resources voor upload balancer 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 opgeschoond, zodat u de Azure OpenAI-servicetokens per minuut opnieuw kunt gebruiken.
  • force: het verwijderen gebeurt op de achtergrond, zonder dat hiervoor toestemming van de gebruiker is vereist.

GitHub Codespaces en Visual Studio Code opschonen

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

Belangrijk

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

  1. Meld u aan bij het GitHub Codespaces-dashboard.

  2. Zoek uw momenteel actieve codespaces die afkomstig zijn uit de azure-samples/openai-aca-lb GitHub-repository.

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

  3. Open het contextmenu voor de coderuimte en selecteer Verwijderen.

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

Hulp krijgen

Als u problemen ondervindt bij het implementeren van de Load Balancer van Azure API Management, voegt u uw probleem toe aan de problemen van de opslagplaats webpagina.

Voorbeeldcode

Voorbeelden die in dit artikel worden gebruikt, zijn:

Volgende stap

  • Azure Load Testing gebruiken om uw chat-app te testen