Share via


使用封鎖清單

警告

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

默認 AI 分類器就足以滿足大部分的 con 帳篷模式 ration 需求。 不過,您可能需要篩選使用案例特定的專案。

必要條件

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

建立環境變數

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

提示

請勿將金鑰直接包含在您的程式代碼中,且絕不會公開發佈。 如需更多驗證選項 (例如 Azure Key Vault),請參閱 Azure AI 服務安全性文章。

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

  1. 若要設定 CONTENT_SAFETY_KEY 環境變數,請將 取代 YOUR_CONTENT_SAFETY_KEY 為您資源的其中一個密鑰。
  2. 若要設定 CONTENT_SAFETY_ENDPOINT 環境變數,請將 取代 YOUR_CONTENT_SAFETY_ENDPOINT 為您資源的端點。
setx CONTENT_SAFETY_KEY 'YOUR_CONTENT_SAFETY_KEY'
setx CONTENT_SAFETY_ENDPOINT 'YOUR_CONTENT_SAFETY_ENDPOINT'

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

使用封鎖清單分析文字

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

建立或修改封鎖清單

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

  1. 將取代 <endpoint> 為您的端點 URL。
  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=2023-10-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 個 blocklistItems。

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

  1. 將取代 <endpoint> 為您的端點 URL。
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 將 [URL] 取代 <your_list_name> 為您在清單建立步驟中使用的名稱。
  4. 選擇性地將欄位的值 "description" 取代為自訂描述。
  5. 將欄位的值 "text" 取代為您想要新增至封鎖清單的專案。 blocklistItem 的最大長度為 128 個字元。
curl --location --request POST '<endpoint>/contentsafety/text/blocklists/<your_list_name>:addOrUpdateBlocklistItems?api-version=2023-10-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. 將取代 <endpoint> 為您的端點 URL。
  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=2023-10-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. 將取代 <endpoint> 為您的端點 URL。
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 將 (在要求URL中) 取代 <your_list_name> 為您在清單建立步驟中使用的名稱。
curl --location --request GET '<endpoint>/contentsafety/text/blocklists/<your_list_name>/blocklistItems?api-version=2023-10-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. 將取代 <endpoint> 為您的端點 URL。
  2. 以您的金鑰取代 <enter_your_key_here>
curl --location --request GET '<endpoint>/contentsafety/text/blocklists?api-version=2023-10-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. 將取代 <endpoint> 為您的端點 URL。
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 將 (在要求URL中) 取代 <your_list_name> 為您在清單建立步驟中使用的名稱。
cURL --location '<endpoint>contentsafety/text/blocklists/<your_list_name>?api-version=2023-10-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--data ''

狀態代碼應該是 200。 JSON 回應看起來像這樣:

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

依 blocklistName 和 blocklistItemId 取得 blocklistItem

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

  1. 將取代 <endpoint> 為您的端點 URL。
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 將 (在要求URL中) 取代 <your_list_name> 為您在清單建立步驟中使用的名稱。
  4. 將取代 <your_item_id> 為 blocklistItem 的標識碼值。 這是 Add blocklistItem 或 Get all blocklistItems API 呼叫中的欄位值"blocklistItemId"
cURL --location '<endpoint>contentsafety/text/blocklists/<your_list_name>/blocklistItems/<your_item_id>?api-version=2023-10-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. 將取代 <endpoint> 為您的端點 URL。
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 將 (在要求URL中) 取代 <your_list_name> 為您在清單建立步驟中使用的名稱。
  4. 將取代 <item_id> 為 blocklistItem 的標識碼值。 這是 Add blocklistItem 或 Get all blocklistItems API 呼叫中的欄位值"blocklistItemId"
curl --location --request DELETE '<endpoint>/contentsafety/text/blocklists/<your_list_name>:removeBlocklistItems?api-version=2023-10-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. 將取代 <endpoint> 為您的端點 URL。
  2. 以您的金鑰取代 <enter_your_key_here>
  3. 將 (在要求URL中) 取代 <your_list_name> 為您在清單建立步驟中使用的名稱。
curl --location --request DELETE '<endpoint>/contentsafety/text/blocklists/<your_list_name>?api-version=2023-10-01' \
--header 'Ocp-Apim-Subscription-Key: <enter_your_key_here>' \
--header 'Content-Type: application/json' \

回應碼應該是 204

下一步

請參閱 API 參考檔,以深入瞭解本指南中使用的 API。