LLM 要求にコンテンツの安全性チェックを適用する

適用対象: Developer | Basic | Basic v2 | Standard | Standard v2 | Premium | Premium v2

llm-content-safety ポリシーでは、大規模言語モデル (LLM) 要求 (プロンプト) または応答 (入力候補) に対して、コンテンツの安全性チェックを Azure AI Content Safety サービスに送信することで強制します。 このポリシーはまた、API Managementで管理されるMCPツールやA2AエージェントAPIのリクエストやレスポンスに対するコンテンツ安全チェックを強制できます。

ポリシーを有効にし、Azure AI Content Safety が悪意のあるコンテンツを検出すると、API Management によって要求または応答がブロックされ、 403 エラー コードが返されます。

API Management で使用される用語 のカテゴリカテゴリ は、Azure AI Content Safety サービスの 損害カテゴリ害カテゴリ と同義です。 詳細については、「 Azure AI Content Safety の損害カテゴリ」を参照してください。

次のようなシナリオでポリシーを使用します。

  • 有害なコンテンツやヘイト スピーチの定義済みのカテゴリを含む要求または応答をブロックします。
  • カスタム ブロックリストを適用して、特定のコンテンツが送受信されないようにします。
  • 攻撃パターンに一致するプロンプトからシールドします。

ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 API Management ポリシーを設定または編集する方法について説明します

[前提条件]

  • Azure AI Content Safety リソース。
  • コンテンツ セーフティ API 呼び出しをルーティングし、Azure AI Content Safety サービスに対して認証するように構成された API Management バックエンド :
    • API Management のマネージド ID は、Cognitive Services ユーザー ロールを使用して Azure AI Content Safety サービスで構成する必要があります。
    • backend-id ポリシーのllm-content-safetyによって参照される Azure AI Content Safety バックエンド URL は、https://<content-safety-service-name>.cognitiveservices.azure.com形式である必要があります。
    • Azure AI Content Safety バックエンドの承認資格情報は、 https://cognitiveservices.azure.comの正確なリソース ID で有効になっているマネージド ID に設定する必要があります。

ポリシー ステートメント

<llm-content-safety backend-id="name of backend entity" shield-prompt="true | false" enforce-on-completions="true | false" window-size="integer" window-overlap-size="integer">
    <categories output-type="FourSeverityLevels | EightSeverityLevels">
        <category name="Hate | SelfHarm | Sexual | Violence" threshold="integer" />
        <!-- If there are multiple categories, add more category elements -->
        [...]
    </categories>
    <blocklists>
        <id>blocklist-identifier</id>
        <!-- If there are multiple blocklists, add more id elements -->
        [...]
    </blocklists>
</llm-content-safety>

属性

特性 説明 必須 既定値
backend-id Content-safety API 呼び出しをルーティングする Azure AI Content Safety バックエンドの識別子 (名前)。 ポリシー式を使用できます。 イエス なし
shield-prompt trueに設定されている場合は、ユーザー攻撃のコンテンツを確認します。 それ以外の場合は、このチェックをスキップします。 ポリシー式を使用できます。 いいえ false
enforce-on-completions 要求に対するコンテンツの安全性チェックの受信セクションでポリシーを設定するときに true に設定した場合は、応答検証のためにチャットの完了時にもコンテンツの安全性チェックを適用します。 応答に関するコンテンツの安全性チェックの送信セクションでポリシーを設定すると、この属性は無視されます。 ポリシー式を使用できます。 いいえ false
window-size ポリシーが評価のために Azure AI Content Safety に送信する文字のテキスト ウィンドウのサイズ。 応答のみで設定可能;リクエストの場合、プロンプトのウィンドウサイズは常に10,000です。 ポリシー式を使用できます。 いいえ 回答は1,000文字
window-overlap-size window-size属性を使用してコンテンツを分割するときのテキスト ウィンドウ間の重複のサイズ。 値を指定しない場合、ウィンドウは重複しません。 ポリシー式を使用できます。 いいえ なし

Important

backend-idを使ってバックエンドを参照した場合、リンクアクセスはチェックされません。 ポリシーを作成する権限を持つユーザーは、利用可能なバックエンドを参照し、バックエンドの設定された認証を使ってリクエストやレスポンスコンテンツを送ることができます。たとえユーザーがバックエンドリソースの読み取り権限を持っていなくてもです。

元素

要素 説明 必須
カテゴリー カテゴリが検出されたときにブロック要求の設定を指定する category 要素の一覧。 いいえ
blocklists 検出によって要求がブロックされる Azure AI Content Safety インスタンスの ブロックリストid 要素の一覧。 ポリシー式を使用できます。 いいえ

categories 属性

特性 説明 必須 既定値
output-type Azure AI Content Safety によって重大度レベルがどのように返されるかを指定します。 属性には、次のいずれかの値が必要です。

- FourSeverityLevels: 4 つのレベルの出力重大度: 0,2,4,6。
- EightSeverityLevels: 8 レベルの出力重大度: 0,1,2,3,4,5,6,7。

ポリシー式を使用できます。
いいえ FourSeverityLevels

category 属性

特性 説明 必須 既定値
名前 このカテゴリの名前を指定します。 属性には、 HateSelfHarmSexualViolenceのいずれかの値が必要です。 ポリシー式を使用できます。 イエス なし
しきい値 要求または応答がブロックされるこのカテゴリのしきい値を指定します。 コンテンツの重大度がしきい値より小さい要求はブロックされません。 値は、0 (最も制限が厳しい) から 7 (最も制限が厳しい) の間である必要があります。 ポリシー式を使用できます。 イエス なし

使用方法

使用に関する注記

  • 要求を確認するように受信セクションでポリシーを構成し、送信セクションで応答を確認します。
  • ストリーミング応答の場合、ストリーム ハンドラーはスライディング ウィンドウでイベントをバッファーし、コンテンツの安全性違反が検出された場合は、クライアントへのそれ以上のイベントの転送を停止します。 この場合、 403 エラーは返されません。
  • 要求または応答が Azure AI Content Safety の文字制限を超えた場合、ポリシーは 403 エラーを返します。
  • このポリシーは、ポリシー定義ごとに複数回使用できます。

次の例は、受信セクションで構成されている場合、Azure AI Content Safety サービスを使用して LLM 要求にコンテンツの安全性チェックを適用します。 このポリシーは、重大度レベルが 4 以上の Hate または Violence カテゴリの音声を含む要求をブロックします。 つまり、フィルターではレベル 0 から 3 を続行できるのに対し、レベル 4 から 7 はブロックされます。 カテゴリのしきい値を上げると、許容度が上がり、ブロックされた要求の数が減少する可能性があります。 しきい値を下げると許容度が下がり、ブロックされた要求の数が増える可能性があります。 shield-prompt属性は、敵対的攻撃をチェックするためにtrueに設定されます。

<policies>
    <inbound>
        <llm-content-safety backend-id="content-safety-backend" shield-prompt="true">
            <categories output-type="EightSeverityLevels">
                <category name="Hate" threshold="4" />
                <category name="Violence" threshold="4" />
            </categories>
        </llm-content-safety>
    </inbound>
</policies>

ポリシーに対する処理の詳細については、次のトピックを参照してください。