使用您自己的 Python 數據範例開始使用聊天
本文說明如何部署和執行 聊天與您自己的 Python 數據範例。 此範例會在 Azure AI 搜尋中使用 Python、Azure OpenAI 服務和擷取擴增世代 (RAG) 實作聊天應用程式,以取得虛構公司員工權益的解答。 應用程式會植入 PDF 檔案,包括員工手冊、福利檔和公司角色和期望清單。
遵循本文中的指示,您將會:
- 部署聊天應用程式至 Azure。
- 取得有關員工權益的解答。
- 變更設定以變更回應的行為。
完成此程序之後,您可以使用自定義程式代碼開始修改新專案。
本文是文章集合的一部分,說明如何使用 Azure OpenAI 服務和 Azure AI 搜尋來建置聊天應用程式。
集合中的其他文章包括:
注意
本文使用一或多個 AI 應用程式範本 作為本文範例和指引的基礎。 AI 應用程式範本提供您妥善維護且易於部署的參考實作,以協助確保 AI 應用程式的高品質起點。
架構概觀
下圖顯示聊天應用程式的簡單結構:
結構的重要元件包括:
- Web 應用程式,用來裝載互動式聊天體驗。
- Azure AI 搜尋資源,可從您自己的數據取得答案。
- Azure OpenAI 服務,用來提供:
- 關鍵字以增強對您自己的資料的搜尋。
- 來自 OpenAI 模型的答案。
- 來自 Ada 模型的內嵌項目
成本
此結構中的大部分資源都會使用基本或使用量價格層。 使用量價格是以使用量為基礎,這表示您只需支付您使用的費用。 若要完成本文,將會向您收取費用,但費用將極低。 當您完成本文時,您可以刪除資源來停止產生費用。
深入瞭解 範例存放庫中的成本。
必要條件
開發容器環境可提供完成本文所需的所有相依性。 您可以在 GitHub Codespaces (瀏覽器中) 或使用 Visual Studio Code 在本機執行開發容器。
若要使用本文,您需要下列必要條件:
- Azure 訂用帳戶 - 免費建立一個訂用帳戶
- Azure 帳戶權限 - 您的 Azure 帳戶必須具有 Microsoft.Authorization/roleAssignments/write 權限,例如,使用者存取系統管理員或擁有者。
- 在所需的 Azure 訂用帳戶中授與 Azure OpenAI 的存取權。 目前只有應用程式會授予此服務的存取權。 您可以填妥 https://aka.ms/oai/access 的表單,以申請 Azure OpenAI 的存取權。 如果您遇到問題,請在此存放庫上提出問題,以與我們連絡。
- GitHub 帳戶
開啟開發環境
立即使用已安裝所有相依性的開發環境開始,以完成本文。
GitHub Codespaces 會使用網頁版 Visual Studio Code 作爲使用者介面,執行由 GitHub 管理的開發容器。 如需最直接的開發環境,請使用 GitHub Codespaces,使得您有已預先安裝的正確開發人員工具和相依性,以便完成本文。
重要
所有 GitHub 帳戶每個月最多可以使用 Codespaces 60 小時,且有 2 個核心執行個體。 如需詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存體和核心時數。
開始在
Azure-Samples/azure-search-openai-demo
GitHub 存放庫分的main
分支上建立新的 GitHub Codespace 的流程。在以下按鈕上按一下以滑鼠右鍵,然後選取 [在新視窗中開啟連結],以便同時取得開發環境和文件。
在 [建立 Codespace] 頁面上,檢閱 Codespace 組態設定,然後選取 [建立新的 Codespace]
等候 Codespace 開始。 此啟動程序可能需要幾分鐘的時間。
在畫面底部的終端機中,使用 Azure Developer CLI 登入 Azure。
azd auth login
從終端機複製程式碼,然後將它貼到瀏覽器中。 遵循指示使用 Azure 帳戶進行驗證。
本文中的其餘工作會在此開發容器的內容中進行。
部署和執行
範例存放庫包含將聊天應用程式部署至 Azure 所需的所有程式碼和設定檔。 下列步驟會逐步引導您完成將範例部署至 Azure 的程序。
部署聊天應用程式至 Azure
重要
在本節中建立的 Azure 資源會產生立即成本,主要是來自 Azure AI 搜尋服務資源。 即使您在命令完整執行之前中斷命令,這些資源仍可能會產生成本。
執行下列 Azure Developer CLI 命令來佈建 Azure 資源並部署原始程式碼:
azd up
如果系統提示您輸入環境名稱,請將它保持簡短和小寫。 例如:
myenv
。 它用來作為資源組名的一部分。出現提示時,選取要在其中建立資源的訂用帳戶。
第一次提示您選取位置時,請選取您附近的位置。 此位置會用於大部分的資源,包括裝載。
如果系統提示您輸入 OpenAI 模型或 Document Intelligence 資源的位置,請選取最接近您的位置。 如果有與您的第一個位置相同的位置,請選取該位置。
在應用程式部署後等候 5 或 10 分鐘,再繼續進行。
成功部署應用程式之後,您會看到終端機中顯示 URL。
選取標示為
(✓) Done: Deploying service webapp
的 URL,以在瀏覽器中開啟聊天應用程式。
使用聊天應用程式從 PDF 檔案取得答案
聊天應用程式會從 PDF 檔案中預先載入員工權益資訊。 您可以使用聊天應用程式來詢問有關權益的問題。 下列步驟會逐步引導您完成使用聊天應用程式的程序。 您的答案可能會隨著基礎模型更新而有所不同。
在瀏覽器中,選取或輸入 [聊天] 文字框中的 [效能檢閱中會發生什麼事? ] 。
從答案中,選取引文。
在右窗格中,使用索引卷標來瞭解答案的產生方式。
索引標籤 描述 思考程序 這是聊天中互動的指令碼。 您可以檢視系統提示 ( content
) 和您的使用者問題 (content
)。支援內容 這包括用來回答您的問題的資訊和來源資料。 開發人員設定中會指出來源資料引文的數目。 預設值是 3。 引文 這會顯示包含引文的原始頁面。 當您完成時,請再次選取選取的索引標籤以關閉窗格。
使用聊天應用程式設定來變更回應的行為
聊天的智慧取決於 OpenAI 模型,以及用來與模型互動的設定。
設定 | 描述 |
---|---|
覆寫提示範本 | 覆寫用來根據問題和搜尋結果產生答案的提示。 |
溫度 | 將要求的溫度設定為產生答案的 LLM。 較高的溫度會導致更多的創造性反應,但它們可能不那麼地面。 |
Seed | 設定種子以改善模型回應的重現性。 種子可以是任何整數。 |
最低搜尋分數 | 設定從 Azure AI 搜尋傳回之搜尋結果的最低分數。 分數範圍取決於您使用的是 混合式(預設)、向量,還是僅限文字。 |
最小重新調整程式分數 | 設定從語意重新編製工具傳回之搜尋結果的最小分數。 分數一律介於 0-4 之間。 分數越高,結果的語意就越與問題相關。 |
擷取這麼多個搜尋結果 | 設定要從 Azure AI 搜尋擷取的搜尋結果數目。 更多結果可能會增加尋找正確答案的可能性,但可能會導致模型「中間遺失」。您可以在引文的 [思考程式 ] 和 [支持內容 ] 索引標籤中看到這些來源。 |
排除類別 | 指定要從搜尋結果中排除的類別。 預設數據集中沒有使用任何類別。 |
使用語意排名工具進行擷取 | 啟用 Azure AI 搜尋 語意排名器,此模型會根據使用者查詢的語意相似性來重新排名搜尋結果。 |
使用語意標題 | 將語意標題傳送至 LLM,而不是完整的搜尋結果。 語意標題會在語意排名過程中從搜尋結果擷取。 |
建議後續問題 | 要求 LLM 根據使用者的查詢建議後續問題。 |
擷取模式 | 設定 Azure AI 搜尋查詢的擷取模式。 向量 + 文字 (混合式) 使用向量搜尋和全文搜索的組合, 向量 只會使用向量搜尋,而 文字 只會使用全文搜索。 混合式通常是最佳的。 |
串流聊天完成回應 | 在產生聊天UI時,持續串流回應。 |
下列步驟會逐步引導您完成變更設定的程序。
在瀏覽器中,選取 [ 開發人員設定 ] 索引標籤。
勾選 [建議後續問題] 核取方塊,然後再次詢問相同問題。
What happens in a performance review?
聊天傳回建議的後續問題,例如:
1. What is the frequency of performance reviews? 2. How can employees prepare for a performance review? 3. Can employees dispute the feedback received during the performance review?
在 [設定] 索引標籤中,取消選取 [使用語意排名工具進行擷取]。
再問一個問題嗎?
What happens in a performance review?
答案有何差異?
使用語意排名員:在 Contoso Electronics 的績效檢閱期間,員工將有機會討論他們在工作場所的成功和挑戰(1)。 檢閱將提供積極和建設性的意見反應,以協助員工發展及成長其角色(1)。 員工將會收到績效審查的書面摘要,其中包括未來一年的績效、意見反應和目標和目標評等。 績效審查是經理和員工之間的雙向對話(1)。
沒有語意排名員:在 Contoso Electronics 的績效檢閱期間,員工有機會討論他們在工作場所的成功和挑戰。 提供正面和建設性的意見反應,以協助員工發展及成長其角色。 會提供績效審查的書面摘要,包括未來一年的績效、意見反應和目標評等。 審查是經理和員工之間的雙向對話(1)。
清除資源
清除 Azure 資源
在本文中建立的 Azure 資源會向您的 Azure 訂用帳戶計費。 如果您預計未來不需要這些資源,請將其刪除,以避免產生更多費用。
執行下列 Azure Developer CLI 命令來刪除 Azure 資源並移除原始程式碼:
azd down --purge --force
參數提供:
purge
:立即清除已刪除的資源。 這可讓您重複使用 Azure OpenAI TPM。force
:刪除會以無訊息模式進行,不需要使用者同意。
清除 GitHub Codespaces
刪除 GitHub Codespaces 環境,可確保您可將您為帳戶取得的每個核心免費時數權利數量最大化。
重要
如需 GitHub 帳戶權利的詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存體和核心時數。
登入 GitHub Codespaces 儀表板 (https://github.com/codespaces)。
找出您目前執行中的 Codespaces,而其來源為
Azure-Samples/azure-search-openai-demo
GitHub 存放庫。開啟 Codespace 的快顯功能表,然後選取 [刪除]。
取得協助
此範例存放庫可提供疑難排解資訊。