Azure OpenAI 中可用的可設定內容篩選器足以滿足大部分的 con 帳篷模式 ration 需求。 不過,您可能需要篩選使用案例特定的字詞。 為此,您可以使用自定義封鎖清單。
先決條件
- 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-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 命令:
- 以您的訂用帳戶識別碼取代 {subscriptionId}。
- 以您的資源群組名稱取代 {resourceGroupName}。
- 以您的資源名稱取代 {accountName}。
- 以您的內容篩選名稱取代 {raiPolicyName}
- 以您從上述「取得權杖」步驟中取得之權杖取代 {token}。
- 如果您要將封鎖清單套用至使用者提示,而不是 AI 模型完成,可以選擇性地將標題
"completionBlocklists"
變更"promptBlocklists"
為 。 - 以清單的自訂名稱取代
"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 命令複製至文字編輯器,並進行下列變更:
- 以您的訂用帳戶識別碼取代 {subscriptionId}。
- 以您的資源群組名稱取代 {resourceGroupName}。
- 以您的資源名稱取代 {accountName}。
- 以您清單的自訂名稱取代 {raiBlocklistName} (在 URL 中)。 允許的字元:
0-9, A-Z, a-z, - . _ ~
。 - 以您清單項目的自訂名稱取代 {raiBlocklistItemName}。
- 以您從上述「取得權杖」步驟中取得之權杖取代 {token}。
- 將
"blocking pattern"
欄位的值取代為您想新增至封鎖清單的項目。 blockItem 的最大長度為 1,000 個字元。 並指定模式是否為 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_results": {
"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 的負責任 AI 做法: Azure OpenAI 模型的負責任 AI 做法概觀。
深入瞭解 Azure AI Foundry 模型中的 Azure OpenAI 內容篩選類別和嚴重性層級 。
從我們的:(LLM) 的紅色小組簡介文章中深入了解紅色小組。