共用方式為


使用封鎖清單

警告

本指南中的範例資料可能包含冒犯性內容。 建議使用者斟酌使用。

預設 AI 分類器足以滿足大部分的內容調節需求。 不過,您可能會需要審查屬於使用案例的特定項目。 封鎖清單可讓您將自訂字詞新增至 AI 分類器。 您可以使用封鎖清單,來篩選您想要在內容中加上旗標的特定字詞或片語。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 擁有 Azure 訂用帳戶之後,在 Azure 入口網站中建立 Content Safety 資源,以取得您的金鑰和端點。 輸入您資源的唯一名稱,選取您的訂用帳戶,然後選取資源群組、支援的區域 (參閱區域可用性) 以及支援的定價層。 然後選取建立
    • 部署資源需要幾分鐘的時間。 完成後,選取 [移至資源]。 在左側窗格中,於 [資源管理] 下選取 [訂用帳戶金鑰和端點]。 端點和其中一個金鑰是用以呼叫 API。
  • 已安裝下列其中一項:
    • 適用於 REST API 呼叫的 cURL
    • 已安裝 Python 3.x
      • 您安裝的 Python 應包含 pip。 您可以在命令列上執行 pip --version 來檢查是否已安裝 pip。 安裝最新版本的 Python 以取得 pip。
      • 如果您使用 Python,則必須安裝適用於 Python 的 Azure AI 內容安全性用戶端程式庫。 在專案目錄中執行 pip install azure-ai-contentsafety 命令。
    • 已安裝 .NET 執行階段
      • 已安裝 .NET Core SDK。
      • 如果您使用 .NET,則必須安裝適用於 .NET 的 Azure AI 內容安全性用戶端程式庫。 在專案目錄中執行 dotnet add package Azure.AI.ContentSafety --prerelease 命令。

建立環境變數

在此範例中,您會在執行應用程式的本機電腦上將認證寫入環境變數。

若要設定金鑰和端點的環境變數,請開啟主控台視窗,然後遵循作業系統和開發環境的指示進行。

  • 若要設定 CONTENT_SAFETY_KEY 環境變數,請以您其中一個資源索引碼取代 YOUR_CONTENT_SAFETY_KEY
  • 若要設定 CONTENT_SAFETY_ENDPOINT 環境變數,請將 YOUR_CONTENT_SAFETY_ENDPOINT 取代為您資源的端點。

重要

如果您使用 API 金鑰,請將其安全地儲存在別處,例如 Azure Key Vault。 請勿在程式碼中直接包含 API 金鑰,且切勿公開將其張貼。

如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求

setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

新增環境變數之後,您可能需要重新啟動任何將讀取環境變數的執行中程式,包括主控台視窗。

使用封鎖清單分析文字

您可以建立要與文字 API 搭配使用的封鎖清單。 下列步驟可協助您開始使用。

建立或修改封鎖清單

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

  1. 使用您的端點 URL 取代 <endpoint>
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 以您清單的自訂名稱取代 <your_list_name> (在 URL 中)。 另請以相同名稱取代 REST URL 的最後一個字詞。 允許的字元:0-9、A-Z、a-z、- . _ ~
  4. 選擇性將 "description" 欄位的值取代為自訂描述。
curl --location --request PATCH '<endpoint>/contentsafety/text/blocklists/<your_list_name>?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "description": "This is a violence list"
}'

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

將 blocklistItems 新增至清單

注意

所有清單的總數上限為 10,000 個字詞。 您可以在一個要求中最多新增 100 個 blocklistItem。

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

  1. 使用您的端點 URL 取代 <endpoint>
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 以您在清單建立步驟中使用的名稱取代 <your_list_name> (在 URL 中)。
  4. 選擇性將 "description" 欄位的值取代為自訂描述。
  5. "text" 欄位的值取代為您想新增至封鎖清單的項目。 blocklistItem 的長度上限為 128 個字元。
curl --location --request POST '<endpoint>/contentsafety/text/blocklists/<your_list_name>:addOrUpdateBlocklistItems?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json' \
--data-raw '"blocklistItems": [{
    "description": "string",
    "text": "bleed"
}]'

提示

您可以在 API 呼叫中新增多個 blocklistItems。 讓要求本文成為資料群組的 JSON 陣列:

{
   "blocklistItems": [
       {
           "description": "string",
           "text": "bleed"
       },
       {
           "description": "string",
           "text": "blood"
       }
   ]
}

回應碼應該為 200

{
"blocklistItems:"[
  {
  "blocklistItemId": "string",
  "description": "string",
  "text": "bleed"
  
   }
 ]
}

注意

在您新增或編輯 blockItem 之後,在文字分析生效之前會有部分延遲,而這通常不超過五分鐘

使用封鎖清單分析文字

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

  1. 使用您的端點 URL 取代 <endpoint>
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 以您在清單建立步驟中使用的名稱取代 <your_list_name>"blocklistNames" 欄位可以包含多個清單識別碼的陣列。
  4. 您可以選擇性地變更 "breakByBlocklists" 值。 true 表示一旦符合封鎖清單,分析就會立即傳回,而不需要模型輸出。 false 會導致模型繼續在預設類別中進行分析。
  5. 選擇性地將欄位的值 "text" 變更為您想要分析的任何文字。
curl --location --request POST '<endpoint>/contentsafety/text:analyze?api-version=2024-09-01&' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "text": "I want to beat you till you bleed",
  "categories": [
    "Hate",
    "Sexual",
    "SelfHarm",
    "Violence"
  ],
  "blocklistNames":["<your_list_name>"],
  "haltOnBlocklistHit": false,
  "outputType": "FourSeverityLevels"
}'

JSON 回應會包含指出任何符合您封鎖清單的 "blocklistMatchResults"。 它會報告找到相符文字字串中的位置。

{
  "blocklistsMatch": [
    {
      "blocklistName": "string",
      "blocklistItemId": "string",
      "blocklistItemText": "bleed"
    }
  ],
  "categoriesAnalysis": [
    {
      "category": "Hate",
      "severity": 0
    }
  ]
}

其他封鎖清單作業

本節包含更多作業,可協助您管理和使用封鎖清單功能。

列出清單中的所有 blocklistItems

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

  1. 使用您的端點 URL 取代 <endpoint>
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 以您在清單建立步驟中使用的名稱取代 <your_list_name> (在要求 URL 中)。
curl --location --request GET '<endpoint>/contentsafety/text/blocklists/<your_list_name>/blocklistItems?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json'

狀態碼應該是 200,且回應本文看起來應該像這樣:

{
 "values": [
  {
   "blocklistItemId": "string",
   "description": "string",
   "text": "bleed",
  }
 ]
}

列出所有封鎖清單

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

  1. 使用您的端點 URL 取代 <endpoint>
  2. 以您的金鑰取代 <enter_your_key_here>
curl --location --request GET '<endpoint>/contentsafety/text/blocklists?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json'

狀態碼應為 200。 JSON 回應看起來會像這樣:

"value": [
  {
    "blocklistName": "string",
    "description": "string"
  }
]

依 blocklistName 取得封鎖清單

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

  1. 使用您的端點 URL 取代 <endpoint>
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 以您在清單建立步驟中使用的名稱取代 <your_list_name> (在要求 URL 中)。
cURL --location '<endpoint>contentsafety/text/blocklists/<your_list_name>?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--data ''

狀態碼應為 200。 JSON 回應看起來會像這樣:

{
  "blocklistName": "string",
  "description": "string"
}

依 blocklistName 和 blocklistItemId 取得 blocklistItem

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

  1. 使用您的端點 URL 取代 <endpoint>
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 以您在清單建立步驟中使用的名稱取代 <your_list_name> (在要求 URL 中)。
  4. 以 blocklistItem 的識別碼值取代 <your_item_id>。 這是新增 blocklistItem取得所有 blocklistItems API 呼叫的 "blocklistItemId" 欄位值。
cURL --location '<endpoint>contentsafety/text/blocklists/<your_list_name>/blocklistItems/<your_item_id>?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--data ''

狀態碼應為 200。 JSON 回應看起來會像這樣:

{
  "blocklistItemId": "string",
  "description": "string",
  "text": "string"
}
  1. 以您在清單建立步驟中使用的名稱取代 <your_list_name>
  2. 以您想要取得的項目識別碼取代 <your_block_item_id>
  3. 執行指令碼。

從封鎖清單中移除 blocklistItems。

注意

在您刪除項目之後,在文字分析生效之前會有部分延遲,而這通常不超過五分鐘

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

  1. 使用您的端點 URL 取代 <endpoint>
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 以您在清單建立步驟中使用的名稱取代 <your_list_name> (在要求 URL 中)。
  4. 以 blocklistItem 的識別碼值取代 <item_id>。 這是新增 blocklistItem取得所有 blocklistItems API 呼叫的 "blocklistItemId" 欄位值。
curl --location --request POST '<endpoint>/contentsafety/text/blocklists/<your_list_name>:removeBlocklistItems?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json'
--data-raw '"blocklistItemIds":[
    "<item_id>"
]'

提示

您可以在 API 呼叫中刪除多個 blocklistItems。 讓要求本文成為 blocklistItemId 值的陣列。

回應碼應該為 204

刪除清單及其所有內容

注意

在您刪除清單之後,在文字分析生效之前會有部分延遲,而這通常不超過五分鐘

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

  1. 使用您的端點 URL 取代 <endpoint>
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 以您在清單建立步驟中使用的名稱取代 <your_list_name> (在要求 URL 中)。
curl --location --request DELETE '<endpoint>/contentsafety/text/blocklists/<your_list_name>?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json' \

回應碼應該為 204

下一步

請參閱 API 參考文件,以深入了解本指南中使用的 API。