Azure OpenAI for JavaScript-csevegés skálázása RAG használatával az Azure Container Apps használatával

Megtudhatja, hogyan adhat hozzá terheléselosztást az alkalmazáshoz, hogy a csevegőalkalmazás az Azure OpenAI-jogkivonaton és a modellkvótakorláton túl is kiterjeszthető legyen. Ez a megközelítés az Azure Container Apps használatával három Azure OpenAI-végpontot hoz létre, valamint egy elsődleges tárolót, amely a bejövő forgalmat a három végpont egyikére irányítja.

Ebben a cikkben 2 különálló mintát kell üzembe helyeznie:

  • Csevegőalkalmazás

    • Ha még nem telepítette a csevegőalkalmazást, várjon, amíg a terheléselosztó-minta üzembe lett helyezve.

    • Ha egyszer már üzembe helyezte a csevegőalkalmazást, a környezeti változót úgy fogja módosítani, hogy támogassa a terheléselosztó egyéni végpontját, és újból üzembe helyezi azt.

    • A csevegőalkalmazás az alábbi nyelveken érhető el:

  • Terheléselosztó alkalmazás

Az Azure OpenAI és az Azure Container Apps terheléselosztásának architektúrája

Mivel az Azure OpenAI-erőforrás meghatározott jogkivonat- és modellkvótakorlátokkal rendelkezik, az egyetlen Azure OpenAI-erőforrást használó csevegőalkalmazások e korlátok miatt hajlamosak a beszélgetési hibákra.

Ábra a csevegőalkalmazás architektúrájáról, kiemelt Azure OpenAI-erőforrással.

Ha úgy szeretné használni a csevegőalkalmazást, hogy nem éri el ezeket a korlátokat, használjon terheléselosztási megoldást az Azure Container Appsszel. Ez a megoldás zökkenőmentesen elérhetővé tesz egy végpontot az Azure Container Appsből a csevegőalkalmazás-kiszolgálónak.

Ábra a csevegőalkalmazás architektúrájáról az Azure Container Apps használatával három Azure OpenAI-erőforrás előtt.

Az Azure Container alkalmazás az Azure OpenAI-erőforrások egy készlete előtt helyezkedik el. A Tárolóalkalmazás két forgatókönyvet old meg: normál és szabályozott. Egy normál forgatókönyvben, ahol a jogkivonat és a modellkvóta elérhető, az Azure OpenAI-erőforrás egy 200-ás értéket ad vissza a Container App és az App Server segítségével.

Normál forgatókönyvet megjelenítő diagram. A normál forgatókönyv három Azure OpenAI-végpontcsoportot mutat be, és az első két végpontból álló csoport sikeres forgalmat kap.

Ha egy erőforrás szabályozott forgatókönyvben van, például a kvótakorlátok miatt, az Azure Container alkalmazás azonnal újrapróbálkozott egy másik Azure OpenAI-erőforrást az eredeti csevegőalkalmazás-kérés teljes körű teljesítéséhez.

Egy szabályozási forgatókönyvet ábrázoló diagram egy 429 sikertelen válaszkóddal és egy válaszfejléccel, amely azt mutatja, hogy az ügyfélnek hány másodpercig kell várnia az újrapróbálkozásra.

Előfeltételek

Tárolóalkalmazások helyi kiegyensúlyozó mintaalkalmazásának megnyitása

A GitHub Codespaces egy, a GitHub által felügyelt fejlesztői tárolót futtat a Webes Visual Studio Code-tal felhasználói felületként. A legegyszerűbb fejlesztési környezethez használja a GitHub Codespacest, hogy a megfelelő fejlesztői eszközökkel és függőségekkel rendelkezzen a cikk elvégzéséhez.

Megnyitás a GitHub Codespacesben

Fontos

Minden GitHub-fiók legfeljebb 60 órán át használhatja a Codespace-eket havonta 2 magpéldánysal. További információ: GitHub Codespaces havonta tartalmazza a tárterületet és az alapórákat.

Az Azure Container Apps terheléselosztó üzembe helyezése

  1. A terheléselosztó Azure-ban való üzembe helyezéséhez jelentkezzen be az Azure Developer CLI-be (AZD).

    azd auth login
    
  2. Fejezze be a bejelentkezési utasításokat.

  3. Telepítse a terheléselosztó alkalmazást.

    azd up
    

    Ki kell választania egy előfizetést és régiót az üzembe helyezéshez. Ezeknek nem kell azonos előfizetésnek és régiónak lenniük, mint a csevegőalkalmazásnak.

  4. Folytatás előtt várja meg, amíg az üzembe helyezési folyamat befejeződik.

  5. Kérje le az URL-címet a végpont nevű üzembe helyezés végén. Ez a CONTAINER_APP_URL következő szakaszban használatos.

Csevegőalkalmazás ismételt üzembe helyezése terheléselosztó-végponttal

Ezek a csevegési alkalmazás mintáján fejeződnek be.

  1. Nyissa meg a csevegőalkalmazás-minta fejlesztői tárolóját az alábbi lehetőségek egyikével.

    Nyelv Kódterek Visual Studio Code
    .NET Megnyitás a GitHub Codespacesben Megnyitás Fejlesztői tárolókban
    JavaScript Megnyitás a GitHub Codespacesben Megnyitás Fejlesztői tárolókban
    Python Megnyitás a GitHub Codespacesben Megnyitás Fejlesztői tárolókban
  2. Jelentkezzen be az Azure Developer CLI-be (AZD).

    azd auth login
    

    Fejezze be a bejelentkezési utasításokat.

  3. Hozzon létre egy AZD-környezetet egy olyan névvel, mint a chat-app.

    azd env new <name>
    
  4. Adja hozzá a következő környezeti változót, amely arra utasítja a csevegőalkalmazás háttérrendszerét, hogy egyéni URL-címet használjon az OpenAI-kérelmekhez.

    azd env set OPENAI_HOST azure_custom
    
  5. Adja hozzá a következő környezeti változót <CONTAINER_APP_URL> az előző szakasz URL-címének helyettesítésével. Ez a művelet megmutatja a csevegőalkalmazás háttérrendszerének, hogy milyen érték van az OpenAI-kérés egyéni URL-címében.

    azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
    
  6. Telepítse a csevegőalkalmazást.

    azd up
    

Most már magabiztosan használhatja a csevegőalkalmazást, hogy számos felhasználó skálázására lett kialakítva anélkül, hogy elfogy a kvóta.

Naplók streamelése a terheléselosztó eredményeinek megtekintéséhez

  1. Az Azure Portalon keressen rá az erőforráscsoportra.

  2. A csoport erőforrásainak listájában válassza ki a Container App erőforrást.

  3. Válassza a Figyelés –> Naplóstream lehetőséget a napló megtekintéséhez.

  4. A csevegőalkalmazással forgalmat generálhat a naplóban.

  5. Keresse meg az Azure OpenAI-erőforrásokra hivatkozó naplókat. A három erőforrás mindegyike numerikus identitással rendelkezik a napló megjegyzésében Proxying to https://openai3, amely 3 a harmadik Azure OpenAI-erőforrást jelzi.

    Képernyőkép az Azure Container App streamelési naplóiról, amelyeken két, a napló megjegyzését bemutató naplósor látható.

  6. A csevegőalkalmazás használatakor, amikor a terheléselosztó állapotba kerül, hogy a kérés túllépte a kvótát, a terheléselosztó automatikusan egy másik erőforrásra vált.

A jogkivonatok percenkénti kvótájának (TPM) konfigurálása

Alapértelmezés szerint a terheléselosztóban lévő OpenAI-példányok mindegyike 30 000 TPM -kapacitással (jogkivonatok percenként) lesznek üzembe helyezve. A csevegőalkalmazást azzal a magabiztossággal használhatja, hogy számos felhasználóra kiterjedő skálázásra készült anélkül, hogy elfogy a kvóta. Módosítsa ezt az értéket a következő esetekben:

  • Az üzembehelyezési kapacitás hibáit tapasztalja: csökkentse ezt az értéket.
  • Nagyobb kapacitás tervezése, az érték növelése.
  1. Az érték módosításához használja az alábbi parancsot.

    azd env set OPENAI_CAPACITY 50
    
  2. Helyezze újra üzembe a terheléselosztót.

    azd up
    

Az erőforrások eltávolítása

Ha végzett a csevegőalkalmazással és a terheléselosztóval is, törölje az erőforrásokat. A cikkben létrehozott Azure-erőforrások számlázása az Azure-előfizetésbe kerül. Ha a jövőben nem lesz szüksége ezekre az erőforrásokra, törölje őket, hogy elkerülje a további költségek felmerülését.

Csevegőalkalmazás-erőforrások eltávolítása

Térjen vissza a csevegőalkalmazás cikkéhez, hogy megtisztítsa ezeket az erőforrásokat.

A feltöltési kiegyensúlyozó erőforrásainak tisztítása

Futtassa a következő Azure Developer CLI-parancsot az Azure-erőforrások törléséhez és a forráskód eltávolításához:

azd down --purge --force

A kapcsolók a következőt biztosítják:

  • purge: A törölt erőforrások azonnal törlődnek. Ez lehetővé teszi az Azure OpenAI TPM újrafelhasználását.
  • force: A törlés csendesen, felhasználói hozzájárulás nélkül történik.

GitHub-kódterek eltávolítása

A GitHub Codespaces-környezet törlése biztosítja, hogy maximálisan kihasználható legyen a fiókhoz tartozó ingyenes óránkénti jogosultság.

Fontos

A GitHub-fiók jogosultságairól további információt a GitHub Codespaces havi tartalmazza a tárterületet és az alapórákat.

  1. Jelentkezzen be a GitHub Codespaces irányítópultjára (https://github.com/codespaces).

  2. Keresse meg a Jelenleg futó, a azure-samples/openai-aca-lb GitHub-adattárból származó kódtereket.

    Képernyőkép az összes futó kódtérről, beleértve azok állapotát és sablonjait.

  3. Nyissa meg a kódtér helyi menüjét, majd válassza a Törlés lehetőséget.

    Képernyőkép egyetlen kódtér helyi menüjéről a törlési lehetőség kiemelésével.

Segítség kérése

Ha nem sikerül üzembe helyeznie az Azure API Management terheléselosztót, naplózza a problémát az adattár problémái között.

Mintakód

A cikkben használt minták a következők:

Következő lépés

  • Az Azure Load Testing használata a csevegőalkalmazás teszteléséhez