本文顯示如何部署和執行由私人端點可存取的 Python 企業聊天應用程式範例。
此範例會使用 Python、Azure OpenAI 服務,以及在 Azure AI 搜尋中使用的檢索增強生成(RAG)來實作聊天應用程式,以獲得虛構公司有關員工福利的解答。 應用程式會植入 PDF 檔案,其中包含員工手冊、福利檔,以及公司角色和期望清單。
依照本文中的指示,您可以:
- 將聊天應用程式部署至 Azure,以在網頁瀏覽器中公開存取。
- 使用私人端點重新部署聊天應用程式。
完成此程式之後,您可以使用自定義程式代碼開始修改新專案並重新部署,知道您的聊天應用程式只能透過專用網存取。
架構概觀
默認部署會建立具有公用端點的聊天應用程式。
對於使用私人數據擴充的聊天應用程式,保護聊天應用程式的存取至關重要。 本文提供使用虛擬網路的解決方案。
在虛擬網路中,Azure App Service 應用程式與其他後端 Azure 服務有個別的子網。 此結構可讓您輕鬆地將不同的網路安全組規則套用至每個子網。
在虛擬網路內,服務會使用私人端點彼此通訊。 每個私人端點都會與私人域名系統 (DNS) 區域相關聯,以將私人端點的名稱解析為虛擬網路內的IP位址。
部署步驟
建議您部署解決方案兩次。 使用公用存取權部署一次,以驗證聊天應用程式是否正常運作。 再次部署私人存取權,以使用虛擬網路保護您的聊天應用程式。
先決條件
開發容器環境可供完成本文所需的所有相依性使用。 您可以在 GitHub Codespaces(瀏覽器中)或使用 Visual Studio Code 在本機執行開發容器。
若要使用本文,您需要下列必要條件。
- Codespaces(建議)
- Visual Studio 程式碼
- Azure 訂用帳戶。 免費建立一個。
- Azure 帳戶許可權。 您的 Azure 帳戶必須具有
Microsoft.Authorization/roleAssignments/write許可權,例如 使用者存取系統管理員 或 擁有者。 - GitHub 帳戶。
範例資源的使用量成本
此架構中使用的大部分資源都屬於基本或以耗用量為基礎的定價層。 這表示您只需支付您使用的費用,而且費用在開發或測試期間通常最低。
使用私有網路部署會增加部署成本。 完成評估或部署應用程式之後,您可以刪除所有布建的資源,以避免持續產生費用。
如需詳細的預期成本明細,請參閱 GitHub 倉庫中的「 Before you start 」範例。
開放的開發環境
使用下列指示來部署預先設定的開發環境,其中包含完成本文所需的所有相依性。
- 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 開發人員 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 虛擬桌面之類的工具。 請記住,您用來存取應用程式的任何工具都必須安全且符合組織的安全策略。
清理資源
下列步驟會引導您完成清理所用資源的過程。
刪除 GitHub Codespaces 環境可確保您能充分利用帳戶的免費每核心時數配額。
這很重要
如需有關您 GitHub 帳戶權利的更多詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存空間與核心小時數。
尋求幫助
此範例存放庫提供疑難排解資訊。
如果您的問題未解決,請將問題新增至存放庫 的 [問題 ] 網頁。
相關內容
- 請參閱 企業聊天應用程式 GitHub 存放庫。
- 建置 聊天應用程式,使用 Azure OpenAI 的 最佳實踐解決方案架構。
- 瞭解在生成式 AI 應用程式中如何運用 Azure AI 搜尋來進行
存取控制。