此解決方案使用 RAG(檢索增強產生)在您自己的文件上建立類似 ChatGPT 的前端體驗。它使用 Azure OpenAI 服務存取 GPT 模型,並使用 Azure AI 搜尋進行資料索引和檢索。
這個解決方案的後端是用 Python 編寫的。還有基於此的JavaScript 、 .NET和Java範例。詳細了解如何使用 Azure AI 服務開發 AI 應用程式。
觀看該應用程式的影片概述。
此範例示範了使用檢索增強生成模式在您自己的資料上建立類似 ChatGPT 的體驗的幾種方法。它使用 Azure OpenAI 服務存取 GPT 模型 (gpt-35-turbo),並使用 Azure AI 搜尋進行資料索引和檢索。
該存儲庫包含範例數據,因此可以進行端到端的嘗試。在此範例應用程式中,我們使用一家名為 Contoso Electronics 的虛構公司,該體驗允許其員工詢問有關福利、內部政策以及職位描述和角色的問題。
重要提示:為了部署和執行此範例,您需要:
Microsoft.Authorization/roleAssignments/write
權限,例如基於角色的存取控制管理員、使用者存取管理員或擁有者。如果您沒有訂閱等級權限,則必須授予您現有資源群組的 RBAC 權限並部署到該現有群組。Microsoft.Resources/deployments/write
權限。定價因地區和使用情況而異,因此無法預測您的使用的確切費用。不過,您可以嘗試使用 Azure 定價計算器取得下列資源。
為了降低成本,您可以切換到各種服務的免費 SKU,但這些 SKU 有限制。有關更多詳細信息,請參閱本關於以最低成本進行部署的指南。
azd down
。
您有幾個選項來設定此項目。最簡單的入門方法是 GitHub Codespaces,因為它會為您設定所有工具,但如果需要,您也可以在本地進行設定。
您可以使用 GitHub Codespaces 虛擬執行此儲存庫,這將在瀏覽器中開啟基於 Web 的 VS Code:
代碼空間打開後(這可能需要幾分鐘),打開終端機視窗。
一個相關選項是 VS Code Dev Containers,它將使用 Dev Containers 擴充功能在本機 VS Code 中開啟專案:
啟動 Docker Desktop(如果尚未安裝,請安裝)
打開項目:
在開啟的 VS Code 視窗中,專案檔案顯示後(可能需要幾分鐘),開啟終端機視窗。
安裝所需的工具:
python --version
。在 Ubuntu 上,您可能需要執行sudo apt install python-is-python3
將python
連結到python3
。pwsh.exe
。如果失敗,您可能需要升級 PowerShell。建立一個新資料夾並在終端中切換到它。
執行以下命令下載專案代碼:
azd init -t azure-search-openai-demo
請注意,此命令將初始化 git 儲存庫,因此您不需要複製此儲存庫。
以下步驟將預配 Azure 資源並將應用程式程式碼部署至 Azure 容器應用程式。若要部署至 Azure 應用程式服務,請遵循應用程式服務部署指南。
登入您的 Azure 帳戶:
azd auth login
對於 GitHub Codespaces 用戶,如果上一個命令失敗,請嘗試:
azd auth login --use-device-code
創建一個新的azd環境:
azd env new
輸入將用於資源組的名稱。這將在.azure
資料夾中建立一個新資料夾,並將其設定為今後對azd
的任何呼叫的活動環境。
(可選)您可以在此處透過設定環境變數來自訂部署,以便使用現有資源、啟用選用功能(例如身份驗證或視覺)或部署至免費方案。
執行azd up
- 這將預配 Azure 資源並將此範例部署到這些資源,包括基於./data
資料夾中找到的檔案建置搜尋索引。
azd down
或手動刪除資源,以避免不必要的支出。成功部署應用程式後,您將看到控制台列印出一個 URL。按一下該 URL 可與瀏覽器中的應用程式互動。它將如下所示:
注意:在您看到「成功」後,可能需要 5-10 分鐘才能完全部署應用程式。如果您看到「Python Developer」歡迎畫面或錯誤頁面,請稍等片刻並刷新頁面。
如果您僅變更了app
資料夾中的後端/前端程式碼,則無需重新預配 Azure 資源。你可以運行:
azd deploy
如果變更了基礎結構檔案( infra
資料夾或azure.yaml
),則需要重新預配 Azure 資源。您可以透過執行以下命令來做到這一點:
azd up
要讓其他人存取完全部署的現有環境,您或他們可以按照以下步驟操作:
azd init -t azure-search-openai-demo
或複製此儲存庫。azd env refresh -e {environment name}
他們將需要 azd 環境名稱、訂閱 ID 和位置來執行此命令。您可以在.azure/{env name}/.env
檔案中找到這些值。這將使用本地運行應用程式所需的所有設定填充其 azd 環境的.env
檔案。.env
檔案或活動 shell 中將環境變數AZURE_PRINCIPAL_ID
設定為其 Azure ID,他們可以透過az ad signed-in-user show
取得該 ID。./scripts/roles.ps1
或.scripts/roles.sh
將所有必要的角色指派給使用者。如果他們沒有在訂閱中創建角色所需的權限,那麼您可能需要為他們執行此腳本。腳本運行後,他們應該能夠在本地運行應用程式。 您只能在成功執行azd up
命令後才能在本地運行。如果還沒有,請按照上面的部署步驟進行操作。
azd auth login
app
./start.ps1
或./start.sh
或執行「VS Code 任務:啟動應用程式」在本機啟動專案。請參閱本機開髮指南中的更多提示。
進入網頁應用程式後:
要清理此範例建立的所有資源:
azd down
y
y
資源組和所有資源將被刪除。
除了下面的提示之外,您還可以在 docs 資料夾中找到大量文件。
成功部署應用程式後,您可以開始根據需要進行自訂:更改文字、調整提示和替換資料。有關更多詳細信息,請參閱應用程式自訂指南以及資料攝取指南。
預設情況下,已部署的應用程式使用 Application Insights 追蹤每個請求以及記錄錯誤。
若要查看效能數據,請前往資源組中的 Application Insights 資源,按一下「調查 -> 效能」側邊欄選項卡,然後導覽至任何 HTTP 請求以查看計時資料。若要檢查聊天請求的效能,請使用「鑽取樣本」按鈕查看對任何聊天請求進行的所有 API 呼叫的端對端追蹤:
若要查看任何異常和伺服器錯誤,請導覽至「調查 -> 故障」側邊欄標籤並使用過濾工具來尋找特定異常。您可以在右側看到 Python 堆疊追蹤。
您也可以透過執行以下命令在儀表板上查看圖表摘要:
azd monitor
此範例旨在作為您自己的生產應用程式的起點,但您應該在部署到生產之前對安全性和效能進行徹底的審查。閱讀我們的生產指南以了解更多詳細資訊。
以下是最常見的故障場景和解決方案:
訂閱 ( AZURE_SUBSCRIPTION_ID
) 無權存取 Azure OpenAI 服務。請確保AZURE_SUBSCRIPTION_ID
OpenAI 存取請求過程中指定的 ID 相符。
您嘗試在未啟用 Azure OpenAI 的區域(例如 East US 2 而非 East US)或未啟用您嘗試使用的模型的區域中建立資源。請參閱此模型可用性矩陣。
您已超出配額,通常是每個區域的資源數量。請參閱這篇有關配額和限制的文章。
您遇到「不允許使用相同的資源名稱」衝突。這可能是因為您多次執行該範例並刪除了每次建立的資源,但忘記清除它們。 Azure 會將資源保留 48 小時,除非您透過軟刪除進行清除。請參閱這篇有關清除資源的文章。
當prepdocs.py
腳本執行時,您會看到CERTIFICATE_VERIFY_FAILED
。這通常是由於您電腦上的 SSL 憑證設定不正確所造成的。試試此 StackOverflow 答案中的建議。
執行azd up
並造訪網站後,您會在瀏覽器中看到「404 Not Found」。等待 10 分鐘,然後重試,因為它可能仍在啟動。然後嘗試運行azd deploy
並再次等待。如果已部署的應用程式在部署到應用程式服務時仍遇到錯誤,請參閱有關偵錯應用程式服務部署的指南。如果日誌不能幫助您解決錯誤,請提出問題。
這是一個範例,旨在演示現代生成式 AI 應用程式的功能以及如何在 Azure 中建置它們。如需部署此範例的協助,請在 GitHub 問題中發佈。如果您是 Microsoft 員工,您也可以在我們的 Teams 頻道中發佈。
該儲存庫由維護者提供支持,而不是由 Microsoft 支援人員提供支持,因此請使用上述支援機制,我們將盡力為您提供協助。
注意:此示範中使用的 PDF 文件包含使用語言模型(Azure OpenAI 服務)產生的資訊。這些文件中包含的資訊僅用於簡報目的,並不反映 Microsoft 的意見或信念。 Microsoft 不對本文檔中包含的資訊的完整性、準確性、可靠性、適用性或可用性做出任何形式的明示或暗示的陳述或保證。微軟保留所有權利。