共用方式為


使用 Azure API 管理擴展適用於 Python 的 Azure OpenAI 模組

瞭解如何將企業級負載平衡新增至您的應用程式,以將聊天應用程式延伸至 Azure OpenAI 服務令牌和模型配額限制之外。 此方法會使用 Azure API 管理,以智慧方式引導三個 Azure OpenAI 資源之間的流量。

本文會要求您部署兩個不同的範例:

  • 聊天應用程式:
    • 如果您尚未部署聊天應用程式,請等到部署負載平衡器範例之後。
    • 如果您已部署聊天應用程式一次,請變更環境變數以支援負載平衡器的自定義端點,然後再次重新部署。
  • 使用 Azure API 管理的負載平衡器。

注意

本文使用一或多個 AI 應用程式範本, 作為本文範例和指引的基礎。 AI 應用程式範本提供易於部署且維護良好的參考實作。 它們可協助您確保 AI 應用程式的高品質起點。

Azure OpenAI 與 Azure API 管理的負載平衡架構

由於 Azure OpenAI 資源具有特定的令牌和模型配額限制,因此使用單一 Azure OpenAI 資源的聊天應用程式很容易因為這些限制而發生交談失敗。

顯示聊天應用程式架構的圖表,其中已醒目提示 Azure OpenAI 資源。

若要在不達到這些限制的情況下使用聊天應用程式,請搭配 API 管理使用負載平衡解決方案。 此解決方案會順暢地將 API 管理的單一端點公開至聊天應用程式伺服器。

圖表,其中顯示三個 Azure OpenAI 資源前面的聊天應用程式架構與 Azure API 管理。

API 管理資源,作為 API 層,位於一組 Azure OpenAI 資源前面。 API 層適用於兩個案例:一般和節流。 一般案例 令牌和模型配額可供使用時,Azure OpenAI 資源會透過 API 層和後端應用程式伺服器傳回 200。

圖表,其中顯示具有三個 Azure OpenAI 端點群組的一般案例。兩個端點的第一個群組會取得成功的流量。

當資源因為配額限制而 節流 時,API 層級可以立即改用不同的 Azure OpenAI 資源,以滿足原始聊天應用程式的要求。

顯示節流案例的圖表,其中包含失敗的429回應碼,以及客戶端必須等待多少秒才能重試的回應標頭。

先決條件

開啟 Azure API 管理負載均衡本機範例應用程式

GitHub Codespaces 執行由 GitHub 管理的開發容器,並以 Visual Studio Code for the Web 作為使用者介面。 想要一個最簡便的開發環境,請使用 GitHub Codespaces,以便預先安裝正確的開發工具和依賴項來完成這篇文章。

GitHub Codespaces 中開啟。

重要

所有 GitHub 帳戶每月都可以免費使用 GitHub Codespaces 最多 60 小時,並可使用兩個核心的實例。 如需詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存空間和核心時數

部署 Azure API 管理負載平衡器

  1. 若要將負載平衡器部署至 Azure,請登入 Azure 開發人員 CLI (AZD):

    azd auth login
    
  2. 完成登入指示。

  3. 部署負載平衡器應用程式:

    azd up
    

    選擇部署的訂閱和區域。 他們不需要與聊天應用程式使用相同的訂用帳戶和區域。

  4. 等候部署完成,再繼續。 此過程可能需要最多 30 分鐘。

取得負載平衡器端點

執行下列 Bash 命令以查看部署中的環境變數。 您稍後需要此資訊。

azd env get-values | grep APIM_GATEWAY_URL

使用負載平衡器端點重新部署聊天應用程式

這些範例會在聊天應用程式範例上完成。

  1. 使用下列其中一個選項開啟聊天應用程式範例的開發容器。

    語言 GitHub Codespaces Visual Studio Code
    .NET 在 GitHub Codespaces 中開啟 在開發容器中開啟
    JavaScript 在 GitHub Codespaces 中開啟 在開發容器中開啟
    Python 程式語言 在 GitHub Codespaces 中開啟 在開發容器中開啟
  2. 登入 Azure 開發人員 CLI (AZD):

    azd auth login
    

    完成登入指示。

  3. 使用 chat-app之類的名稱建立 AZD 環境:

    azd env new <name>
    
  4. 新增下列環境變數,告知聊天應用程式的後端使用 Azure OpenAI 要求的自定義 URL:

    azd env set OPENAI_HOST azure_custom
    
  5. 新增下列環境變數,告知聊天應用程式的後端 Azure OpenAI 要求的自定義 URL 值為何:

    azd env set AZURE_OPENAI_CUSTOM_URL <APIM_GATEWAY_URL>
    
  6. 部署聊天應用程式:

    azd up
    

設定 TPM 配額

預設情況下,負載平衡器中的每個 Azure OpenAI 實例都會部署,容量為每分鐘 30,000 個令牌(TPM)。 您可以放心使用聊天應用程式,因為它設計之初就為了能夠在多用戶下擴展運作,而不會用完配額。 在下列情況下變更此值:

  • 您會收到部署容量錯誤訊息:請降低該值。
  • 您需要更高的容量:提高值。
  1. 使用下列命令來變更值:

    azd env set OPENAI_CAPACITY 50
    
  2. 重新部署負載平衡器:

    azd up
    

清除資源

當您完成聊天應用程式和負載平衡器後,請清理資源。 本文中建立的 Azure 資源會向您 Azure 訂用帳戶收費。 如果您預計未來不需要這些資源,請將其刪除,以避免產生更多費用。

清除聊天應用程式資源

返回聊天應用程式文章以清除這些資源。

清除負載平衡器資源

執行下列 Azure 開發人員 CLI 命令來刪除 Azure 資源並移除原始碼:

azd down --purge --force

開關提供:

  • purge:立即清除已刪除的資源。 您可以每分鐘重複使用 Azure OpenAI 令牌。
  • force:刪除會以無訊息方式進行,而不需要使用者同意。

清除資源

刪除 GitHub Codespaces 環境可確保您充分利用帳戶可獲得的免費每核心時數權益。

重要

如需 GitHub 帳戶權利的詳細資訊,請參閱 GitHub Codespaces 每月包含的記憶體和核心時數

  1. 登入 GitHub Codespaces 儀錶板。

  2. 找出您目前執行的程式代碼空間,其來源為 azure-samples/openai-apim-lb GitHub 存放庫。

    顯示所有執行中程式代碼空間的螢幕快照,包括其狀態和範本。

  3. 開啟 GitHub Codespaces 項目的操作選單,然後選取 刪除

    顯示單一程式碼空間功能表的螢幕快照,其中已醒目提示 [刪除] 選項。

獲得幫助

如果您在部署 Azure API 管理負載平衡器時遇到問題,請將您的問題新增至存放庫的 問題 網頁。

範例程序代碼

本文中使用的範例包括:

  • 在 Azure 監視器中檢視 Azure API 管理診斷數據。
  • 使用 Azure 負載測試 來負載測試聊天應用程式。