共用方式為


使用自己的 .NET 資料樣本開始進行聊天

本文說明如何部署及執行使用自己的 .NET 資料樣本進行聊天。 此範例會實作聊天應用程式,其使用 C#、Azure OpenAI 服務和 Azure AI 搜尋服務中的擷取增強世代 (RAG),以取得有關虛構公司員工權益的解答。 員工權益聊天應用程式會植入 PDF 檔案,包括員工手冊、權益文件和公司角色和預期的清單。

遵循本文中的指示,您將會:

  • 部署聊天應用程式至 Azure。
  • 取得有關員工權益的解答。
  • 變更設定以變更回應的行為。

完成此程序之後,您可以使用自訂程式碼來開始修改新專案。

本文是說明如何使用 Azure Open AI 服務和 Azure AI 搜尋服務來建置聊天應用程式的文章集合的一部分。

集合中的其他文章包括:

架構概觀

在此範例應用程式中,名為 Contoso Electronics 的虛構公司會為其員工提供聊天應用程式體驗,讓他們詢問關於福利、內部政策,以及工作描述和角色的問題。

下圖顯示聊天應用程式的架構:

此圖顯示從用戶端到後端應用程式的架構。

  • 使用者介面 - 應用程式的聊天介面是 Blazor WebAssembly 應用程式。 此介面可接受使用者查詢、將要求路由傳送至應用程式後端,以及顯示產生的回應。
  • 後端 - 應用程式後端是 ASP.NET Core Minimal API。 後端會裝載 Blazor 靜態 Web 應用程式,並且協調不同服務之間的互動。 此應用程式中使用的服務包括:
    • Azure 認知搜尋 – 從儲存在 Azure 儲存體帳戶中的資料編製文件索引。 如此,即可使用向量搜尋功能來搜尋文件。
    • Azure OpenAI 服務 – 提供大型語言模型 (LLM) 來產生回應。 語意核心可與 Azure OpenAI 服務搭配使用,以協調更複雜的 AI 工作流程。

成本

此結構中的大部分資源都會使用基本或使用量價格層。 使用量價格是以使用量為基礎,這表示您只需支付您使用的費用。 若要完成本文,將會向您收取費用,但費用將極低。 完成本文時,您可以刪除資源來停止產生費用。

如需詳細資訊,請參閱 Azure 範例:範例存放庫中的成本

必要條件

開發容器環境可提供完成本文所需的所有相依性。 您可以在 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 每月包含的儲存體和核心時數

  1. 開始在 Azure-Samples/azure-search-openai-demo-csharp GitHub 存放庫分的 main 分支上建立新的 GitHub Codespace 的流程。

  2. 在以下按鈕上按一下以滑鼠右鍵,然後選取 [在新視窗中開啟連結],以便同時取得開發環境和文件。

    在 GitHub Codespaces 中開啟此專案

  3. 在 [建立 Codespace] 頁面上,檢閱 Codespace 組態設定,然後選取 [建立新的 Codespace]

    建立新 Codespace 之前確認畫面的螢幕擷取畫面。

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

  5. 在畫面底部的終端機中,使用 Azure Developer CLI 登入 Azure。

    azd auth login
    
  6. 從終端機複製程式碼,然後將它貼到瀏覽器中。 遵循指示使用 Azure 帳戶進行驗證。

  7. 本文中的其餘工作會在此開發容器的內容中進行。

部署和執行

範例存放庫包含將聊天應用程式部署至 Azure 所需的所有程式碼和設定檔。 下列步驟會逐步引導您完成將範例部署至 Azure 的程序。

部署聊天應用程式至 Azure

重要

在本節中建立的 Azure 資源會產生立即成本,主要是來自 Azure AI 搜尋服務資源。 即使您在命令完整執行之前中斷命令,這些資源仍可能會產生成本。

  1. 執行下列 Azure Developer CLI 命令來佈建 Azure 資源並部署原始程式碼:

    azd up
    
  2. 提示您輸入環境名稱時,請將它保持簡短和小寫。 例如: myenv 。 其會做為資源群組名稱的一部分。

  3. 出現提示時,選取要在其中建立資源的訂用帳戶。

  4. 第一次提示您選取位置時,請選取您附近的位置。 此位置會用於大部分的資源,包括裝載。

  5. 如果提示您輸入 OpenAI 模型的位置,請選取您附近的位置。 如果有與您的第一個位置相同的位置,請選取該位置。

  6. 等候應用程式部署。 部署可能需要 20 分鐘的時間才能完成。

  7. 成功部署應用程式之後,您會看到終端機中顯示 URL。

  8. 選取標示為 Deploying service web 的 URL,以在瀏覽器中開啟聊天應用程式。

    瀏覽器中聊天應用程式的螢幕擷取畫面,其中顯示數個聊天輸入建議,以及可輸入問題的聊天文字方塊。

使用聊天應用程式從 PDF 檔案取得答案

聊天應用程式會從 PDF 檔案中預先載入員工權益資訊。 您可以使用聊天應用程式來詢問有關權益的問題。 下列步驟會逐步引導您完成使用聊天應用程式的程序。

  1. 在瀏覽器中,使用左側導覽瀏覽至 [聊天] 頁面。

  2. 在聊天文字輸入框中,選取或輸入「我的 Northwind Health Plus 方案所納入非標準的項目為何?」。 您的回應會類似於下圖。

    聊天應用程式第一個答案的螢幕擷取畫面。

  3. 從答案中,選取引文。 快顯視窗隨即開啟,顯示資訊的來源。

    聊天應用程式第一個答案的螢幕擷取畫面,其中以紅色方塊醒目提示了引文。

  4. 在答案方塊頂端的索引標籤之間瀏覽,以了解產生答案的方式。

    索引標籤 描述
    思考程序 這是聊天中互動的指令碼。 您可以檢視系統提示 (content) 和您的使用者問題 (content)。
    支援內容 這包括用來回答您的問題的資訊和來源資料。 開發人員設定中會指出來源資料引文的數目。 預設值是 3
    引文 這會顯示包含引文的來源頁面。
  5. 完成時,請瀏覽回 [答案] 索引標籤。

使用聊天應用程式設定來變更回應的行為

聊天的智慧取決於 OpenAI 模型,以及用來與模型互動的設定。

聊天開發人員設定的螢幕擷取畫面。

設定 描述
覆寫提示範本 這是用來產生答案的提示。
擷取這麼多個搜尋結果 這是用來產生答案的搜尋結果數目。 您可以在引文的 [思考程序] 和 [支援內容] 索引標籤中看到這些來源傳回。
排除類別 這是從搜尋結果中排除的文件類別。
使用語意排名工具進行擷取 這是 Azure AI 搜尋服務的一項功能,其使用機器學習來改善搜尋結果的相關性。
擷取模式 向量 + 文字表示搜尋結果是以文件的文字和文件的內嵌項目為基礎。 向量表示搜尋結果是以文件的內嵌項目為基礎。 文字表示搜尋結果是以文件的文字為基礎。
使用查詢內容相關摘要,而不是整個文件 同時勾選 Use semantic rankerUse query-contextual summaries 時,LLM 會使用從排名最高文件中的關鍵段落擷取的標題,而不是所有段落。
建議後續問題 讓聊天應用程式根據答案建議後續問題。

下列步驟會逐步引導您完成變更設定的程序。

  1. 在瀏覽器中,選取頁面右上方的齒輪圖示。

  2. 若未選取,請選取 [建議後續問題] 核取方塊,然後再次詢問相同問題。

    What is included in my Northwind Health Plus plan that is not in standard?
    

    聊天可能會傳回後續問題的建議。

  3. 在 [設定] 索引標籤中,取消選取 [使用語意排名工具進行擷取]

  4. 再次詢問相同的問題。

    What is my deductible?
    
  5. 答案有何差異?

    使用語意排名工具的回應提供了單一答案。 沒有語意排名的回應傳回了較不直接的答案。

清除資源

清除 Azure 資源

在本文中建立的 Azure 資源會向您的 Azure 訂用帳戶計費。 如果您預計未來不需要這些資源,請將其刪除,以避免產生更多費用。

執行下列 Azure Developer CLI 命令來刪除 Azure 資源並移除原始程式碼:

azd down --purge

清除 GitHub Codespaces

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

重要

如需 GitHub 帳戶權利的詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存體和核心時數

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

  2. 找出您目前執行中的 Codespaces,而其來源為 Azure-Samples/azure-search-openai-demo-csharp GitHub 存放庫。

    執行中 Codespaces 的螢幕擷取畫面,包括其狀態和範本。

  3. 開啟 Codespace 的快顯功能表,然後選取 [刪除]

    單一 Codespace 的操作功能表 (已醒目提示刪除選項) 螢幕擷取畫面。

取得協助

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

如果您的問題未獲得解決,請將問題記錄至存放庫的 [問題]

下一步