Skala Azure OpenAI för Python med Azure API Management
Lär dig hur du lägger till belastningsutjämning i företagsklass i ditt program för att utöka chattappen utöver gränserna för Azure OpenAI-token och modellkvoter. Den här metoden använder Azure API Management för att intelligent dirigera trafik mellan tre Azure OpenAI-resurser.
Den här artikeln kräver att du distribuerar två separata exempel:
Chattapp
- Om du inte har distribuerat chattappen ännu väntar du tills lastbalanserarens exempel har distribuerats.
- Om du redan har distribuerat chattappen en gång ändrar du miljövariabeln så att den stöder en anpassad slutpunkt för lastbalanseraren och distribuerar om den igen.
Lastbalanserare med Azure API Management
Kommentar
Den här artikeln använder en eller flera AI-appmallar som grund för exemplen och vägledningen i artikeln. Med AI-appmallar får du väl underhållna och enkla att distribuera referensimplementeringar som hjälper dig att säkerställa en högkvalitativ startpunkt för dina AI-appar.
Arkitektur för belastningsutjämning av Azure OpenAI med Azure API Management
Eftersom Azure OpenAI-resursen har specifika token- och modellkvotgränser är en chattapp med en enda Azure OpenAI-resurs benägen att få konversationsfel på grund av dessa gränser.
Om du vill använda chattappen utan att nå dessa gränser använder du en belastningsutjämningslösning med Azure API Management. Den här lösningen exponerar sömlöst en enskild slutpunkt från Azure API Management för din chattappserver.
Azure API Management-resursen, som ett API-lager, finns framför en uppsättning Azure OpenAI-resurser. API-lagret gäller för två scenarier: normal och begränsad. I ett normalt scenario där token- och modellkvoten är tillgänglig returnerar Azure OpenAI-resursen 200 tillbaka via API-lagret och serverdelsappservern.
När en resurs begränsas på grund av kvotgränser kan API-lagret försöka igen med en annan Azure OpenAI-resurs omedelbart för att uppfylla den ursprungliga chattappens begäran.
Förutsättningar
En Azure-prenumeration. Skapa en kostnadsfritt
Åtkomst beviljad till Azure OpenAI i den önskade Azure-prenumerationen.
För närvarande måste man ansöka om att få åtkomst till den här tjänsten. Du kan ansöka om åtkomst till Azure OpenAI genom att fylla i formuläret på https://aka.ms/oai/access.
Dev-containrar är tillgängliga för båda exemplen, med alla beroenden som krävs för att slutföra den här artikeln. Du kan köra dev-containrarna i GitHub Codespaces (i en webbläsare) eller lokalt med hjälp av Visual Studio Code.
- Endast ett GitHub-konto krävs för att använda Codespaces
Öppna exempelappen azure API Management local balancer
GitHub Codespaces kör en utvecklingscontainer som hanteras av GitHub med Visual Studio Code för webben som användargränssnitt. För den enklaste utvecklingsmiljön använder du GitHub Codespaces så att du har rätt utvecklarverktyg och beroenden förinstallerade för att slutföra den här artikeln.
Viktigt!
Alla GitHub-konton kan använda Codespaces i upp till 60 timmar kostnadsfritt varje månad med 2 kärninstanser. Mer information finns i GitHub Codespaces månadsvis inkluderade lagrings- och kärntimmar.
Distribuera Lastbalanserare för Azure API Management
Om du vill distribuera lastbalanseraren till Azure loggar du in på Azure Developer CLI (AZD).
azd auth login
Slutför inloggningsinstruktionerna.
Distribuera lastbalanserarens app.
azd up
Du måste välja en prenumeration och region för distributionen. Dessa behöver inte vara samma prenumeration och region som chattappen.
Vänta tills distributionen är klar innan du fortsätter. Det kan ta upp till 30 minuter.
Hämta lastbalanserarens slutpunkt
Kör följande bash-kommando för att se miljövariablerna från distributionen. Du behöver den här informationen senare.
azd env get-values | grep APIM_GATEWAY_URL
Distribuera om chattappen med lastbalanserarens slutpunkt
Dessa slutförs i chattappexemplet.
Öppna chattappexemplets utvecklingscontainer med något av följande alternativ.
Språk Codespaces Visual Studio-koden .NET JavaScript Python Logga in på Azure Developer CLI (AZD).
azd auth login
Slutför inloggningsinstruktionerna.
Skapa en AZD-miljö med ett namn som
chat-app
.azd env new <name>
Lägg till följande miljövariabel, som instruerar chattappens serverdel att använda en anpassad URL för OpenAI-begäranden.
azd env set OPENAI_HOST azure_custom
Lägg till följande miljövariabel, som talar om för chattappens serverdel vad värdet är för den anpassade URL:en för OpenAI-begäran.
azd env set AZURE_OPENAI_CUSTOM_URL <APIM_GATEWAY_URL>
Distribuera chattappen.
azd up
Konfigurera token per minutkvot (TPM)
Som standard distribueras var och en av OpenAI-instanserna i lastbalanseraren med en kapacitet på 30 000 TPM (token per minut). Du kan använda chattappen med förtroende för att den är skapad för att skala över många användare utan att kvoten tar slut. Ändra det här värdet när:
- Du får distributionskapacitetsfel: sänk det värdet.
- Planera högre kapacitet, öka värdet.
Använd följande kommando för att ändra värdet.
azd env set OPENAI_CAPACITY 50
Distribuera om lastbalanseraren.
azd up
Rensa resurser
När du är klar med både chattappen och lastbalanseraren rensar du resurserna. De Azure-resurser som skapas i den här artikeln faktureras till din Azure-prenumeration. Om du inte förväntar dig att behöva dessa resurser i framtiden tar du bort dem för att undvika att debiteras mer.
Rensa chattappresurser
Gå tillbaka till chattappartikeln för att rensa resurserna.
Rensa lastbalanseringsresurser
Kör följande Azure Developer CLI-kommando för att ta bort Azure-resurserna och ta bort källkoden:
azd down --purge --force
Växlarna tillhandahåller:
purge
: Borttagna resurser rensas omedelbart. På så sätt kan du återanvända Azure OpenAI TPM.force
: Borttagningen sker tyst, utan att användarens medgivande krävs.
Rensa GitHub Codespaces
Om du tar bort GitHub Codespaces-miljön kan du maximera mängden kostnadsfria timmar per kärna som du får för ditt konto.
Viktigt!
Mer information om ditt GitHub-kontos rättigheter finns i GitHub Codespaces månadsvis inkluderade lagrings- och kärntimmar.
Logga in på GitHub Codespaces-instrumentpanelen (https://github.com/codespaces).
Leta upp de codespaces som körs från
azure-samples/openai-apim-lb
GitHub-lagringsplatsen.Öppna snabbmenyn för objektet Codespaces och välj sedan Ta bort.
Få hjälp
Om du har problem med att distribuera Azure API Management-lastbalanseraren loggar du problemet till lagringsplatsens problem.
Exempelkod
Exempel som används i den här artikeln är:
Gå vidare
- Visa diagnostikdata för Azure API Management i Azure Monitor
- Använda Azure Load Testing för att läsa in test av chattappen med