ブロックリストを使用する

注意事項

このガイドのサンプル データには、不快なコンテンツが含まれている可能性があります。 ユーザーの裁量が推奨されます。

ほとんどのコンテンツ モデレーションのニーズには、既定の AI 分類子で十分です。 しかし、ユース ケースに固有の項目のスクリーニングが必要になる場合があります。

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します
  • Azure サブスクリプションを入手したら、Azure portal で Content Safety リソースを作成し、キーとエンドポイントを取得します。 リソースの一意の名前を入力し、サブスクリプションを選択して、リソース グループ、サポートされているリージョン (米国東部または西ヨーロッパ)、サポートされている価格レベルを選択します。 [作成] を選択します。
    • リソースのデプロイには数分かかります。 完了したら、[リソースに移動] を選びます。 左ペインの [リソース管理] で、[サブスクリプション キーとエンドポイント] を選びます。 エンドポイントといずれかのキーが、API の呼び出しに使われます。
  • 次のいずれかがインストールされていること。
    • REST API 呼び出し用の cURL
    • Python 3.x がインストールされていること
      • Python のインストールには、pip が含まれている必要があります。 pip がインストールされているかどうかを確認するには、コマンド ラインで pip --version を実行します。 最新バージョンの Python をインストールして pip を入手してください。
      • Python を使用している場合は、Python 用の Azure AI Content Safety クライアント ライブラリをインストールする必要があります。 プロジェクト ディレクトリで pip install azure-ai-contentsafety コマンドを実行します。
    • .NET ランタイムがインストールされている。
      • .NET Core SDK インストールされている必要があります。
      • .NET を使用している場合は、.NET 用の Azure AI Content Safety クライアント ライブラリをインストールする必要があります。 プロジェクト ディレクトリで dotnet add package Azure.AI.ContentSafety --prerelease コマンドを実行します。

環境変数を作成する

この例では、アプリケーションを実行しているローカル コンピューター上の環境変数に資格情報を書き込みます。

ヒント

キーは、コードに直接含めないようにし、公開しないでください。 Azure Key Vault などのその他の認証オプションについては、Azure AI サービスのセキュリティに関する記事を参照してください。

キーとエンドポイントの環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。

  1. CONTENT_SAFETY_KEY 環境変数を設定するには、YOUR_CONTENT_SAFETY_KEY をリソースのキーの 1 つに置き換えます。
  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 の最後の用語も同じ名前に置き換えます。 使用できる文字: a-z、0-9、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 (既存のリストを更新) になるはずです。

ブロックリスト項目をリストに追加する

Note

すべてのリストで合計 10,000 用語の上限があります。 1 つの要求で最大 100 個のブロックリスト項目を追加できます。

下の cURL コマンドをテキスト エディターにコピーし、次の変更を行います。

  1. <endpoint> を実際のエンドポイント URL に置き換えます。
  2. <enter_your_key_here> をご自分のキーに置き換えます。
  3. <your_list_name> (URL 内) を、リスト作成のステップで使用した名前に置き換えます。
  4. 必要に応じて、"description" フィールドの値をカスタムの説明に置き換えます。
  5. "text" フィールドの値を、ブロックリストに追加する項目に置き換えます。 ブロックリスト項目の長さは最大 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"
}]'

ヒント

1 つの API 呼び出しで複数のブロックリスト項目を追加できます。 要求本文を次のようにデータ グループの JSON 配列にします。

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

応答コードは 200 になるはずです。

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

注意

ブロック項目を追加または編集した後、テキスト分析に反映されるまでに多少の遅延が発生します (通常は 5 分以下)。

ブロックリストを使用してテキストを分析する

下の cURL コマンドをテキスト エディターにコピーし、次の変更を行います。

  1. <endpoint> を実際のエンドポイント URL に置き換えます。
  2. <enter_your_key_here> をご自分のキーに置き換えます。
  3. <your_list_name> を、リスト作成のステップで使用した ID 値に置き換えます。 "blocklistNames" フィールドには、複数のリスト ID の配列を含めることができます。
  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
    }
  ]
}

その他のブロックリストの操作

このセクションには、ブロックリスト機能の管理と使用に役立つその他の操作が含まれています。

リスト内のすべてのブロックリスト項目を一覧表示する

下の cURL コマンドをテキスト エディターにコピーし、次の変更を行います。

  1. <endpoint> を実際のエンドポイント URL に置き換えます。
  2. <enter_your_key_here> をご自分のキーに置き換えます。
  3. <your_list_name> (要求 URL 内) を、リスト作成のステップで使用した名前に置き換えます。
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. <your_list_name> (要求 URL 内) を、リスト作成のステップで使用した名前に置き換えます。
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 でブロックリスト項目を取得する

下の cURL コマンドをテキスト エディターにコピーし、次の変更を行います。

  1. <endpoint> を実際のエンドポイント URL に置き換えます。
  2. <enter_your_key_here> をご自分のキーに置き換えます。
  3. <your_list_name> (要求 URL 内) を、リスト作成のステップで使用した名前に置き換えます。
  4. <your_item_id> をブロックリスト項目の ID 値に置き換えます。 これは、ブロックリスト項目の追加、またはすべてのブロックリスト項目の取得 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> を、リスト作成のステップで使用した ID 値に置き換えます。
  2. <your_block_item_id> を、取得する項目の ID に置き換えます。
  3. スクリプトを実行します。

ブロックリストからブロックリスト項目を削除します。

Note

項目を削除した後、テキスト分析に反映されるまでに多少の遅延が発生します (通常は 5 分以下)。

下の cURL コマンドをテキスト エディターにコピーし、次の変更を行います。

  1. <endpoint> を実際のエンドポイント URL に置き換えます。
  2. <enter_your_key_here> をご自分のキーに置き換えます。
  3. <your_list_name> (要求 URL 内) を、リスト作成のステップで使用した名前に置き換えます。
  4. <item_id> をブロックリスト項目の ID 値に置き換えます。 これは、ブロックリスト項目の追加、またはすべてのブロックリスト項目の取得 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>"
]'

ヒント

1 つの API 呼び出しで複数のブロックリスト項目を削除できます。 要求本文を blocklistItemId 値の配列にします。

応答コードは 204 になるはずです。

リストとそのコンテンツをすべて削除する

注意

リストを削除した後、テキスト分析に反映されるまでに多少の遅延が発生します (通常は 5 分以下)。

下の cURL コマンドをテキスト エディターにコピーし、次の変更を行います。

  1. <endpoint> を実際のエンドポイント URL に置き換えます。
  2. <enter_your_key_here> をご自分のキーに置き換えます。
  3. <your_list_name> (要求 URL 内) を、リスト作成のステップで使用した名前に置き換えます。
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 リファレンス ドキュメントを参照してください。