共用方式為


使用 Azure Container Apps 及 RAG 擴展適用於 .NET 聊天應用的 Azure OpenAI

瞭解如何將負載平衡新增至您的應用程式,以將聊天應用程式延伸至 Azure OpenAI 令牌和模型配額限制之外。 此方法會使用 Azure Container Apps 來建立三個 Azure OpenAI 端點,以及將連入流量導向三個端點之一的主要容器。

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

  • 聊天應用程式

    • 如果您尚未部署聊天應用程式,請等到部署負載平衡器範例之後。

    • 如果您已部署聊天應用程式一次,您將變更環境變數以支援負載平衡器的自定義端點,並再次重新部署。

    • 聊天應用程式可用於以下語言:

  • 負載平衡器應用程式

注意事項

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

Azure OpenAI 與 Azure Container Apps 負載平衡的架構

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

此圖表顯示了聊天應用程式的架構,其中 Azure OpenAI 資源被特別標示。

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

圖表顯示聊天應用程式的架構,其中 Azure Container Apps 位於三個 Azure OpenAI 資源之前。

Azure 容器應用程式位於一組 Azure OpenAI 資源前面。 容器應用程式可解決兩個案例:一般和節流。 一般案例 令牌和模型配額可供使用時,Azure OpenAI 資源會透過容器應用程式和應用程式伺服器傳回 200。

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

當資源處於 限流情境,例如因為配額限制,Azure 容器應用程式可以立即重試不同的 Azure OpenAI 資源,以滿足原始聊天應用程式的請求。

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

先決條件

  • Azure 訂用帳戶。 免費建立一個

  • 在所需的 Azure 訂用帳戶中授與 Azure OpenAI 的存取權。

    目前,只有應用程式會授與此服務的存取權。 您應該 適用於 Azure OpenAI 的存取

  • 開發容器 可用於這兩個範例,包含完成本文所需的所有相依性。 您可以在 GitHub Codespaces 中執行開發容器(在瀏覽器中),或使用 Visual Studio Code 在本機執行。

開啟容器應用程式的本地負載平衡範例應用程式

GitHub Codespaces 執行由 GitHub 管理的開發容器,並使用 Visual Studio Code for the Web 作為使用者介面。 為了最簡單的開發環境,請使用 GitHub Codespaces,以確保預先安裝好完成本文所需的開發工具和相依套件。

在 GitHub Codespaces 中開啟此專案

重要

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

部署 Azure Container Apps 負載平衡器

  1. 登入 Azure 開發人員 CLI 以提供布建和部署步驟的驗證。

    azd auth login --use-device-code
    
  2. 將環境變數設定為使用 Azure CLI 驗證於佈建後的步驟。

    azd config set auth.useAzCliAuth "true"
    
  3. 部署負載平衡器應用程式。

    azd up
    

    您必須選取部署的訂閱方案和區域。 這些不需要與聊天應用程式相同的訂用帳戶和區域。

  4. 等候部署完成再繼續。

取得部署端點

  1. 使用下列命令來顯示 Azure 容器應用程式的已部署端點。

    azd env get-values
    
  2. 複製 CONTAINER_APP_URL 值。 在下一節中,您將使用它。

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

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

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

    語言 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. 新增下列環境變數,告知聊天應用程式的後端使用 OpenAI 要求的自定義 URL。

    azd env set OPENAI_HOST azure_custom
    
  5. 新增下列環境變數,以取代上一節中的URL <CONTAINER_APP_URL>。 此動作會告訴聊天應用程式的後端 OpenAI 要求的自訂 URL 值為何。

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

    azd up
    

您現在可以安心使用聊天應用程式,因為其設計旨在擴展以支持大量用戶,並且不會耗盡配額。

串流記錄以查看負載平衡器結果

  1. 在 azure 入口網站的 中,搜尋您的資源群組。

  2. 從群組中的資源清單中,選取 [容器應用程式] 資源。

  3. 選取 監控 -> 日誌流 以檢視日誌。

  4. 使用聊天應用程式為日誌生成流量。

  5. 尋找參考 Azure OpenAI 資源的記錄。 這三個資源中的每一個都具有在記錄批注中以 Proxying to https://openai3開頭的數值身份,其中 3 表示第三個 Azure OpenAI 資源。

    顯示 Azure 容器應用程式流式記錄的螢幕快照,其中有兩行記錄行被突顯,用於展示記錄註解。

  6. 當您使用聊天應用程式時,當負載平衡器收到要求已超過配額的狀態時,負載平衡器會自動輪替至另一個資源。

設定 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 TPM。
  • force:刪除會以無訊息方式進行,而不需要使用者同意。

清理 GitHub Codespaces

刪除 GitHub Codespaces 環境可確保您可以最大化您為帳戶取得的免費每核心時數權利數量。

重要

如需有關 GitHub 帳戶權利的更多資訊,請參閱 GitHub Codespaces 每月包含的儲存空間和核心時數

  1. 登入 GitHub Codespaces 儀錶板 (https://github.com/codespaces)。

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

    所有執行中 Codespace 的螢幕快照,包括其狀態和範本。

  3. 開啟 codespace 的上下文功能表,然後選取 刪除

    單一代碼空間的操作功能表截圖,其中[刪除]選項已突出顯示。

獲得幫助

如果您在部署 Azure API 管理負載平衡器時遇到問題,請將問題記錄至存放庫 問題

範例程序代碼

本文中使用的範例包括:

下一步