本文顯示如何部署和執行由私人端點可存取的 Python 企業聊天應用程式範例。
此範例會使用 Python、Azure OpenAI 服務,以及在 Azure AI 搜尋中使用的檢索增強生成(RAG)來實作聊天應用程式,以獲得虛構公司有關員工福利的解答。 應用程式會植入 PDF 檔案,其中包含員工手冊、福利檔,以及公司角色和期望清單。
依照本文中的指示,您可以:
- 將聊天應用程式部署至 Azure,以在網頁瀏覽器中公開存取。
- 使用私人端點重新部署聊天應用程式。
完成此程式之後,您可以使用自定義程式代碼開始修改新專案並重新部署,知道您的聊天應用程式只能透過專用網存取。
架構概觀
默認部署會建立具有公用端點的聊天應用程式。
對於使用私人數據擴充的聊天應用程式,保護聊天應用程式的存取至關重要。 本文提供使用虛擬網路的解決方案。
在虛擬網路中,Azure App 服務 應用程式與其他後端 Azure 服務有個別的子網。 此結構可讓您輕鬆地將不同的網路安全組規則套用至每個子網。
在虛擬網路內,服務會使用私人端點彼此通訊。 每個私人端點都會與私人域名系統 (DNS) 區域相關聯,以將私人端點的名稱解析為虛擬網路內的IP位址。
部署步驟
部署兩次解決方案。 使用公用存取權部署一次,以驗證聊天應用程式是否正常運作。 再次部署私人存取權,以使用虛擬網路保護您的聊天應用程式。
先決條件
你需要一個開發 容器 環境,具備完成本文所需的所有相依。 您可以在 GitHub Codespaces(瀏覽器中)或使用 Visual Studio Code 在本機執行開發容器。
若要使用本文,您需要下列必要條件。
- Codespaces(建議)
- Visual Studio 程式碼
- Azure 訂用帳戶。 免費建立一個。
- Azure 帳戶許可權。 您的 Azure 帳戶必須具有
Microsoft.Authorization/roleAssignments/write許可權,例如 使用者存取系統管理員 或 擁有者。 - GitHub 帳戶。
範例資源的使用量成本
此架構中使用的大部分資源都屬於基本或以耗用量為基礎的定價層。 這種定價模式意味著你只需為實際使用的內容付費,且在開發或測試期間通常收費很低。
使用私有網路部署會增加部署成本。 完成評估或部署應用程式後,刪除所有已配置的資源以避免持續收費。
如需詳細的預期成本分解,請參閱 GitHub 倉庫中的「開始前」部分。
開放的開發環境
使用下列指示來部署預先設定的開發環境,其中包含完成本文所需的所有相依性。
- GitHub Codespaces(建議)
- Visual Studio 程式碼
GitHub Codespaces 會執行由 GitHub 所管理的開發容器,以作為適用於 Web 的 Visual Studio Code 的使用者介面。 想要一個最簡便的開發環境,請使用 GitHub Codespaces,以便預先安裝正確的開發工具和依賴項來完成這篇文章。
這很重要
所有 GitHub 帳戶每月可免費使用 GitHub Codespaces 最多 60 小時,並可同時運行兩個核心實例。 如需詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存空間和核心小時數
以滑鼠右鍵按下列按鈕,然後選取 [在新視窗 中開啟連結],讓開發環境和文件同時可供使用。
在 [ 建立代碼空間] 頁面上,檢閱 codespace 組態設定,然後選取 [ 建立程式代碼空間]。
等候程式空間啟動。 此啟動程序可能需要幾分鐘的時間。
在畫面底部的終端機中,使用 Azure 開發人員 CLI 登入 Azure:
azd auth login從終端機複製程式代碼,然後將它貼到瀏覽器中。 請依照指示向 Azure 帳戶進行驗證。
本文其餘的任務將在此開發容器的環境中進行。
自訂設定
此解決方案根據您使用 Azure Developer CLI 設定的自訂設定來配置並部署基礎架構。 下表說明此解決方案的自定義設定。
| 設定 | 說明 |
|---|---|
AZURE_PUBLIC_NETWORK_ACCESS |
控制所支援 Azure 資源上的公用網路存取值。 有效值為 Enabled 或 Disabled。 |
AZURE_USE_PRIVATE_ENDPOINT |
控制私人端點的部署,以將 Azure 資源連線到虛擬網路。 值 TRUE 表示私人端點會部署以進行連線。 |
AZURE_USE_VPN_GATEWAY |
控制虛擬網路 VPN 閘道器的部署。 如果你不使用這個設定並關閉公開存取,你需要用其他方式連接虛擬網路。 這個 TRUE 數值表示已部署 VPN 閘道器以提供連線。 |
部署聊天應用程式
第一個部署會建立資源,並提供可公開存取的端點。
執行下列命令來設定此解決方案以進行公用存取:
azd env set AZURE_PUBLIC_NETWORK_ACCESS Enabled當系統要求您提供環境名稱時,請記住環境名稱是用來建立資源群組。 輸入有意義的名稱。 如果您是在小組或組織中,請包含您的名稱,如 中所示
morgan-chat-private-endpoints。 記下環境名稱。 您稍後需要它才能在 Azure 入口網站中尋找資源。執行下列命令以包含布建虛擬網路資源。 請記住,部署不會限制存取,直到第二個部署為止。
azd env set AZURE_USE_PRIVATE_ENDPOINT true使用下列命令部署解決方案:
azd up布建資源是部署過程中最耗時的部分。 等候部署完成,再繼續。
在部署程序結束時,應用程式端點隨即出現。 將該端點複製到瀏覽器以開啟聊天應用程式。 選取卡片上的其中一個問題,然後等候答案。
請記下端點 URL,因為您稍後會在文章中再次需要它。
使用私人存取將聊天應用程式部署至 Azure
變更部署設定,以保護聊天應用程式進行私人存取。
執行以下指令以使用 VPN 閘道器來存取虛擬網路:
azd env set AZURE_USE_VPN_GATEWAY true執行下列命令以關閉公用存取:
azd env set AZURE_PUBLIC_NETWORK_ACCESS Disabled執行下列命令來變更資源組態。 這個指令不會重新部署應用程式碼,因為只有基礎架構設定有變動。
azd provision布建完成之後,再次在瀏覽器中開啟聊天應用程式。 因為公用端點已停用,因此無法再存取聊天應用程式。
存取聊天應用程式
若要存取聊天應用程式,請使用 Azure VPN 閘道 或 Azure 虛擬桌面之類的工具。 請記住,您用來存取應用程式的任何工具都必須安全且符合組織的安全策略。
清理資源
下列步驟會引導您完成清理所用資源的過程。
清理 Azure 資源
如果你未來不打算用到 Azure 資源,建議刪除它們以避免持續的費用。
執行以下 Azure Developer CLI 命令以刪除 Azure 資源:
azd down --purge
刪除 GitHub Codespaces 環境可確保您能充分利用帳戶的免費每核心時數配額。
這很重要
如需有關您 GitHub 帳戶權利的更多詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存空間與核心小時數。
尋求幫助
此範例存放庫提供疑難排解資訊。
如果您的問題未解決,請將問題新增至存放庫 的 [問題 ] 網頁。
相關內容
- 請參閱 企業聊天應用程式 GitHub 存放庫。
- 建置 聊天應用程式,使用 Azure OpenAI 的 最佳實踐解決方案架構。
- 瞭解在生成式 AI 應用程式中如何運用 Azure AI 搜尋來進行
存取控制。