GEMINI LABEN
NANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定ですNANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定です
記事一覧/API / SDK
API / SDK/2026-04-11上級

Gemini API で構築するコンテンツモデレーション本番システム

Gemini API でカスタムコンテンツモデレーションシステムを本番構築する完全ガイド。テキスト・画像のマルチモーダル検査、非同期バッチ処理、Human-in-the-Loop、コスト最適化まで網羅的に解説します。

gemini-api279content-moderation2production105multimodal24safety2python103

プレミアム記事

「刃物の使い方」という一文が、料理レシピの中にあるのか、脅迫めいた投稿の中にあるのか。UGC を扱うサービスのモデレーションで最後まで残るのは、この種の判断です。キーワードマッチングも画像分類も、ここで取りこぼします。

Gemini 2.5 Pro/Flash のマルチモーダル対応と文脈理解は、まさにこの穴を埋めます。専用のモデレーション API(Amazon Rekognition、Microsoft Azure Content Moderator など)に代えて、Gemini でカスタムのモデレーション基盤を組む選択が現実味を帯びてきた理由です。

ただし、組み込みの安全フィルター(safety_settings)だけでは次の要件に届きません。

  • 業界固有の禁止コンテンツ: 医療・金融・教育プラットフォーム独自のコンプライアンス要件
  • カスタム重要度スコアリング: NG ワードの重み付けや段階的な対応フロー
  • マルチモーダル複合判定: テキストと画像を組み合わせた総合評価
  • 監査ログと説明可能性: 「なぜその判定になったか」を記録する必要性

システムアーキテクチャ設計

コアコンポーネント

本番モデレーションシステムは以下の4レイヤーで構成します。

第1層: インジェスト層 ユーザー投稿コンテンツを受け取り、キュー(Redis または Cloud Tasks)に積む非同期バッファです。

第2層: モデレーション処理層 Gemini API を呼び出してコンテンツを分析する Worker プロセス群です。水平スケール可能な設計にします。

第3層: 判定とアクション層 分析結果に基づいて、自動承認/拒否/人間レビュー送りを振り分けるルールエンジンです。

第4層: Human-in-the-Loop 層 境界ケースを人間のモデレーターに送り、その判断をフィードバックとして蓄積するループです。

Gemini モデルの選定

コストと精度を両立するために、二段階モデレーション戦略を採用します。まず Gemini 2.5 Flash でスクリーニングを行い、スコアが境界値に近い場合のみ Gemini 2.5 Pro に昇格させます。Flash は高スループット・低コストで大量処理に適しており、Pro は高精度で複雑な文脈判断が必要な境界ケースに使用します。


テキストコンテンツのモデレーション実装

カスタム安全基準の定義

Gemini API の強みは、System Instructions でビジネス固有の判断基準を自然言語で定義できることです。

import google.generativeai as genai
import json
from enum import Enum
from dataclasses import dataclass
from typing import Optional
 
genai.configure(api_key="YOUR_GEMINI_API_KEY")
 
class ModerationDecision(Enum):
    APPROVED = "approved"
    REJECTED = "rejected"
    REVIEW = "review"
 
@dataclass
class ModerationResult:
    decision: ModerationDecision
    confidence: float          # 0.0〜1.0
    categories: list[str]      # 検出されたカテゴリ
    reason: str                # 判定理由(監査ログ用)
    escalate_to_human: bool    # 人間レビュー要否
 
MODERATION_SYSTEM_PROMPT = """
あなたはコミュニティプラットフォームのコンテンツモデレーターです。
以下の基準でコンテンツを審査し、必ず指定の JSON 形式で応答してください。
 
## 審査基準
 
### REJECTED(即時拒否)
- 実在の個人への脅迫・ハラスメント
- 個人情報(住所・電話番号・クレジットカード番号)の露出
- 違法商品・サービスの宣伝
- 未成年者に不適切なコンテンツ
 
### REVIEW(人間レビュー)
- 政治・宗教に関する煽動的コンテンツ
- 医療・法的アドバイス(専門家確認が必要)
- 判定が難しい境界ケース(confidence < 0.7)
 
### APPROVED(承認)
- 上記に該当しない一般的なユーザー投稿
 
## 応答形式(必ずこの JSON のみ返す)
{
  "decision": "approved|rejected|review",
  "confidence": 0.0〜1.0の数値,
  "categories": ["検出カテゴリのリスト"],
  "reason": "判定理由を1〜2文で"
}
"""
 
def moderate_text(content: str, model_name: str = "gemini-2.5-flash") -> ModerationResult:
    """テキストコンテンツをモデレーションする"""
    model = genai.GenerativeModel(
        model_name=model_name,
        system_instruction=MODERATION_SYSTEM_PROMPT
    )
    
    try:
        response = model.generate_content(
            f"以下のコンテンツを審査してください:\n\n{content}",
            generation_config=genai.GenerationConfig(
                response_mime_type="application/json",
                temperature=0.1,
                max_output_tokens=512
            )
        )
        
        result_data = json.loads(response.text)
        decision = ModerationDecision(result_data["decision"])
        confidence = float(result_data.get("confidence", 0.5))
        
        return ModerationResult(
            decision=decision,
            confidence=confidence,
            categories=result_data.get("categories", []),
            reason=result_data.get("reason", ""),
            escalate_to_human=(
                decision == ModerationDecision.REVIEW or
                confidence < 0.7
            )
        )
    except (json.JSONDecodeError, KeyError, ValueError) as e:
        # パースエラーは安全のため REVIEW に昇格
        return ModerationResult(
            decision=ModerationDecision.REVIEW,
            confidence=0.0,
            categories=["parse_error"],
            reason=f"API レスポンス解析エラー: {str(e)}",
            escalate_to_human=True
        )

このコードのポイントは response_mime_type="application/json" の指定です。Gemini API の JSON モードを使うことで、構造化レスポンスが確実に得られ、パースエラーを大幅に削減できます。temperature を 0.1 に設定することで一貫した判定結果が得られます。

期待される出力例(一般的な投稿の場合):

{
  "decision": "approved",
  "confidence": 0.95,
  "categories": [],
  "reason": "一般的なユーザー投稿であり、有害コンテンツは検出されませんでした。"
}

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
「組み込み安全設定では物足りない」と感じていた開発者が、ビジネス要件に合わせたカスタム有害コンテンツ検出システムを今日から実装できるようになる
テキスト・画像のマルチモーダルコンテンツを非同期バッチで処理する本番対応アーキテクチャと完全なコード実装を手に入れられる
検出精度・処理スループット・コストの3要素を同時に最適化する実践的チューニング戦略と Human-in-the-Loop フローを自社サービスに組み込める
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

API / SDK2026-06-15
外部テキストを Gemini API に渡すときのプロンプトインジェクション対策 — レビューや収集データを安全に処理する防御設計
ユーザーレビューや収集した記事など、信頼できない外部テキストを Gemini API に渡すと間接プロンプトインジェクションの入口になります。信頼境界の隔離・スキーマ拘束・二段階検証・出力サニタイズまで、本番パイプラインに組み込める防御をコード付きで整理します。
API / SDK2026-07-04
Gemini API の英語出力に日本語が『たまに』混ざるとき — 混入率を計測して段階的に締める運用メモ
英語出力を指示したGemini APIが、100回に数回だけ日本語を混ぜてくる——この『たまに』を止められない本当の理由と、混入率をSLOとして計測し、段階的リカバリで本番品質まで締める運用パターンを実装コード付きで整理します。
API / SDK2026-07-02
Gemma 4 ローカル推論と Gemini API の使い分けで月額¥32,000を¥9,000台にした — ハイブリッドルーターの本番設計
月額¥32,000のGemini APIコストを¥9,000台まで下げたハイブリッド推論構成の記録です。ルーティング設計・Python実装・本番の落とし穴に加え、2026年7月のGemma 4 API提供開始を踏まえた構成見直しの指針もまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →