開始使用適用於 Python 的聊天私人端點

本文顯示如何部署和執行由私人端點可存取的 Python 企業聊天應用程式範例。

此範例會使用 Python、Azure OpenAI 服務,以及在 Azure AI 搜尋中使用的檢索增強生成(RAG)來實作聊天應用程式,以獲得虛構公司有關員工福利的解答。 應用程式會植入 PDF 檔案,其中包含員工手冊、福利檔,以及公司角色和期望清單。

依照本文中的指示,您可以:

  • 將聊天應用程式部署至 Azure,以在網頁瀏覽器中公開存取。
  • 使用私人端點重新部署聊天應用程式。

完成此程式之後,您可以使用自定義程式代碼開始修改新專案並重新部署,知道您的聊天應用程式只能透過專用網存取。

架構概觀

默認部署會建立具有公用端點的聊天應用程式。

顯示基本 RAG 聊天應用程式網路架構的圖表。

對於使用私人數據擴充的聊天應用程式,保護聊天應用程式的存取至關重要。 本文提供使用虛擬網路的解決方案。

此圖顯示 Azure 虛擬網路內所有服務的網路架構。

在虛擬網路中,Azure App Service 應用程式與其他後端 Azure 服務有個別的子網。 此結構可讓您輕鬆地將不同的網路安全組規則套用至每個子網。

顯示虛擬網路內聊天應用程式子網和後端子網的圖表。

在虛擬網路內,服務會使用私人端點彼此通訊。 每個私人端點都會與私人域名系統 (DNS) 區域相關聯,以將私人端點的名稱解析為虛擬網路內的IP位址。

此圖顯示虛擬網路內 Azure OpenAI 的私人端點和私人 DNS 區域。

部署步驟

建議您部署解決方案兩次。 使用公用存取權部署一次,以驗證聊天應用程式是否正常運作。 再次部署私人存取權,以使用虛擬網路保護您的聊天應用程式。

先決條件

開發容器環境可供完成本文所需的所有相依性使用。 您可以在 GitHub Codespaces(瀏覽器中)或使用 Visual Studio Code 在本機執行開發容器。

若要使用本文,您需要下列必要條件。

範例資源的使用量成本

此架構中使用的大部分資源都屬於基本或以耗用量為基礎的定價層。 這表示您只需支付您使用的費用,而且費用在開發或測試期間通常最低。

使用私有網路部署會增加部署成本。 完成評估或部署應用程式之後,您可以刪除所有布建的資源,以避免持續產生費用。

如需詳細的預期成本明細,請參閱 GitHub 倉庫中的「 Before you start 」範例。

開放的開發環境

使用下列指示來部署預先設定的開發環境,其中包含完成本文所需的所有相依性。

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

這很重要

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

  1. 啟動程式,在 main GitHub 存放庫的 分支上建立新的 GitHub 程式代碼空間。

  2. 以滑鼠右鍵按下列按鈕,然後選取 [在新視窗 中開啟連結],讓開發環境和文件同時可供使用。

    GitHub Codespaces 中開啟。

  3. 在 [ 建立代碼空間] 頁面上,檢閱 codespace 組態設定,然後選取 [ 建立程式代碼空間]。

    顯示您在建立新的 Codespace 前確認畫面的螢幕快照。

  4. 等候程式空間啟動。 此啟動程序可能需要幾分鐘的時間。

  5. 在畫面底部的終端機中,使用 Azure 開發人員 CLI 登入 Azure:

    azd auth login
    
  6. 從終端機複製程式代碼,然後將它貼到瀏覽器中。 請依照指示向 Azure 帳戶進行驗證。

本文其餘的任務將在此開發容器的環境中進行。

自訂設定

此解決方案會根據使用 Azure 開發人員 CLI 設定的自訂設定來設定及部署基礎結構。 下表說明此解決方案的自定義設定。

設定 說明
AZURE_PUBLIC_NETWORK_ACCESS 控制所支援 Azure 資源上的公用網路存取值。 有效值為 EnabledDisabled
AZURE_USE_PRIVATE_ENDPOINT 控制私人端點的部署,以將 Azure 資源連線到虛擬網路。 值 TRUE 表示私人端點會部署以進行連線。
AZURE_USE_VPN_GATEWAY 控制虛擬網路 VPN 閘道器的部署。 如果你不使用這個功能且公共存取被關閉,你需要用另一種方式連接虛擬網路。 這個 TRUE 數值表示已部署 VPN 閘道器以提供連線。

部署聊天應用程式

第一個部署會建立資源,並提供可公開存取的端點。

  1. 執行下列命令來設定此解決方案以進行公用存取:

    azd env set AZURE_PUBLIC_NETWORK_ACCESS Enabled
    

    當系統要求您提供環境名稱時,請記住環境名稱是用來建立資源群組。 輸入有意義的名稱。 如果您是在小組或組織中,請包含您的名稱,如 中所示 morgan-chat-private-endpoints。 記下環境名稱。 您稍後需要它才能在 Azure 入口網站中尋找資源。

  2. 執行下列命令以包含布建虛擬網路資源。 請記住,部署不會限制存取,直到第二個部署為止。

    azd env set AZURE_USE_PRIVATE_ENDPOINT true
    
  3. 使用下列命令部署解決方案:

    azd up
    

    布建資源是部署過程中最耗時的部分。 等候部署完成,再繼續。

  4. 在部署程序結束時,應用程式端點隨即出現。 將該端點複製到瀏覽器以開啟聊天應用程式。 選取卡片上的其中一個問題,然後等候答案。

    請記下端點 URL,因為您稍後會在文章中再次需要它。

使用私人存取將聊天應用程式部署至 Azure

變更部署設定,以保護聊天應用程式進行私人存取。

  1. 執行以下指令以使用 VPN 閘道器來存取虛擬網路:

    azd env set AZURE_USE_VPN_GATEWAY true
    
  2. 執行下列命令以關閉公用存取:

    azd env set AZURE_PUBLIC_NETWORK_ACCESS Disabled
    
    
  3. 執行下列命令來變更資源組態。 這個指令不會重新部署應用程式碼,因為只有基礎架構設定有變動。

    azd provision
    
  4. 布建完成之後,再次在瀏覽器中開啟聊天應用程式。 因為公用端點已停用,因此無法再存取聊天應用程式。

存取聊天應用程式

若要存取聊天應用程式,請使用 Azure VPN 閘道Azure 虛擬桌面之類的工具。 請記住,您用來存取應用程式的任何工具都必須安全且符合組織的安全策略。

清理資源

下列步驟會引導您完成清理所用資源的過程。

刪除 GitHub Codespaces 環境可確保您能充分利用帳戶的免費每核心時數配額。

這很重要

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

  1. 登入 GitHub Codespaces 儀表板。

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

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

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

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

尋求幫助

此範例存放庫提供疑難排解資訊。

如果您的問題未解決,請將問題新增至存放庫 的 [問題 ] 網頁。