瞭解如何將負載平衡新增至您的應用程式,以將聊天應用程式延伸至 Azure OpenAI 服務令牌和模型配額限制之外。 此方法會使用 Azure Container Apps 來建立三個 Azure OpenAI 端點和主要容器,以將連入流量導向三個端點的其中一個。
本文會要求您部署兩個不同的範例:
聊天應用程式
如果您尚未部署聊天應用程式,請等到部署負載平衡器範例之後。
如果您已部署聊天應用程式一次,請變更環境變數以支援負載平衡器的自定義端點,然後再次重新部署。
這款聊天應用程式提供以下語言:
負載平衡器應用程式
備註
本文使用一或多個 AI 應用程式範本作為本文範例和指引的基礎。 AI 應用程式範本提供易於部署且維護良好的參考實作。 它們可協助您確保 AI 應用程式的高品質起點。
Azure OpenAI 與 Azure Container Apps 負載平衡的架構
由於 Azure OpenAI 資源具有特定的令牌和模型配額限制,因此使用單一 Azure OpenAI 資源的聊天應用程式很容易因為這些限制而發生交談失敗。
若要在不達到這些限制的情況下使用聊天應用程式,請使用具有容器應用程式的負載平衡解決方案。 此解決方案會順暢地將容器應用程式的單一端點公開至聊天應用程式伺服器。
容器應用程式位於一組 Azure OpenAI 資源前面。 容器應用程式可解決兩個案例:一般和節流。 正常情況 下,當令牌和模型配額可供使用時,Azure OpenAI 資源會透過容器應用程式和應用程式伺服器返回 200。
當資源因為配額限制而處於 節流案例 時,容器應用程式可以立即重試不同的 Azure OpenAI 資源,以履行原始聊天應用程式要求。
先決條件
Azure 訂用帳戶。 免費建立一個
開發容器 可用於這兩個範例,包含完成本文所需的所有相依性。 您可以在瀏覽器中或在本機使用 Visual Studio Code,在 GitHub Codespaces 中執行開發容器。
- Codespaces(建議)
- Visual Studio 程式碼
- GitHub 帳戶。
開啟 Container Apps 負載平衡器範例應用程式
- GitHub Codespaces(建議)
- Visual Studio 程式碼
GitHub Codespaces 會執行由 GitHub 所管理的開發容器,以作為適用於 Web 的 Visual Studio Code 的使用者介面。 想要一個最簡便的開發環境,請使用 GitHub Codespaces,以便預先安裝正確的開發工具和依賴項來完成這篇文章。
這很重要
所有 GitHub 帳戶每月可免費使用 GitHub Codespaces 最多 60 小時,並可同時運行兩個核心實例。 如需詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存空間和核心小時數
部署 Azure Container Apps 負載平衡器
登入 Azure 開發人員 CLI 以提供布建和部署步驟的驗證:
azd auth login --use-device-code將環境變數設定為在佈建後的步驟中使用 Azure CLI 驗證:
azd config set auth.useAzCliAuth "true"部署負載平衡器應用程式:
azd up選擇部署的訂閱和區域。 他們不需要與聊天應用程式使用相同的訂用帳戶和區域。
等候部署完成,再繼續。
取得部署端點
使用下列命令來顯示容器應用程式的已部署端點:
azd env get-values複製
CONTAINER_APP_URL值。 您會在下一節中使用它。
使用負載平衡器端點重新部署聊天應用程式
這些範例是在聊天應用程式的範本上完成的。
- 初始部署
- 重新部署
使用下列其中一個選項開啟聊天應用程式範例的開發容器。
語言 GitHub Codespaces Visual Studio Code .NET 中開啟
JavaScript 中開啟
Python 中開啟
登入 Azure 開發人員 CLI (
AZD):azd auth login完成登入指示。
使用
AZD之類的名稱建立chat-app環境:azd env new <name>新增下列環境變數,告知聊天應用程式的後端使用 Azure OpenAI 要求的自定義 URL:
azd env set OPENAI_HOST azure_custom新增下列環境變數。 以
<CONTAINER_APP_URL>取代上一節中的 URL。 此動作會告訴聊天應用程式的後端 Azure OpenAI 要求的自定義 URL 值為何。azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>部署聊天應用程式:
azd up
使用聊天應用程式,並確信其可處理大量用戶,而不會達到配額限制。
串流記錄以查看負載平衡器結果
在 Azure 入口網站中,搜索您的資源群組。
從群組中的資源清單中,選取 Azure Container Apps 資源。
選取 監視>記錄流 以檢視記錄。
使用聊天應用程式為日誌生成流量。
尋找參考 Azure OpenAI 資源的記錄。 這三個資源中的每一個都會在記錄批注中具有其數值識別,開頭為
Proxying to https://openai3,其中3表示第三個 Azure OpenAI 資源。
當負載平衡器收到要求超過配額的狀態時,負載平衡器會自動輪替至另一個資源。
設定 TPM 配額
根據預設,負載平衡器中的每個 Azure OpenAI 實例都會以每分鐘 30,000 令牌(TPM)的容量進行部署。 您可以有信心地使用聊天應用程式,因為它可以在多個用戶之間擴展縮放,而不會耗盡配額。 在下列情況下變更此值:
- 您會收到部署容量錯誤訊息:請調低該值。
- 您需要更高的容量:增加值。
使用下列命令來變更值:
azd env set OPENAI_CAPACITY 50重新部署負載平衡器:
azd up
清理資源
當您完成聊天應用程式和負載平衡器後,請清理資源。 本文中建立的 Azure 資源會向您 Azure 訂用帳戶收費。 如果您預計未來不需要這些資源,請將其刪除,以避免產生更多費用。
清除聊天應用程式資源
返回聊天應用程式的文章以清理資源:
清理上傳負載平衡器資源
刪除 Azure 資源並移除原始碼:
azd down --purge --force
開關提供:
-
purge:系統會立即清除已刪除的資源,以便每分鐘重複使用 Azure OpenAI 服務令牌。 -
force:刪除會靜默地進行,不需取得使用者同意。
清理 GitHub Codespaces 和 Visual Studio Code
刪除 GitHub Codespaces 環境可確保您能充分利用帳戶的免費每核心時數配額。
這很重要
如需有關您 GitHub 帳戶權利的更多詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存空間與核心小時數。
登入
GitHub Codespaces 儀表板。 定位您目前運行的代碼空間,其來源為 GitHub 存放庫 azure-samples/openai-aca-lb。
開啟 codespace 的內容選單,然後選取 刪除。
尋求幫助
如果您在部署 Azure Container Apps 負載平衡器時遇到問題,請將問題新增至存放庫的 [問題 ] 網頁。
範例程序代碼
本文會使用下列範例:
- 使用RAG的 Java 聊天應用程式
- 使用 Azure 容器應用程式的負載平衡器
後續步驟
- 使用 Azure 負載測試 來負載測試聊天應用程式。