在 Azure OpenAI 中使用封鎖清單
可設定的內容篩選足以因應大部分的內容調節需求。 不過,您可能需要篩選針對使用案例特定的字詞。
必要條件
- Azure 訂用帳戶。 免費建立一個。
- 擁有 Azure 訂用帳戶之後,在 Azure 入口網站中建立 Azure OpenAI 資源,以取得您的權杖、金鑰和端點。 輸入資源的唯一名稱、選取您在應用程式表單上輸入的訂用帳戶、選取資源群組、支援的區域以及支援的定價層。 然後選取建立。
- 部署資源需要幾分鐘的時間。 完成後,選取 [移至資源]。 在左側窗格中,於 [資源管理] 下選取 [訂用帳戶金鑰和端點]。 端點和其中一個金鑰是用以呼叫 API。
- Azure CLI 已安裝
- 已安裝 cURL
使用封鎖清單
您可以使用 Azure OpenAI API 建立封鎖清單。 下列步驟可協助您開始使用。
取得權杖
首先,您需要取得權杖,以存取用來建立、編輯和刪除封鎖清單的 API。 您可以使用下列 Azure CLI 命令取得此權杖:
az account get-access-token
建立或修改封鎖清單
將下列 cURL 命令複製至文字編輯器,並進行下列變更:
- 以您的訂用帳戶識別碼取代 {subscriptionId}。
- 以您的資源群組名稱取代 {resourceGroupName}。
- 以您的資源名稱取代 {accountName}。
- 以您清單的自訂名稱取代 {raiBlocklistName} (在 URL 中)。 允許的字元:
0-9, A-Z, a-z, - . _ ~
。 - 以您從上述「取得權杖」步驟中取得之權杖取代 {token}。
- 選擇性將「描述」欄位的值取代為自訂描述。
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}?api-version=2024-03-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"description": "This is a prompt blocklist"
}
}'
回應碼應該為 201
(建立新清單) 或 200
(更新現有清單)。
將封鎖清單套用至內容篩選
如果您尚未建立內容篩選,您可以在左側的 [內容篩選] 索引標籤的工作室中執行此動作。 若要使用封鎖清單,請確定此內容篩選已套用至 Azure OpenAI 部署。 您可以在左側的 [部署] 索引標籤中執行此動作。
若要將完成封鎖清單套用至內容篩選,請使用下列 cURL 命令:
- 以您的訂用帳戶識別碼取代 {subscriptionId}。
- 以您的資源群組名稱取代 {resourceGroupName}。
- 以您的資源名稱取代 {accountName}。
- 以您的內容篩選名稱取代 {raiPolicyName}
- 以您從上述「取得權杖」步驟中取得之權杖取代 {token}。
- 以您清單的自訂名稱取代本文中的 {raiBlocklistName}。 允許的字元:
0-9, A-Z, a-z, - . _ ~
。
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiPolicies/{raiPolicyName}?api-version=2024-03-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"basePolicyName": "Microsoft.Default",
"completionBlocklists": [{
"blocklistName": "raiBlocklistName",
"blocking": true
}],
"contentFilters": [ ]
}
}'
將 blockItems 新增至清單
注意
一個清單中允許的字詞上限為 10,000 個。
將下列 cURL 命令複製至文字編輯器,並進行下列變更:
- 以您的訂用帳戶識別碼取代 {subscriptionId}。
- 以您的資源群組名稱取代 {resourceGroupName}。
- 以您的資源名稱取代 {accountName}。
- 以您清單的自訂名稱取代 {raiBlocklistName} (在 URL 中)。 允許的字元:
0-9, A-Z, a-z, - . _ ~
。 - 以您清單項目的自訂名稱取代 {raiBlocklistItemName}。
- 以您從上述「取得權杖」步驟中取得之權杖取代 {token}。
- 將
"blocking pattern"
欄位的值取代為您想新增至封鎖清單的項目。 blockItem 的長度上限為 1000 個字元。 並指定模式是否為 Regex 或完全符合。
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}/raiBlocklistItems/{raiBlocklistItemName}?api-version=2024-03-01-preview' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"properties": {
"pattern": "blocking pattern",
"isRegex": false
}
}'
注意
將新字詞新增至封鎖清單可能需要大約 5 分鐘的時間。 請在 5 分鐘後測試。
回應碼應該為 200
。
{
"name": "raiBlocklistItemName",
"id": "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.CognitiveServices/accounts/accountName/raiBlocklists/raiBlocklistName/raiBlocklistItems/raiBlocklistItemName",
"properties": {
"pattern": "blocking pattern",
"isRegex": false
}
}
使用封鎖清單分析文字
現在,您可以測試具有封鎖清單的部署。 在 Azure OpenAI Studio 中執行此動作最輕鬆。 如果內容在提示或完成時遭到封鎖,您應該會看到一則錯誤訊息,指出內容篩選系統已觸發。
如需呼叫 Azure OpenAI 端點的指令,請瀏覽快速入門。
在下列範例中,具有封鎖清單的 GPT-35-Turbo 部署正在封鎖提示。 回應會傳回 400
錯誤。
{
"error": {
"message": "The response was filtered due to the prompt triggering Azure OpenAI’s content management policy. Please modify your prompt and retry. To learn more about our content filtering policies please read our documentation: https://go.microsoft.com/fwlink/?linkid=2198766",
"type": null,
"param": "prompt",
"code": "content_filter",
"status": 400,
"innererror": {
"code": "ResponsibleAIPolicyViolation",
"content_filter_result": {
"custom_blocklists": [
{
"filtered": true,
"id": "raiBlocklistName"
}
],
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
}
}
如果完成本身遭到封鎖,回應會傳回 200
,因為完成只會在封鎖清單內容相符時關閉。 註釋顯示封鎖清單相符。
{
"id": "chatcmpl-85NkyY0AkeBMunOjyxivQSiTaxGAl",
"object": "chat.completion",
"created": 1696293652,
"model": "gpt-35-turbo",
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"choices": [
{
"index": 0,
"finish_reason": "content_filter",
"message": {
"role": "assistant"
},
"content_filter_results": {
"custom_blocklists": [
{
"filtered": true,
"id": "myBlocklistName"
}
],
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"usage": {
"completion_tokens": 75,
"prompt_tokens": 27,
"total_tokens": 102
}
}
在 Azure OpenAI Studio 中使用封鎖清單
您也可以在 Azure OpenAI Studio 中建立自訂封鎖清單,作為內容篩選組態的一部分 (公開預覽)。 如需如何建立自訂內容篩選的指示,請參閱這裡。 下列步驟顯示,如何透過 Azure OpenAI Studio 建立自訂封鎖清單作為內容篩選的一部分。
- 從左側功能表中選取 [內容篩選]。 選取 [內容篩選] 索引標籤旁的 [封鎖清單] 索引標籤。然後選取 [建立封鎖清單]。
- 建立封鎖清單的名稱、新增描述,然後選取 [建立封鎖清單]。
- 建立自定義封鎖清單之後,請選取 [新增字詞]。
- 新增應該篩選的字詞,然後選取 [新增字詞]。 您也可以建立 Regex。
- 您可以在封鎖清單中移除每個字詞。
- 一旦封鎖清單準備就緒,請瀏覽至 [內容篩選 (預覽)] 區段,然後建立新的自訂內容篩選設定。 這會開啟具有數個 AI 內容安全性元件的精靈。 如需如何設定主要篩選和選擇性模型的詳細資訊,請參閱這裡。 移至 [新增封鎖清單] (選擇性)。
- 您現在會看到所有可用的封鎖清單。 封鎖清單有兩種類型,一種為您建立的封鎖清單,另一種為 Microsoft 提供之預先建置的封鎖清單,在此案例中為不雅內容封鎖清單 (英文)
- 您現在可以決定要在內容篩選組態中包含哪些可用的封鎖清單。 在下列範例中,我們會套用剛才建立的 CustomBlocklist1。 最後一個步驟是按一下 [下一步] 來檢閱並完成內容篩選設定。
- 您可以隨時返回並編輯您的設定。 準備好之後,請選取 [建立內容篩選]。 包含封鎖清單的新設定現在可以套用至部署。 在這裡可以找到詳細指示。
下一步
深入了解 Azure OpenAI 負責任 AI 做法:適用於 Azure OpenAI 模型的負責任 AI 做法概觀。
深入閲讀 Azure OpenAI 服務的內容篩選類別和嚴重性層級。
從我們的:(LLM) 的紅色小組簡介文章中深入了解紅色小組。