LLMがルールベースのモデレーションを上回る理由
皮肉。ドッグホイッスル。ブランド文脈の誤用(「この製品は好きだが、カスタマーサービスは嫌いだ」)。多言語のニュアンス。画像単体やキャプション単体なら通過するが、組み合わせると通過しないケース。ルールベースのモデレーションが処理できるのは、Trust & Safetyのケースの約60%にすぎません。難しい40%こそLLMが得意とする領域です。LLMは文脈、意図、文字どおりの言葉と意味の隔たりを理解します。
現代のモデレーションパイプラインは両方を組み合わせます。簡単な60%(正規表現、URLブロックリスト、ハッシュ照合CSAM)にはルールを使い、判断が必要な40%にはLLMを使います。
テキストモデレーション――Claude Haiku 4.5
Haikuは安価で高速なため、大量モデレーションに最適です。
import json
from openai import OpenAI
client = OpenAI(api_key="sk-kn-...", base_url="https://api.kunavo.com/v1")
POLICY = """You are a content moderator. Judge the content against these
categories: toxic, spam, harassment, sexual, violence, self_harm, deception,
brand_unsafe. Be conservative — when in doubt, flag for human review."""
# Claude enforces a json_schema response_format; json_object it does not.
VERDICT = {
"type": "object",
"properties": {
"verdict": {"type": "string", "enum": ["allow", "review", "block"]},
"categories": {"type": "array", "items": {"type": "string", "enum": [
"toxic", "spam", "harassment", "sexual", "violence",
"self_harm", "deception", "brand_unsafe"]}},
"confidence": {"type": "number"}, # 0.0-1.0
"rationale": {"type": "string"}, # one sentence
},
"required": ["verdict", "categories", "confidence", "rationale"],
"additionalProperties": False,
}
RESPONSE_FORMAT = {"type": "json_schema",
"json_schema": {"name": "verdict", "schema": VERDICT}}
def moderate_text(text: str) -> dict:
resp = client.chat.completions.create(
model="claude-haiku-4-5", # cheap + fast for high-volume
messages=[
{"role": "system", "content": POLICY},
{"role": "user", "content": text},
],
response_format=RESPONSE_FORMAT,
max_tokens=200,
)
return json.loads(resp.choices[0].message.content)1回あたりの費用:約$0.0001~0.0003(入力長による)。月100万件のモデレーションイベントでは約$100~300です。商用モデレーションAPI(Perspective:約$0.0005/回、Hive:約$0.002/回、Sightengine:$0.003/回)と比べると、LLMベースのモデレーションは同程度または安価であり、文脈理解は大幅に優れています。
画像モデレーション――Claude Haiku 4.5
画像の場合、Claude Haiku 4.5はカタログで最も安価なビジョンモデルで、投稿処理に組み込めるほど高速です。
def moderate_image(image_url: str) -> dict:
resp = client.chat.completions.create(
model="claude-haiku-4-5", # vision + cheap
messages=[
{"role": "system", "content": POLICY},
{"role": "user", "content": [
{"type": "text", "text": "Moderate this image:"},
{"type": "image_url", "image_url": {"url": image_url}},
]},
],
response_format=RESPONSE_FORMAT,
max_tokens=200,
)
return json.loads(resp.choices[0].message.content)画像1枚あたりの費用:約$0.001~0.003。1日の投稿件数が10万件のソーシャルプラットフォームで、テキストと画像を組み合わせてモデレーションすると月約$3,000~9,000です。
3段階判定パターン
- allow:違反の可能性が低い→即時公開
- review:可能性が中程度→人間のモデレーター用キューへ。LLMの判定の大半がここに入り、レビュー費用も低い
- block:重大な違反(CSAM、信頼できる脅迫、晒し)の可能性が高い→拒否+ログ記録+エスカレーション
ゼロトレランスのカテゴリでない限り、LLMの判定だけで自動ブロックしないでください。誤検知はユーザーを失わせます。グレーゾーンは人間に判断させてください。
代替手段との比較
| ツール | 100万回あたりの費用 | 強み |
|---|---|---|
| Perspective API(Google) | 無料(レート制限あり) | 英語の有害性スコアリング |
| Hive Moderation | ~$2,000 | 画像・動画・音声――強力 |
| Sightengine | ~$3,000 | 画像専門 |
| OpenAI Moderation | 無料 | テキストのみ、カテゴリが限定的 |
| Kunavo + Haiku | テキスト約$100~300 / 画像約$1,000 | 文脈対応+多言語+カスタムポリシー |
LLMの利点はポリシーをカスタマイズできることです。HiveとSightengineには固定カテゴリがあります。Claudeなら、英語でも他の言語でもポリシーを記述でき、それに適応します。新しい制限カテゴリを追加する場合は、システムプロンプトを更新するだけです。モデルの再トレーニングは不要です。
コンプライアンスの観点
- DSA(EUデジタルサービス法):プラットフォームにモデレーションの透明性レポート公開を義務付けています。上記JSONのrationaleフィールドが記録対象です。
- CSAM:LLMを経由させないでください。ハッシュ照合(NCMEC、IWF)を使用します。既知の違法コンテンツにはLLMは適切なツールではありません。
- モデレーション対象コンテンツ内のPII:個人DM・メッセージを扱う場合は、LLMに送信する前にハッシュ化または仮名化してください。コンプライアンスガイドを参照してください。
開始するには無料サインアップを行い、その後/docs/chatリファレンスで、各モデルファミリーに対してresponse_formatが適用する内容を確認してください。
よくある質問
AIコンテンツモデレーションの1回あたりの費用はいくらですか?
Claude Haiku 4.5によるテキストのモデレーションは1回あたり約$0.0002、画像とテキストの判定は同モデルで約$0.001です。HiveやSightengineと同程度か、それより安価です。
LLMはルールベースのモデレーションシステムより優れていますか?
明確なコンテンツなら、どちらも機能します。違いが出るのは、皮肉、隠語による差別表現、ブランド文脈の誤用、多言語のニュアンスといった判定が難しい40%のケースで、LLMによるモデレーションはルールベースより大幅に優れています。
AIモデレーションシステムはコンテンツを自動ブロックすべきですか?
許容度ゼロのカテゴリに限るべきです。3段階の判定方式では、許可を公開へ、レビューを人の確認キューへ、ブロックを却下とログ記録へ振り分けるため、判断が難しいケースは人が対応できます。
モデレーションの精度を継続的に高めるにはどうすればよいですか?
人の確認キューでの判断を毎週見直し、誤分類を特定してシステムプロンプトを更新してください。モデルの再トレーニングは必要ありません。