Share via


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

構成可能なコンテンツ フィルターは、ほとんどのコンテンツ モデレーションのニーズに十分です。 ただし、ユース ケースに固有の用語をフィルター処理する必要がある場合があります。

前提条件

  • Azure サブスクリプション。 無料で作成できます。
  • Azure サブスクリプションを取得したら、Azure portal で Azure OpenAI リソースを作成して、トークン、キー、エンドポイントを取得します。 リソースに一意の名前を入力し、アプリケーション フォームで入力したサブスクリプションを選び、リソース グループ、サポートされているリージョン、サポートされている価格レベルを選びます。 [作成] を選択します。
    • リソースのデプロイには数分かかります。 完了した後、[リソースに移動] を選択します。 左ペインの [リソース管理] で、[サブスクリプション キーとエンドポイント] を選びます。 エンドポイントといずれかのキーが、API の呼び出しに使われます。
  • Azure CLI がインストールされていること
  • インストールされた cURL

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

ブロックリストは、Azure OpenAI API を使用して作成できます。 使用を開始するには、次のステップを参照してください。

トークンを取得する

まず、ブロックリストを作成、編集、削除するための API にアクセスするためのトークンを取得する必要があります。 このトークンは、次の Azure CLI コマンドを使用して取得できます:

az account get-access-token 

ブロックリストを作成または変更する

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

  1. {subscriptionId} を実際のサブスクリプション ID に置き換えます。
  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-03-01-preview' \ 
--header 'Authorization: Bearer {token}' \ 
--header 'Content-Type: application/json' \ 
--data-raw '{ 
    "properties": { 
        "description": "This is a prompt blocklist"  
    } 
}' 

応答コードは、201 (新しいリストを作成) または 200 (既存のリストを更新) になります。

ブロックリストをコンテンツ フィルターに適用する

コンテンツ フィルターをまだ作成していない場合は、左側の [コンテンツ フィルター] タブの Studio で作成できます。 ブロックリストを使用するには、このコンテンツ フィルターが Azure OpenAI デプロイに適用されていることを確認します。 これは、左側の [デプロイ] タブで行うことができます。

コンテンツ フィルターに入力候補ブロックリストを適用するには、次の cURL コマンドを使用します:

  1. {subscriptionId} を実際のサブ ID に置き換えます。
  2. {resourceGroupName} をリソース グループ名に置き換えます。
  3. {accountName} をリソース名に置き換えます。
  4. {raiPolicyName} をコンテンツ フィルターの名前に置き換えます
  5. {token} を上記の「トークンを取得する」の手順で取得したトークンに置き換えます。
  6. 本文の "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-03-01-preview' \ 
--header 'Authorization: Bearer {token}' \ 
--header 'Content-Type: application/json' \ 
--data-raw '{ 
    "properties": { 
        "basePolicyName": "Microsoft.Default", 
        "completionBlocklists": [{ 
            "blocklistName": "raiBlocklistName", 
            "blocking": true 
        }], 
        "contentFilters": [ ] 
    } 
}' 

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

Note

1 つのリストで使用できる上限は 10,000 用語です。

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

  1. {subscriptionId} を実際のサブ ID に置き換えます。
  2. {resourceGroupName} をリソース グループ名に置き換えます。
  3. {accountName} をリソース名に置き換えます。
  4. {raiBlocklistName} (URL 内) をリストのカスタム名に置き換えます。 使用できる文字: 0-9, A-Z, a-z, - . _ ~
  5. {raiBlocklistItemName} をリスト アイテムのカスタム名に置き換えます。
  6. {token} を上記の「トークンを取得する」の手順で取得したトークンに置き換えます。
  7. "blocking pattern" フィールドの値を、ブロックリストに追加する項目に置き換えます。 ブロック項目の長さは最大 1000 文字です。 また、パターンが正規表現か完全一致かを指定します。
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}/raiBlocklistItems/{raiBlocklistItemName}?api-version=2024-03-01-preview' \ 
--header 'Authorization: Bearer {token}' \ 
--header 'Content-Type: application/json' \ 
--data-raw '{  
    "properties": {  
        "pattern": "blocking pattern",  
        "isRegex": false  
    }  
}' 

Note

新しい用語がブロックリストに追加されるまでに約 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 Studio です。 プロンプトまたは完了でコンテンツがブロックされた場合は、コンテンツ フィルター システムがトリガーされたことを示すエラー メッセージが表示されます。

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 
    } 
} 

Azure OpenAI Studio でブロックリストを使用する

コンテンツ フィルタリング構成 (パブリック プレビュー) の一部として、Azure OpenAI Studio でカスタム ブロックリストを作成することもできます。 カスタム コンテンツ フィルターを作成する方法については、こちらをご覧ください。 次の手順では、Azure OpenAI Studio を使用してコンテンツ フィルターの一部としてカスタム ブロックリストを作成する方法を示します。

  1. [コンテンツ フィルター] タブの横にある [ブロックリスト] タブを選択します。screenshot of blocklist selection.
  2. [ブロックリストの作成] を選択する Screenshot of blocklist create selection.
  3. ブロックリストの名前を作成し、説明を追加して [作成] を選択します。 Screenshot of blocklist naming.
  4. 作成したカスタム ブロックリストを選択し、[用語の追加] を選択します。 Screenshot of custom blocklist add term.
  5. フィルター処理する用語を追加し、[作成] を選択します。 正規表現を作成することもできます。 Screenshot of custom blocklist add item.
  6. ブロックリスト内のすべての用語を編集および削除できます。 Screenshot of custom blocklist edit.
  7. ブロックリストの準備ができたら、[コンテンツ フィルター (プレビュー)] セクションに移動し、新しいカスタマイズされたコンテンツ フィルター構成を作成します。 これにより、複数の AI Content Safety コンポーネントが含まれたウィザードが開きます。 メイン フィルターとオプション モデルを構成する方法の詳細については、こちらをご覧ください。 [ブロックリストの追加] に移動します (省略可能)。
  8. これで、使用可能なすべてのブロックリストが表示されます。 ブロックリストには、作成したブロックリストと、Microsoft が提供する事前構築済みのブロックリストの 2 種類があります。この場合、不適切な表現のブロックリスト (英語) です
  9. コンテンツ フィルター構成に含める使用可能なブロックリストを決定できるようになりました。プロンプト、入力候補、またはその両方に適用するかどうかを選択できます。 以下の例では、先ほど作成した CustomBlocklist1 をプロンプトと入力候補に適用し、Profanity ブロックリストを入力候補のみに適用します。 最後の手順では、[次へ] をクリックしてコンテンツ フィルターの構成を確認し、完了します。 Screenshot of filtering configuration management.
  10. いつでも戻って構成を編集できます。 準備ができたら、[コンテンツの作成] フィルターを選択します。 ブロックリストを含む新しい構成をデプロイに適用できるようになりました。 詳細な手順については、こちらをご覧ください。

次のステップ