本文說明如何部署及執行適用于 .NET 的企業 聊天應用程式範例。 此範例會在 Azure AI 搜尋中使用 C#、Azure OpenAI 服務和擷取擴增世代 (RAG) 實作聊天應用程式, 以取得虛構公司員工權益的解答。 員工權益聊天應用程式會植入 PDF 檔案,包括員工手冊、福利檔和公司角色和期望清單。

依照本文中的指示,您將:

  • 將聊天應用程式部署至 Azure。
  • 取得員工權益的解答。
  • 變更設定以變更回應的行為。
  • 完成此程式之後,您可以使用自訂程式碼開始修改新專案。

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

    集合中的其他文章包括:

  • Python
  • JavaScript
  • 下列圖表顯示聊天應用程式的簡單架構:

    架構的主要元件包括:

  • 用來裝載互動式聊天體驗的 Web 應用程式。
  • 用來為相關查詢編制資料的索引的 Azure AI 搜尋服務資源。
  • 提供 Azure OpenAI 服務:
    • 關鍵字可增強對您自己的資料進行搜尋。
    • OpenAI 模型的解答。
    • ada 模型的內嵌
    • 此架構中的大部分資源都會使用基本或耗用量定價層。 使用量定價是以使用量為基礎,這表示您只需支付您使用的費用。 若要完成本文,將會收取費用,但費用會降到最低。 當您完成本文時,您可以刪除資源來停止產生費用。

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

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

      若要遵循本文,您需要下列必要條件:

      Codespaces (建議) Visual Studio Code
    • Azure 訂用帳戶 - 免費建立一個訂用帳戶
    • Azure 帳戶許可權 - 您的 Azure 帳戶必須具有 Microsoft.Authorization/roleAssignments/write 許可權,例如 使用者存取管理員istrator 擁有者
    • 在所需的 Azure 訂用帳戶中授與 Azure OpenAI 的存取權。 目前只有應用程式會授予此服務的存取權。 您可以填妥 https://aka.ms/oai/access 的表單,以申請 Azure OpenAI 的存取權。 如果您發生問題,請在此存放庫上提出問題,以與我們連絡。
    • GitHub 帳戶
    • Azure 訂用帳戶 - 免費建立一個訂用帳戶
    • Azure 帳戶許可權 - 您的 Azure 帳戶必須具有 Microsoft.Authorization/roleAssignments/write 許可權,例如 使用者存取管理員istrator 擁有者
    • 在所需的 Azure 訂用帳戶中授與 Azure OpenAI 的存取權。 目前只有應用程式會授予此服務的存取權。 您可以填妥 https://aka.ms/oai/access 的表單,以申請 Azure OpenAI 的存取權。 如果您發生問題,請在此存放庫上提出問題,以與我們連絡。
    • Azure 開發人員 CLI
    • Docker Desktop - 如果 Docker Desktop 尚未執行,請啟動 Docker Desktop
    • Visual Studio Code
    • 開發容器擴充功能
    • 開啟開發環境

      從已安裝所有相依性的開發環境開始,以完成本文。

      GitHub Codespaces (建議) Visual Studio Code

      GitHub Codespaces 會使用 網頁版 Visual Studio Code 作爲使用者介面,執行由 GitHub 管理的開發容器。 針對最直接的開發環境,請使用 GitHub Codespaces,讓預先安裝正確的開發人員工具和相依性來完成本文。

      所有 GitHub 帳戶每個月最多可以使用 Codespaces 60 小時,且有 2 個核心執行個體。 如需詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存體和核心時數

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

    • 以滑鼠右鍵按一下下列按鈕,然後選取 新視窗中 的 [開啟] 連結,以便同時提供開發環境和檔。

      在 GitHub Codespaces 中開啟此專案

    • 在 [ 建立代碼空間] 頁面上,檢閱 Codespace 組態設定,然後選取 [ 建立新的 Codespace ]:

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

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

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

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

      適用於 Visual Studio Code 的開發容器延伸模組 需要將 Docker安裝在本機電腦上。 擴充功能會使用 Docker 主機在本機裝載開發容器,並預先安裝正確的開發人員工具和相依性,以完成本文。

    • 在空白目錄的內容中開啟 Visual Studio Code

    • 請確定已在 Visual Studio Code 中安裝 Dev Containers 延伸模組

    • 在編輯器中開啟新的終端機。

      您可以使用主功能表瀏覽至 [終端機] 功能表選項,然後選取 [新終端機] 選項。

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

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

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

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

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

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

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

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

    • 在聊天文字方塊中,選取或輸入「我的 Northwind Health Plus 方案未納入標準的專案?」。

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

    • 在答案方塊頂端的索引標籤之間流覽,以瞭解答案的產生方式。

      使用查詢內容相關摘要,而不是整個檔 Use semantic ranker同時檢查 和 Use query-contextual summaries 時,LLM 會使用從主要段落擷取的標題,而不是在最高排名的檔中擷取所有段落。 建議後續問題 讓聊天應用程式根據答案建議後續問題。

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

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

    • 核取 [ 建議後續問題 ] 核取方塊,然後再次詢問相同的問題。

      What is my deductible?
      

      聊天會傳回後續問題建議,例如:

    • 「網路外服務的成本共用為何?
    • 「預防護理服務是否受免賠額約束?
    • 「處方藥免賠額如何運作?
    • 在 [設定] 索引標籤中 ,取消選取 [使用語意排名器進行擷取 ]。

    • 再次詢問相同的問題。

      What is my deductible?
      
    • 答案有何差異?

      使用 Semantic ranker 的回應提供單一答案: The deductible for the Northwind Health Plus plan is $2,000 per year

      沒有語意排名的回應傳回較不直接的答案: Based on the information provided, it is unclear what your specific deductible is. The Northwind Health Plus plan has different deductible amounts for in-network and out-of-network services, and there is also a separate prescription drug deductible. I would recommend checking with your provider or referring to the specific benefits details for your plan to determine your deductible amount

      清除 Azure 資源

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

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

      azd down --purge
      

      清除 GitHub Codespaces

      GitHub Codespaces Visual Studio Code
    • 企業聊天應用程式 GitHub 存放庫
    • 使用 Azure OpenAI 最佳做法解決方案架構建置聊天應用程式
    • 使用 Azure AI 搜尋進行 Generative AI Apps 中的存取控制
    • 使用 Azure API 管理建置企業就緒 OpenAI 解決方案
    • 使用混合式擷取和排名功能超越向量搜尋
    • Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see: https://aka.ms/ContentUserFeedback.

      提交並檢視相關的意見反應

  •