最新情報！Azure AI Content Safetyについて。

**Azure AI Content Safety**について2023/11にアップデートされた最新情報を踏まえて、まとめてみました。

参考：Azure OpenAIの最新情報はこちらを参照しています↓
https://learn.microsoft.com/en-us/azure/ai-services/openai/whats-new

Build 2023でも紹介され、**Azure AI Content Safety**についてすでに聞いたことがある方も多いかもしれません。LLM開発を進めていく上で**Responsible AI**の観点で非常に重要な機能の一つになりますので、今一度復習したい方、最新機能をキャッチアップしたい方には必見の記事です！

# そもそもResponsible AIとは？
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175907/149309d9-4e75-94cc-56a0-b14a55e77809.png">

マイクロソフトは2018年に、AIに関する六つの基本原則を提唱しました。
公平性、信頼性と安全性、プライバシーとセキュリティ、包括性、透明性、アカウンタビリティの六つです。

そして、これらの原則を実践に移すための、四つの重要な分野をあげています。 
1. 進展と説明責任を実現する、基盤のガバナンス構造 
2. 責任ある AI の要件を標準化するルール 
3. 人間中心のマインドセットを促すトレーニングとプラクティス 
4. 実践のためのツールとプロセス 

つまり、原則を実践するために第一に、ガバナンスが必要であり、第二に、AIの要件を標準化するためのルールが必要であり、その実践をするためのトレーニングとベストプラクティスが必要であり、最終的には実践のためのツールが必要であると考えられています。

今回はこの中でも4つ目の**ツール**について詳しく紹介していきます。

# Azure AI Content Safetyとは？
ここではResponsible AIを支える一つの重要なツールである、**Azure AI Content Safety**について紹介していきます。

Azure AI Content Safetyと一言で言っても、実際には二つのものを指しており、一つ目はAzure AI Studioの中に一つの機能として存在している、**AOAIコンテンツフィルタリング機能**とサービス単体としての**Azure AI Content Safety**です。AOAIコンテンツフィルタリング機能については2023/11にPreviewになっており、Azure AI Content Safetyについては2023/10にGAしました。
参考：https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/announcing-general-availability-of-azure-ai-content-safety/ba-p/3956309

:::note
**AOAIコンテンツフィルタリング機能とAACS（Azure AI Content Safety）の違いは何か？**
AOAIコンテンツフィルタリングはAACSによって動かされているので、モデルの性能やモデレーションの結果はまったく同じです。しかし、それらは異なるシナリオに適しています。簡単に言えば、AOAIユーザーはAOAIに組み込まれたコンテンツフィルタリング機能を直接使うことが推奨されています。反対に、非AOAIユーザーの場合にはAACSを使うことが推奨されています。AACSを使用するシナリオとしては、他のオープンソースのLLMモデル、ゲーム業界やソーシャルメディア業界などのユーザー生成コンテンツのシナリオなどを想定しています。
:::

Azure AI Content Safetyは、より安全なAIソリューションを作成するのに役立ちます。最先端のAIモデルを使って、**憎悪的、暴力的、性的、自傷的なコンテンツを検出し、重大度スコアを割り当てること**ができます。Azure AI Content Safetyは、既定のものだけではなく、カスタマイズをすることができるので、それぞれのユーザー/企業のポリシーを実施するのに役立つようにカスタマイズできます。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175907/f6a0025b-b177-2f7a-a4c2-267f06ed3d7c.png">

Azure AI Content Safetyを用いることで、有害なコンテンツを識別してフラグを立てることができ、これはユーザーが生成したプロンプトとAIが生成した応答の両方に適用されます。もしどちらかに違反が検出された場合には、生成プロセスが停止し、違反レベルに応じた動作を指定することができます。（人間のモデレーターへの連絡、エラー生成など）

## 特徴
* ニュアンスや文脈を扱うことができる
→暴力的な文言について、具体的な文言をすべて指定をすることなく、プロンプトや生成された文章の意味と文脈を読み解き、暴力的な文言ではないかを解析することができます。
<br>

* 多言語への対応
→プロンプトが何語で入力されたとしても、何語でAIが回答を生成したとしても、同じポリシーでAzure AI Content Safetyを使うことができます.
<br>

* 画像への対応もしています！
→Azure AI Content Safetyは最先端のコンピュータビジョン技術を進化させたMicrosoftのFlorenceファウンデーションモデルによって動かされています。Florenceは、何十億ものテキスト・画像のペアで訓練されており、さまざまなコンピュータビジョンのタスクに簡単に適応できます。これにより、Azure AI Content Safetyは、リアルタイムで画像を識別することができます。

## 実際の動きを見てみる！
### 方法① AOAIコンテンツフィルタリング機能
Ignite 2023でPublic Previewされました、Azure AI Studioの中で新しいプロジェクトを作成し、Content filtersを選択すると、下記のポップアップが出てきます。ここでこのプロジェクトに対してのコンテンツフィルターを作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175907/9f476fa3-d193-5065-5dbf-e71468edf088.png)

こちらの画像を見て頂くとわかるように、それぞれの4つのカテゴリーについてブロックするレベルを選択することができます。

:::note
**2023.11 update情報**
すべての顧客は、コンテンツ フィルターをより厳密に変更できます (たとえば、既定よりも低い重大度レベルでコンテンツをフィルタリングする場合など)。 コンテンツ フィルターを部分的または完全にオフにする場合は、承認が必要です。 管理対象のお客様は、フォームを介してのみ、完全なコンテンツ フィルター制御を適用できます。
参照：https://learn.microsoft.com/ja-jp/azure/ai-services/openai/how-to/content-filters
:::

Nextを選択すると、下記の画面に遷移します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175907/54bbc9d1-b123-c09e-5e50-8553f2e12727.png)

こちらの画面では、2023.11に新しく追加された機能を確認することができます。
新しく追加された3つの機能についてみていきます。

* **脱獄リスク検出**: 脱獄攻撃は、システム メッセージに設定されたルールを回避または中断するようにトレーニングされた動作を生成 AI モデルに示させる目的で設計されたユーザー プロンプトです。 ユーザーがモデルの脆弱性を悪用し、その安全メカニズムを迂回して、AIを挑発して制限された動作を示させようとする意図的な試みを防ぐための機能になります。ジェイルブレイク攻撃は、LLMを挑発して、システムメッセージで設定されたルールを回避したり破ったりするように訓練された行動を示すように設計されています。このような攻撃は、複雑なロールプレイから安全目標の微妙な破壊までさまざまです。脱獄リスク検出モデルは省略可能 (既定ではオフ) で、注釈とフィルター モデルで使用できます。 これはユーザー プロンプトで実行されます。
<br>

* **保護済み素材テキスト**: 大規模言語モデルによって出力される可能性のある既知のテキスト コンテンツ (曲の歌詞、記事、レシピ、一部の Web コンテンツなど) を記述するものです。LLMが著作権で保護されたコンテンツや専有コンテンツを複製または模倣することを検出および防止することを目的として、保護された素材検出機能が追加されました。 保護済み素材テキスト モデルは省略可能 (既定ではオフ) で、注釈とフィルター モデルで使用できます。 これは LLM の完了時に実行されます。
<br>

* **保護済み素材コード**: 保護済み素材コードは、ソース リポジトリを適切に引用することなく大規模言語モデルによって出力される可能性のある、パブリック リポジトリからの一連のソース コードと一致するソース コードを記述するものです。 保護済み素材コード モデルは省略可能 (既定ではオフ) で、注釈とフィルター モデルで使用できます。 これは LLM の完了時に実行されます。

:::note warn
現在上記の2つの機能（保護済み素材テキスト、保護済み素材コード）については、英語のみに対応しています
:::

### 方法②　AACS（Azure AI Content Safety）
Azure OpenAIではないモデルを使用する方向けには、AACS（Azure AI Content Safety）を用意しています。Azure AI Content Safety を使うと、アプリケーションやサービス内の有害なユーザー生成コンテンツや AI 生成コンテンツを検出できます。 Azure AI Content Safety には、有害な素材を検出できるテキストと画像の API が含まれています。 また、さまざまなモダリティで有害なコンテンツを検出するサンプル コードを表示、探索、試用できる対話型の Content Safety Studio も用意されています。

まずこちら（https://contentsafety.cognitive.azure.com/ )にアクセスください。

そうすると下記のようなページが出てきますので、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175907/1da15ec4-cf96-d1d5-db2d-207e4c0d6c98.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175907/9a46b063-ddd0-e858-e83b-9976c221e201.png)


方法①で紹介した機能を、同じように使用することができます。

参考：https://learn.microsoft.com/ja-jp/azure/ai-services/content-safety/overview

:::note warn
現在上記の2つの機能（保護済み素材テキスト、保護済み素材コード）については、coming soonになっています。（AOAIコンテンツフィルタリング機能では既に使用することが可能になっています）
:::

# 最後に
Azure AI Content Safetyへの理解がこの記事を通して少しでも深まっていましたら幸いです。一つ最後に伝えたいことはこの機能を利用すればAIの安全性がすべて担保されるわけではありません。Azure OpenAI Serviceにプライベートエンドポイントからのみの接続を許可するなど、AIアプリケーション自体の構成でも安全性を配慮したうえで、今回紹介したAzure AI Content Safetyも使用する必要がある点についても覚えておきたいと思いました。