共用方式為


使用 Azure OpenAI Web 應用程式

除了 Azure AI Foundry、Azure OpenAI Studio、API 和 SDK 之外,您可以使用可自定義的獨立 Web 應用程式,使用圖形使用者介面來與 Azure OpenAI 模型互動。 主要功能包括:

  • 針對多種資料來源的連線能力,以支援豐富的查詢和擷取增強世代,包括 Azure AI 搜尋服務、提示流程等等。
  • 透過 Cosmos DB 進行交談記錄和使用者意見反應收集。
  • 透過 Microsoft Entra ID 使用角色型存取控制進行驗證。
  • 使用環境變數自訂使用者介面、資料來源和功能 (透過 Azure 入口網站以無程式碼的方式執行)。
  • 支援將底層 Web 應用程式原始程式碼修改為開放原始碼存放庫。

您可以使用 Azure AI FoundryAzure OpenAI Studio,或透過 Azure 入口網站 本機電腦手動部署或透過本機電腦部署 Azure 開發人員 CLI 來部署應用程式(此處存放庫提供的指示)。 視您的部署通道而定,您可以透過 Web 應用程式預先載入資料來源以供進行聊天,但在其在部署之後可以變更。

對於希望透過 Web 應用程式與其資料聊天的 Azure OpenAI 初學者, Azure AI Foundry 是初始部署和數據源設定的建議媒體。

顯示 Web 應用程式介面的螢幕擷取畫面。

重要考量

  • 此 Web 應用程式及其許多功能都處於預覽狀態,這表示可能會發生 BUG,而且並非所有功能都已經建置完成。 如果您發現 BUG 或需要協助,請在相關聯的 GitHub 存放庫 (英文) 中提出問題。
  • 發佈 Web 應用程式會在您的訂用帳戶中建立 Azure App Service 執行個體。 視您選取的價格方案而定,可能會產生成本。 當您完成使用應用程式之後,您可以從 Azure 入口網站中刪除該應用程式和任何相關聯的資源。
  • 目前不支援包含視覺功能的 GPT-4 Turbo 模型。
  • 根據預設,應用程式是由已設定的 Microsoft 識別提供者進行部署。 識別提供者會將對應用程式的存取限制為 Azure 租用戶的成員。 若要新增或修改驗證:
    1. 移至 Azure 入口網站,並搜尋您在發佈期間指定的應用程式名稱。 選取 Web 應用程式,然後選取左側功能表上的 [驗證]。 然後,選取 [新增識別提供者]

      Azure 入口網站中驗證窗格的螢幕擷取畫面。

    2. 選取 Microsoft 作為識別提供者。 此頁面上的預設設定只會將應用程式限制為您的租用戶,因此您不需要在這裡變更任何其他項目。 選取 [新增]。

現在,系統會要求使用者透過其 Microsoft Entra 帳戶登入,才能存取您的應用程式。 如果您想要的話,可以遵循類似的程序來新增另一個識別提供者。 除了驗證使用者是租用戶的成員,應用程式不會以其他方式運用使用者的登入資訊。 如需管理驗證的詳細資訊,請檢視這個適用於 Azure App Service 上 Web 應用程式的驗證快速入門。

使用環境變數自訂應用程式

您可以自訂應用程式的前端和後端邏輯。 應用程式會針對常見的自訂案例提供數個環境變數,例如變更應用程式中的圖示。

部署 Web 應用程式之後,可以透過 Azure 入口網站修改這些環境變數。

  1. 在 Azure 入口網站中,搜尋並選取 [應用程式服務] 頁面。
  2. 選取您剛部署的 Web 應用程式。
  3. 在左側功能表中,選取 [設定] > [環境變數]。
  4. 若要修改現有的環境變數,請按一下其名稱。
  5. 若要新增單一新環境變數,請按一下面板頂端功能表列中的 [新增]。
  6. 若要使用 JSON 型編輯器來管理環境變數,請按一下 [進階編輯]。

若要自訂應用程式,我們建議:

  • 清楚地傳達您實作的每個設定會如何影響使用者體驗。

  • 更新每個已部署應用程式的應用程式設定,以在輪替 Azure OpenAI 或 Azure AI 搜尋資源的金鑰之後,使用新的 API 金鑰。

Web 應用程式的範例原始程式碼可在 GitHub 取得。 原始程式碼會以「目前」的形式提供,且僅以範例的形式提供。 客戶負責其 Web 應用程式的所有自訂和實作。

修改應用程式使用者介面

與使用者介面自訂相關的環境變數如下:

  • UI_CHAT_DESCRIPTION:這是在載入頁面時顯示在頁面中央之 UI_CHAT_TITLE 底下的較小段落文字。
    • 資料類型:文字
  • UI_CHAT_LOGO:這是在載入頁面時顯示在頁面中央的大型影像。
    • 資料類型:影像的 URL
  • UI_CHAT_TITLE:這是在載入頁面時顯示在頁面中央的大型文字。
    • 資料類型:文字
  • UI_FAVICON:這是顯示在瀏覽器視窗/索引標籤上的最愛圖示。
    • 資料類型:影像的 URL
  • UI_LOGO:這是顯示在頁面左上方和標題左邊的標誌。
    • 資料類型:影像的 URL
  • UI_TITLE:這是顯示在瀏覽器視窗/索引標籤上的標題。其也會出現在頁面左上方的標誌旁邊。
    • 資料類型:文字
  • UI_SHOW_SHARE_BUTTON:此按鈕會出現在頁面右上方,並允許使用者共用連結至 Web 應用程式的 URL。
    • 資料類型:布林值,必須輸入 True 或 False,且在保留空白或未指定的情況下,預設值將會是 True。
  • UI_SHOW_CHAT_HISTORY_BUTTON:這會出現在頁面右上方,且位於 UI_SHOW_SHARE_BUTTON 的左邊。
    • 資料類型:布林值,必須輸入 True 或 False,且在保留空白或未指定的情況下,預設值將會是 True。

若要修改應用程式使用者介面,請依照上一個步驟中的指示開啟 Web 應用程式的環境變數頁面。 然後,使用 [進階編輯] 開啟 JSON 型編輯器。 在 JSON 頂端 (在 [ 字元之後),貼上下列程式碼區塊並相應地自訂值:

  {
    "name": "UI_CHAT_DESCRIPTION",
    "value": "This is an example of a UI Chat Description. Chatbots can make mistakes. Check important info and sensitive info.",
    "slotSetting": false
  },
  {
    "name": "UI_CHAT_LOGO",
    "value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
    "slotSetting": false
  },
  {
    "name": "UI_CHAT_TITLE",
    "value": "This is an example of a UI Chat Title. Start chatting",
    "slotSetting": false
  },
  {
    "name": "UI_FAVICON",
    "value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
    "slotSetting": false
  },
  {
    "name": "UI_LOGO",
    "value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
    "slotSetting": false
  },
  {
    "name": "UI_TITLE",
    "value": "This is an example of a UI Title",
    "slotSetting": false
  },

使用 Cosmos DB 啟用聊天記錄

您可以為 Web 應用程式的使用者啟用聊天記錄。 啟用此功能時,使用者可以存取其個別先前的查詢和回應。

若要開啟聊天歷程記錄,請使用 Azure OpenAI StudioAzure AI Foundry 將模型部署或重新部署為 Web 應用程式,然後選取 [在 Web 應用程式中啟用聊天記錄和用戶意見反應]。

在 Azure OpenAI 或 Azure AI Foundry 中啟用聊天記錄的複選框螢幕快照。

重要

開啟聊天記錄會在您的資源群組中建立 Azure Cosmos DB 執行個體,而且會針對您所使用的任何免費層以外的儲存體產生額外費用

開啟聊天記錄之後,您的使用者可以在應用程式的右上角顯示和隱藏聊天記錄。 當使用者顯示聊天記錄時,他們可以重新命名或刪除交談。 您可以修改使用者是否可以使用如上一節中指定的環境變數 UI_SHOW_CHAT_HISTORY_BUTTON 存取此函式。 由於使用者已登入應用程式,因此交談會自動依最新到最舊的順序排序。 交談是根據交談中的第一個查詢來命名。

注意

美國東部等熱門 Azure 區域可能會遇到高需求的時段,期間可能無法部署 Cosmos DB 的新執行個體。 在該情況下,請選擇部署至美國東部 2 之類的替代區域,或重試您的部署,直到成功為止。 如果 Cosmos DB 部署失敗,您的應用程式將會在其指定的 URL 上提供,但無法使用聊天記錄。 啟用交談記錄也會啟用右上方的 [檢視交談記錄] 按鈕。

使用選取的聊天記錄選項進行部署會自動填入下列環境變數,因此除非您想要切換 Cosmos DB 執行個體,否則不需要加以修改。 畫面如下:

  • AZURE_COSMOSDB_ACCOUNT:這是隨 Web 應用程式一起部署的 Cosmos DB 帳戶名稱。
    • 資料類型:文字
  • AZURE_COSMOSDB_ACCOUNT_KEY:這是替代環境變數,其只有在未透過 Microsoft Entra ID 授與權限,並改用金鑰型驗證時才會使用。
    • 資料類型:文字。 通常不會存在或填入。
  • AZURE_COSMOSDB_DATABASE:這是 Cosmos DB 內隨 Web 應用程式一起部署的資料庫物件名稱。
    • 資料類型:文字,應該要是 db_conversation_history
  • AZURE_COSMOSDB_CONTAINER:這是 Cosmos DB 內隨 Web 應用程式一起部署的資料庫容器物件名稱。
    • 資料類型:文字,應該要是 conversations
  • AZURE_COSMOSDB_ACCOUNT:這是隨 Web 應用程式一起部署的 Cosmos DB 帳戶名稱。
    • 資料類型:文字

Web 應用程式中聊天記錄的螢幕擷取畫面。

收集使用者意見反應

若要收集使用者意見反應,您可以啟用一組會出現在聊天機器人回應上的「讚」和「倒讚」圖示。 這可讓使用者評估回應的品質,並使用「提供負面意見反應」強制回應視窗來指出發生錯誤的位置。

若要啟用此功能,請將下列環境變數設定為 True:

  • AZURE_COSMOSDB_ENABLE_FEEDBACK:這是隨 Web 應用程式一起部署的 Cosmos DB 帳戶名稱。
    • 資料類型:資料類型:布林值,必須輸入 True 或 False

這可以使用 [進階編輯] 或簡單的 [編輯] 選項來完成,如先前所述。 要貼到 [進階編輯] JSON 編輯器的 JSON 為:

  {
    "name": "AZURE_COSMOSDB_ENABLE_FEEDBACK",
    "value": "True",
    "slotSetting": false
  },

連線到 Azure AI 搜尋服務並以資料來源的形式上傳檔案

使用 Azure AI Foundry

請遵循 本教學課程,以整合 Azure AI Search 與 Azure AI Foundry ,並重新部署您的應用程式。

使用 Azure OpenAI Studio

請遵循這個關於整合 Azure AI 搜尋服務與 OpenAI Studio 的教學課程並重新部署您的應用程式。

使用環境變數

若要在不重新部署應用程式的情況下連線到 Azure AI 搜尋服務,您可以使用先前所述的任何編輯選項來修改下列必要環境變數。

  • DATASOURCE_TYPE:這會決定在回答使用者的查詢時要使用哪一個資料來源。
    • 資料類型:文字。 應設定為 AzureCognitiveSearch (Azure AI 搜尋服務之前的名稱)
  • AZURE_SEARCH_SERVICE:這是您 Azure AI 搜尋服務執行個體的名稱。
    • 資料類型:文字
  • AZURE_SEARCH_INDEX:這是您 Azure AI 搜尋服務執行個體索引名稱的名稱。
    • 資料類型:文字
  • AZURE_SEARCH_KEY:這是您 Azure AI 搜尋服務執行個體的驗證金鑰。 如果使用 Microsoft Entra ID 進行驗證,則為選擇性。
    • 資料類型:文字

使用環境變數的進一步自訂案例

  • AZURE_SEARCH_USE_SEMANTIC_SEARCH:指出是否要在 Azure AI 搜尋服務中使用語意搜尋。
    • 資料類型:布林值,如果不使用語意搜尋,則應該設定為 False
  • AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG:指定啟用語意搜尋時要使用的語意搜尋設定名稱。
    • 資料類型:文字,預設為 azureml-default
  • AZURE_SEARCH_INDEX_TOP_K:定義要從 Azure AI 搜尋服務擷取的最上層文件數目。
    • 資料類型:整數,應設定為 5
  • AZURE_SEARCH_ENABLE_IN_DOMAIN:將回應限制為僅限與您資料相關的查詢。
    • 資料類型:布林值,應設定為 True
  • AZURE_SEARCH_CONTENT_COLUMNS:指定 Azure AI 搜尋服務索引中的欄位清單,其中包含您文件中用於制定 Bot 回應的文字內容。
    • 數據類型:文字,如果從 Azure AI Foundry 或 Azure OpenAI Studio 部署,則預設為content
  • AZURE_SEARCH_FILENAME_COLUMN:指定 Azure AI 搜尋服務索引中的欄位,其提供要顯示在 UI 中之來源資料的唯一識別碼。
    • 數據類型:文字,如果從 Azure AI Foundry 或 Azure OpenAI Studio 部署,則預設為filepath
  • AZURE_SEARCH_TITLE_COLUMN:指定 Azure AI 搜尋服務索引中的欄位,其提供要顯示在 UI 中之資料內容的相關標題或標頭。
    • 數據類型:文字,如果從 Azure AI Foundry 或 Azure OpenAI Studio 部署,則預設為title
  • AZURE_SEARCH_URL_COLUMN:指定 Azure AI 搜尋服務索引中的欄位,其中包含文件的 URL。
    • 數據類型:文字,如果從 Azure AI Foundry 或 Azure OpenAI Studio 部署,則預設為url
  • AZURE_SEARCH_VECTOR_COLUMNS:指定 Azure AI 搜尋服務索引中的欄位清單,其中包含您文件中用於制定 Bot 回應的向量內嵌。
    • 數據類型:文字,如果從 Azure AI Foundry 或 Azure OpenAI Studio 部署,則預設為contentVector
  • AZURE_SEARCH_QUERY_TYPE:指定要使用的查詢類型:simplesemanticvectorvectorSimpleHybridvectorSemanticHybrid。 這個設定的優先順序高於 AZURE_SEARCH_USE_SEMANTIC_SEARCH
    • 資料類型:文字,建議使用 vectorSemanticHybrid 進行測試。
  • AZURE_SEARCH_PERMITTED_GROUPS_COLUMN:指定 Azure AI 搜尋服務索引中的欄位,其中包含 Microsoft Entra 群組識別碼,以判斷文件層級存取控制。
    • 資料類型:文字
  • AZURE_SEARCH_STRICTNESS:指定限制針對您資料之回應的模型嚴格等級。
    • 資料類型:整數,應該設定為介於 15 之間,且建議使用 3
  • AZURE_OPENAI_EMBEDDING_NAME:指定在使用向量搜尋的情況下,您內嵌模型部署的名稱。
    • 資料類型:文字

要貼到 [進階編輯] JSON 編輯器的 JSON 為:

{
    "name": "AZURE_SEARCH_CONTENT_COLUMNS",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_ENABLE_IN_DOMAIN",
    "value": "true",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_FILENAME_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_INDEX",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_KEY",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_PERMITTED_GROUPS_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_QUERY_TYPE",
    "value": "vectorSemanticHybrid",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG",
    "value": "azureml-default",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_SERVICE",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_STRICTNESS",
    "value": "3",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_TITLE_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_TOP_K",
    "value": "5",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_URL_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_USE_SEMANTIC_SEARCH",
    "value": "true",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_VECTOR_COLUMNS",
    "value": "contentVector",
    "slotSetting": false
  },

以資料來源的形式連線到提示流程

提示流程可讓您在使用者的查詢上定義可高度自訂的 RAG 和處理邏輯。

在 Azure AI Foundry 入口網站中建立和部署您的提示流程

遵循 本教學課程 ,在 Azure AI Foundry 入口網站中建立、測試及部署提示流程的推斷端點。

從您的提示流程啟用底層引文

設定您的提示流程以在整合此 Web 應用程式時顯示引文時,其必須傳回兩個主要輸出:一個稱為 documents (您的引文),另一個稱為 reply (您的自然語言回答)。

  1. documents 是 JSON 物件,其應該包含下列元素。 citations 是一個清單,其可以包含遵循相同結構描述的多個項目。 應該根據您所選取的 RAG 模式產生和填入 documents 物件。
{
    "citations": [
        {
                "content": "string",
                "id": 12345,
                "title": "string",
                "filepath": "string",
                "url": "string",
                "metadata": "string",
                "chunk_id": None,
                "reindex_id": None,
                "part_index": None
        }
    ],
    "intent": "Your_string_here"
}
  1. reply 是由傳回的字串所組成,這些字串代表針對指定使用者查詢的最終自然語言。 您的 reply 必須包含針對每個文件 (來源) 且具有下列格式的參考:[doc1], [doc2],等等。Web 應用程式會剖析 reply 並處理參考,並以直接連結到所傳回之已排序 documents 的小型上標數值指標取代 [doc1] 的所有執行個體。 因此,您必須提示產生最終自然語言的 LLM 以包括這些參考,其也應該在 LLM 呼叫中傳遞,以確保其能正確相符。 例如:
system:
You are a helpful chat assistant that answers a user's question based on the information retrieved from a data source. 

YOU MUST ALWAYS USE CITATIONS FOR ALL FACTUAL RESPONSES. YOU MUST INCLUDE CITATIONS IN YOUR ANSWER IN THE FORMAT [doc1], [doc2], ... AND SO FORTH WHEN YOU ARE USING INFORMATION RELATING TO SAID SOURCE. THIS MUST BE RETURNED IN YOUR ANSWER.

Provide sort and concise answers with details directly related to the query. 

## Conversation history for context
{% for item in chat_history %}
user:
{{item.inputs.query}}

assistant:
{{item.outputs.reply}}
{% endfor %}

## Current question
user:
### HERE ARE SOME CITED SOURCE INFORMATION FROM A MOCKED API TO ASSIST WITH ANSWERING THE QUESTION BELOW. ANSWER ONLY BASED ON THE TRUTHS PRESENTED HERE.
{{your_input_name_for_documents}}
FOR EACH OF THE CITATIONS ABOVE, YOU MUST INCLUDE IN YOUR ANSWER [doc1], [doc2], ... AND SO FORTH WHEN YOU ARE USING INFORMATION RELATING TO SAID SOURCE. THIS MUST BE RETURNED IN YOUR ANSWER.
### HERE IS THE QUESTION TO ANSWER.
{{question}}
  

設定環境變數以整合提示流程

要修改的環境變數如下:

  • AZURE_OPENAI_STREAM:這會判斷回答是否以串流 (累加載入) 格式載入。 這不支援提示流程,因此必須設定為 False 才能使用此功能。
    • 資料類型:布林值,在未使用提示流程的情況下請設定為 True;如果使用提示流程,請設定為 False
  • USE_PROMPTFLOW:指出是否要使用現有由提示流程部署的端點。 如果設定為 True,則必須同時設定 PROMPTFLOW_ENDPOINTPROMPTFLOW_API_KEY
    • 資料類型:布林值,如果未使用提示流程,應該設定為 False
  • PROMPTFLOW_ENDPOINT:指定已部署提示流程端點的 URL。
    • 資料類型:文字,例如 https://pf-deployment-name.region.inference.ml.azure.com/score
  • PROMPTFLOW_API_KEY:已部署之提示流程端點的驗證金鑰。 注意:僅支援金鑰型驗證。
    • 資料類型:文字
  • PROMPTFLOW_RESPONSE_TIMEOUT:定義以秒為單位的逾時值,以供提示流程端點進行回應。
    • 資料類型:整數,應設定為 120
  • PROMPTFLOW_REQUEST_FIELD_NAME:建構提示流程要求的預設欄位名稱。 注意:chat_history 會根據互動自動建構。 如果您的 API 需要其他必要欄位,您必須在 promptflow_request 函式下變更要求參數。
    • 資料類型:文字,應該設定為 query
  • PROMPTFLOW_RESPONSE_FIELD_NAME:處理來自提示流程要求回應的預設欄位名稱。
    • 資料類型:文字,應該設定為 reply
  • PROMPTFLOW_CITATIONS_FIELD_NAME:處理來自提示流程要求之引文輸出的預設欄位名稱。
    • 資料類型:文字,應該設定為 documents

連線到其他資料來源

支援其他資料來源,包括:

  • Azure Cosmos DB
  • Elasticsearch
  • Azure SQL Server
  • Pinecone
  • Azure Machine Learning 索引

如需啟用這些資料來源的進一步指示,請參閱 GitHub 存放庫 (英文)。

更新 Web 應用程式以包括最新的變更

注意

自 2024 年 2 月 1 日起,Web 應用程式需要將應用程式啟動命令設定為 python3 -m gunicorn app:app。 更新在 2024 年 2 月 1 日之前發佈的應用程式時,您必須從 [App Service 組態] 頁面手動新增啟動命令。

建議您經常從 Web 應用程式的原始程式碼 main 分支提取變更,以確保您有最新的錯誤修正、API 版本和改進功能。 此外,每次使用的 API 版本淘汰時,都必須同步處理 Web 應用程式。 建議您選取 Web 應用程式的 GitHub 存放庫上的 [監看] 或 [星號] 按鈕,以接收原始程式碼變更和更新的通知。

如果您尚未自訂 Web 應用程式,您可以使用下列步驟進行同步處理:

  1. Azure 入口網站中移至 Web 應用程式。

  2. 在左側功能表的 [部署] 底下,選取 [部署中心]

  3. 選取窗格頂端的 [同步],並確認應用程式將會重新部署。

    Azure 入口網站上 Web 應用程式同步處理按鈕的螢幕擷取畫面。

如果您自訂或變更應用程式的原始程式碼,您必須手動更新應用程式的原始程式碼並重新部署:

  • 如果您的應用程式裝載在 GitHub 上,請將程式碼變更推送至存放庫,並使用前面的同步處理步驟。
  • 若要手動重新部署應用程式 (例如,藉由使用 Azure CLI),請遵循部署策略的步驟。

刪除 Cosmos DB 執行個體

刪除 Web 應用程式並不會自動刪除 Cosmos DB 執行個體。 若要刪除 Cosmos DB 執行個體以及所有已儲存的聊天,您必須移至 Azure 入口網站中的關聯資源並加以刪除。 如果您刪除 Cosmos DB 資源,但針對來自 Azure OpenAI Studio 的後續更新持續選取聊天記錄選項,則應用程式會向使用者通知連線錯誤。 不過,使用者可以繼續使用 Web 應用程式,而不需要存取聊天記錄。

啟用服務之間的 Microsoft Entra ID 驗證

若要為 Web 應用程式啟用 Microsoft Entra ID 以進行服務內部驗證,請遵循這些步驟。

在 Azure OpenAI 資源和 Azure App Service 上啟用受控識別

您可以在 Azure 入口網站中針對每個資源瀏覽至 [身分識別],並開啟 [系統指派的受控識別] 以針對 Azure OpenAI 資源和 Azure App Service 啟用受控識別。

顯示 Azure 入口網站中應用程式身分識別設定的螢幕擷取畫面。

注意

如果您使用的是部署至用於推斷之相同資源的內嵌模型,則只需要在一個 Azure OpenAI 資源上啟用受控識別。 如果使用的是部署至與用於推斷不同之資源的內嵌模型,您也必須在用來部署內嵌模型的 Azure OpenAI 資源上啟用受控識別。

在您的 Azure 搜尋服務資源上啟用角色型存取控制 (RBAC) (選擇性)

如果搭配 Azure 搜尋服務使用 On Your Data,您應該遵循此步驟。

若要讓您的 Azure OpenAI 資源存取 Azure 搜尋服務資源,您必須在 Azure 搜尋服務資源上啟用角色型存取控制。 深入了解如何為您的資源啟用 RBAC 角色

指派 RBAC 角色以啟用服務內部通訊

下表摘要說明與應用程式相關聯之所有 Azure 資源所需的 RBAC 角色指派。

角色 受託人 資源
Search Index Data Reader Azure OpenAI (推斷) Azure AI 搜尋服務
Search Service Contributor Azure OpenAI (推斷) Azure AI 搜尋服務
Cognitive Services OpenAI User Web 應用程式 Azure OpenAI (推斷)
Cognitive Services OpenAI User Azure OpenAI (推斷) Azure OpenAI (內嵌)

若要指派這些角色,請遵循這些指示以建立所需的角色指派。

應用程式設定變更

在 webapp 應用程式設定中,瀏覽至 [環境變數],並進行下列變更:

  • 移除環境變數 AZURE_OPENAI_KEY,因為已不再需要此變數。
  • 如果搭配 Azure 搜尋服務使用 On Your Data,且在 Azure OpenAI 與 Azure 搜尋服務之間使用 Microsoft Entra ID 驗證,您也應該刪除資料來源存取金鑰的 AZURE_SEARCH_KEY 環境變數。

如果使用部署至與模型用於推斷相同之資源的內嵌模型,則不需要其他設定變更。

不過,如果您使用部署到不同資源的內嵌模型,請對應用程式的環境變數進行下列額外變更:

  • 針對您用於內嵌的資源,將 AZURE_OPENAI_EMBEDDING_ENDPOINT 變數設定為內嵌 API 的完整 API 路徑,例如 https://<your embedding AOAI resource name>.openai.azure.com/openai/deployments/<your embedding deployment name>/embeddings
  • 刪除 AZURE_OPENAI_EMBEDDING_KEY 變數以使用 Microsoft Entra ID 驗證。

完成所有環境變數變更之後,請重新啟動 webapp 以開始在 webapp 中的服務之間使用 Microsoft Entra ID 驗證。 重新啟動後需要花費幾分鐘的時間,任何所做的設定變更才會生效。