🙅

【Azure】Content Safetyでテキストから「有害なカテゴリ」を検出する。

2024/10/20に公開

今回はAzure AIの「Content Safety」を使って、テキストのフィルタを作ります。

【関連】
【Natural Language API】テキストから「有害なカテゴリ」を検出する。
【OpenAI】ModerationAPIでテキストから「有害なカテゴリ」を検出する。

「Azure AI Content Safety」とは

「入力テキスト/画像」から、各カテゴリに対する「重大度(深刻度)」 を算出してくれます。

  • 重大度 severity → どのくらい深刻な内容か(0, 2, 4, 6)

料金

主要な機能
機能 内容
Analyze Image 画像を分析
Analyze Text テキストを分析
Analyze Text Jailbreak テキストのジェイルブレイクを分析
Analyze text prompt injection attacks テキストプロンプトインジェクション攻撃を分析

テキスト判定

  • センシティブコンテンツのレベルをカテゴリ別に検出
  • 根拠がない情報を検出【日本非対応】
  • 第三者の著作物や保護されたテキストの検出
  • LLMの生成コードが、すでにGitHubのリポジトリに存在しているかを検出【日本非対応】
  • プロンプトリーキングやJailbreak攻撃、間接攻撃(間接的なセキュリティ侵害)などの検出

画像判定

  • センシティブコンテンツのレベルをカテゴリ別に検出

マルチモーダル判定

  • センシティブコンテンツのレベルをカテゴリ別に検出【日本非対応】
検出カテゴリ
APIカテゴリ 日本語 説明
Hate ヘイトと公平性 - 人種、民族、国籍
- 性別のアイデンティティ グループと表現
- 性的指向
- 宗教
- 個人の外観、身体のサイズ
- 障碍の状態
- 嫌がらせといじめ
SelfHarm 自傷行為 - 摂食障害
- いじめと脅迫
Sexual 性的 - 低俗なコンテンツ
- 売春
- ヌードおよびポルノ
- 迷惑行為
- 児童搾取、児童虐待、チャイルド グルーミング
Violence 暴力 - 武器
- いじめと脅迫
- テロリスト、暴力的な過激主義
- ストーカー行為

(参考: Azure AI Content Safety の危害カテゴリ - Azure AI services | Microsoft Learn

実装の手順

用意するもの

  • AzureのContent Safetyのエンドポイント
  • AzureのContent Safetyのキー

パッケージをインストールする

$ npm install @azure-rest/ai-content-safety

テキスト検出する関数を作る

import ContentSafetyClient, { isUnexpected } from "@azure-rest/ai-content-safety";
import { AzureKeyCredential } from "@azure/core-auth";


// ---------------------------------------------
// テキストから有害コンテンツを検出する
// ---------------------------------------------
export async function analyzeText(text: string) {
    // --- 環境変数からクライアント作成 ---
    const endpoint = process.env.AZURE_CONTENT_SAFETY_ENDPOINT;
    const key = process.env.AZURE_CONTENT_SAFETY_KEY;
    const credential = new AzureKeyCredential(key || "");
    const client = ContentSafetyClient(endpoint, credential);
    // --- テキスト分析 ---
    const analyzeTextParameters = { body: { text: text } };
    const result = await client.path("/text:analyze").post(analyzeTextParameters);
    const resultBody = result.body;
    return resultBody;
}

APIドキュメント

https://learn.microsoft.com/ja-jp/azure/ai-services/content-safety/
https://learn.microsoft.com/ja-jp/azure/ai-services/content-safety/quickstart-jailbreak

APIリファレンス

https://azure-ai-content-safety-api-docs.developer.azure-api.net/api-details#api=content-safety-service-2024-02-15-preview

参考

https://qiita.com/comware_tsasaki/items/4cf26b03d38e26524e60

Discussion