🗂

Azure OpenAI Serviceのコンテンツフィルタをオフにしてみる(中編)

2024/12/18に公開

qiitaのAdvent Calender「Microsoft Azure Advent Calendar 2024」の17日目の記事として公開しました。
https://qiita.com/advent-calendar/2024/azure
(本当は1日遅れだったけど空いてたので)

はじめに

Azure OpenAI(AOAI)サービスではデフォルトで「コンテンツフィルタ」という機能が有効になっており、これをオフにすることはできません。この機能をオフにするためには、Microsoft社に申請が必要になります。

今回、企業で使うと想定した時に「オフにしたらどういう振る舞いになるのか?」「オフになって運用されている危険なLLMリソースが存在しないかチェックしたいな?」といった発想から、コンテンツフィルタ機能をオフにして諸々検証してみることにしました。

以下の記事「前編」では、オフにするための申請まで行いました。
https://zenn.dev/tomot/articles/3137700208c055

この記事では、オフにした後のAOAIサービスの振る舞いをチェックしていきます。

申請承認

前回の記事は申請して完了していました。さて結果はどうだったか…

じゃん!

なんと半日くらいで承認されました。(10 business daysとは…?)
ともあれ、それでは早速検証してみます。

コンテンツフィルタの設定

まず、Azure AI Foundryからモデルの「デプロイ」の設定を見てみます。
「コンテンツフィルター」の設定値があるのでここで無効を…選びたかったのですが、どうやらそういう使い方ではないようです。

設定は「コンテンツフィルター」作成時に行います。

名前の設定

正直何でもよいですが、間違って使わないように分かりやすい名前を付けておきましょう。
今回は無効感のあるフィルター名にしました。

入力フィルター

デフォルトの入力値は以下のようになっています。

「注釈付けとブロック」のトグルからオフにしてみましょう。

あっさりですがこれで入力に対するコンテンツフィルタはオフになります。

出力フィルター

出力に対しても、入力と同じような設定値となっています。

同じようにオフにしてみましょう。

なお、出力の方には、ストリーミングモードの設定があります。これは、よくあるBotのUIで実装されている、「発話内容が徐々に表示されていくモード」で使うときの設定ですね。

デプロイ(オプション)

既存のLLM(基盤モデル)に対して、作成したコンテンツフィルタをそのまま適用することができます。
大した手間ではないですが、せっかくなので今回は適用してみました。

確認画面を挟んで、以上で設定終了です。

コンテンツフィルタオン/オフでの挙動の違い

それでは簡単にテストしてみます。

コンテンツフィルタ オン

普通の会話


まぁ、答えてくれます。

ジェイルブレイク

システムプロンプトを無視させるようなことを意図して、ジェイルブレイクにありがちな命令をしてみます。

ちゃんと、コンテンツフィルタでブロックされました。

自傷行為などのカテゴリフィルタ

爆弾の作り方などもよく例に挙げられますが、今回は毒を盛る方法を聞いてみました。

自傷行為・暴力性などのカテゴリで検知されたようです。しっかりブロックされます。

コンテンツフィルタ オフ

普通の会話

普通に答えてくれますので、割愛。

ジェイルブレイク

先ほどと同じ質問をしてみます。

特にエラー無く受け入れられました。

自傷行為などのカテゴリフィルタ

なんと、コンテンツフィルタではブロックされませんでしたが、LLM自体がこのような話題は答えないように訓練されているようです。

ということで、一ひねりして聞いてみます。

無事?聞き出すことが出来てしまいました。

おわりに

AOAIのコンテンツフィルタをオフにし、その時の挙動を確認しました。
検証を通して、コンテンツフィルタをオフにする申請はあっさりと通ってしまい、簡単に解除できることが分かりました。
責任あるAIを実現するためには、基本的に「コンテンツフィルタ」はONにして使うべき機能かと思います。
開発者がいたずらに(あるいはウッカリで)フィルタを解除してしまわないように、何かしら対策が必要なのかなぁというのが管理者目線での感想です。
「中編」はここまでとし、「後編」でその方法を考えてみたいと思います。

Discussion