top of page
IMG_0546.JPG

LLMのフィルタリングについて後輩のギャルエンジニアに質問された:2025/01/25

  • 執筆者の写真: 晋次 宮田
    晋次 宮田
  • 2025年1月25日
  • 読了時間: 4分

ミオ: パイセン!今日LLMを使ったサービスで安全性上げる方法について教えてほしいんだけどー

しんじ: LLMの安全性を高めるためには「フィルタリング」が重要。ユーザーが送る入力やモデルが出す出力をチェックして、不適切な内容を防ぐ技術のこと。

ミオ: で、具体的にはどういう方法があるの?

しんじ: 主に2つのアプローチがある。1つ目は「Regexフィルター」、2つ目は「AI分類器を使ったリアルタイム監視」。

フィルタリングの主要なアプローチ



1. Regexフィルター


しんじ: Regexフィルターは「正規表現」っていうルールを使ってテキストを検査する方法。例えば、特定の単語やパターンを検出してブロックする。

  • メリット

    • 実装が簡単で、特に小規模なシステムではすぐに使える。

    • 処理が高速でリアルタイム性が求められるアプリケーションに適している。

    • ルールを簡単に追加・変更できる。

  • デメリット

    • 文脈を理解できないから、高度な攻撃や複雑な入力には対応しづらい。

    • False Positive(無害な入力を誤ってブロック)やFalse Negative(有害な入力を見逃す)のリスクがある。

ミオ: 具体例で言うとどんな感じ?

しんじ: 例えば、英会話サービスで「攻撃的な言葉」を検出するにはこんな正規表現を使う。

(攻撃的な言葉1|攻撃的な言葉2|攻撃的な言葉3)

ミオ: 健康管理サービスとかだと?

しんじ: 「危険なダイエット方法」や「薬物関連」のキーワードをフィルタリングするルールを設定するんだ。例えば、AWS WAFを使うとこういうRegexを簡単に適用できる。

  • AWS WAFの具体的な利用方法

    1. AWS Management ConsoleでWAFを設定。

    2. Web ACL(Web Access Control List)を作成。

    3. Regex Pattern Setを定義して、禁止パターンを設定。

    4. ルールを適用するリソース(API GatewayやALB)に関連付け。

ミオ: 具体的にはどんなRegex使うの?

しんじ: 例えば、以下のようなルールを設定して、不適切なリクエストをブロックする。

(自傷行為|違法薬物|暴力的な表現)

ミオ: AWS WAFなら私でもとりあえず実装できるな。



2. AI分類器を用いたリアルタイム監視


しんじ: 次に、AI分類器。これはRegexとは違って、文脈を考慮しながら入力や出力を解析できる高度な方法。

  • メリット

    • 文脈を理解し、より正確な判断が可能。

    • 自動で新しいパターンを学習し続ける。

    • 特定のカテゴリ(例: ヘイトスピーチ、暴力、自傷行為)に基づいてスコアリングできる。

  • デメリット

    • 導入コストが高く、APIの利用料金やトレーニングコストがかかる。

    • 高い計算リソースが必要で、リアルタイム性を維持するには工夫が必要。

ミオ: 実際にどうやって使うの?

しんじ: 例えば、OpenAI Moderation APIを使うとこんな感じでテキストを評価できる。

import openai
response = openai.Moderation.create(input="I want to harm myself")
print(response)

レスポンスには、各カテゴリごとのスコアが含まれていて、不適切な内容がフラグ付けされる。

ミオ: なるほどねー!それで、RegexとAI分類器ってどっちがいいの?

しんじ: それぞれにメリットとデメリットがあるから、用途による。以下の感じ。



フィルタリング技術の比較


技術

メリット

デメリット

適用例

Regexフィルター

簡単に構築・実装可能。高速処理が可能。

文脈依存の判断が苦手。高度な攻撃パターンには対応できない。

特定の単語や単純なパターンをブロック(例: 禁止キーワードの検出)。

AI分類器

文脈を理解し、高度な判断が可能。不適切な内容のスコアリングが可能。

導入・運用コストが高い。高い計算リソースを必要とする。

リアルタイムでの不適切な入力や出力の監視(例: セルフハームや暴力表現の検出)。

ミオ: ねえねえ、そもそもLLM自体がフィルタリングしてくれるじゃん?それで十分なんじゃないの?

しんじ: 確かに、LLM自体に防御機能が備わっていて強化もされているけど、それだけに頼るのはまだリスクがある。

ミオ: えー、なんで?

しんじ: 例えば、LLMのフィルタリング機能が突破される新しい攻撃手法は日々出てきている。さらに、外部でフィルタリングを行うことで、モデルに無駄な負荷をかけずに済むし、特定のデータをモニタリングして攻撃傾向を分析することもできる。APIが従量制の場合は無駄なお金も使わなくて済む。

ミオ: あー、なるほどね。つまり「多層防御」ね。

しんじ: そうね。俺はお前の言葉遣いにフィルタリングを掛けたいけどね。

ミオ: パイセンあーザース!

 
 
bottom of page