共用方式為


搭配 Azure OpenAI 使用封鎖清單

可設定的內容篩選足以因應大部分的內容調節需求。 不過,您可能需要篩選使用案例特定的字詞。

必要條件

  • Azure 訂用帳戶。 免費建立一個
  • 擁有 Azure 訂用帳戶之後,在 Azure 入口網站中建立 Azure OpenAI 資源,以取得您的權杖、金鑰和端點。 輸入資源的唯一名稱、選取您在應用程式表單上輸入的訂用帳戶、選取資源群組、支援的區域以及支援的定價層。 然後選取建立
    • 部署資源需要幾分鐘的時間。 完成後,選取 [移至資源]。 在左側窗格中,於 [資源管理] 下選取 [訂用帳戶金鑰和端點]。 端點和其中一個金鑰是用以呼叫 API。
  • Azure CLI 已安裝
  • 已安裝 cURL

使用封鎖清單

您可以使用 Azure OpenAI API 建立封鎖清單。 下列步驟可協助您開始使用。

取得權杖

首先,您需要取得權杖,以存取用來建立、編輯和刪除封鎖清單的 API。 您可以使用下列 Azure CLI 命令取得此權杖:

az account get-access-token 

建立或修改封鎖清單

將下列 cURL 命令複製至文字編輯器,並進行下列變更:

  1. 以您的訂用帳戶識別碼取代 {subscriptionId}。
  2. 以您的資源群組名稱取代 {resourceGroupName}。
  3. 以您的資源名稱取代 {accountName}。
  4. 以您清單的自訂名稱取代 {raiBlocklistName} (在 URL 中)。 允許的字元:0-9, A-Z, a-z, - . _ ~
  5. 以您從上述「取得權杖」步驟中取得之權杖取代 {token}。
  6. 選擇性將「描述」欄位的值取代為自訂描述。
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}?api-version=2024-04-01-preview' \ 
--header 'Authorization: Bearer {token}' \ 
--header 'Content-Type: application/json' \ 
--data-raw '{ 
    "properties": { 
        "description": "This is a prompt blocklist"  
    } 
}' 

回應碼應該為 201 (建立新清單) 或 200 (更新現有清單)。

將封鎖清單套用至內容篩選

如果您尚未建立內容篩選,您可以在 Azure AI Foundry 中執行此動作。 請參閱 內容篩選

若要將完成封鎖清單套用至內容篩選,請使用下列 cURL 命令:

  1. 以您的訂用帳戶識別碼取代 {subscriptionId}。
  2. 以您的資源群組名稱取代 {resourceGroupName}。
  3. 以您的資源名稱取代 {accountName}。
  4. 以您的內容篩選名稱取代 {raiPolicyName}
  5. 以您從上述「取得權杖」步驟中取得之權杖取代 {token}。
  6. 如果您要將封鎖清單套用至使用者提示,而不是 AI 模型完成,可以選擇性地將標題"promptBlocklists"變更"completionBlocklists"為 。
  7. 以清單的自訂名稱取代 "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-04-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 命令複製至文字編輯器,並進行下列變更:

  1. 以您的訂用帳戶識別碼取代 {subscriptionId}。
  2. 以您的資源群組名稱取代 {resourceGroupName}。
  3. 以您的資源名稱取代 {accountName}。
  4. 以您清單的自訂名稱取代 {raiBlocklistName} (在 URL 中)。 允許的字元:0-9, A-Z, a-z, - . _ ~
  5. 以您清單項目的自訂名稱取代 {raiBlocklistItemName}。
  6. 以您從上述「取得權杖」步驟中取得之權杖取代 {token}。
  7. "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-04-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 端點的指示,請流覽 快速入門

在下列範例中,具有封鎖清單的 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 
    } 
} 

下一步