For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
メインナビゲーション

モデレーション

テキストや画像に含まれる有害なコンテンツを特定します。

OpenAI のモデレーションモデルを使用して、テキストや画像に含まれる有害なコンテンツを検出できます。モデレーションエンドポイントで入力を単独で分類したり、生成レスポンスとともにモデレーションスコアをリクエストしたりできます。その結果を使って、コンテンツのフィルタリング、リクエストのレビューへの振り分け、フラグが付いたコンテンツを送信したアカウントへの対応など、アプリケーションのポリシーを適用します。

omni-moderation-latest モデルは、テキストと画像の入力を受け付けます。音声は分類しません。モデレーションエンドポイントは無料で利用でき、画像ファイルは最大 20 MB まで対応しています。

子どもの安全: 児童性的虐待コンテンツ(CSAM)に該当することが確認されているものや、その疑いがあるものをモデレーション API に送信しないでください。この API は CSAM の検出や取り扱いを目的として設計されておらず、子どもの安全を守るための専用の対策に代わるものではありません。CSAM の防止、検出、対応、通報の手順については、CSAM に関するガイダンスをご覧ください。

モデレーションワークフローの選択

ワークフロー使用する場面
生成コンテンツのモデレーションアプリケーションで Responses API または Chat Completions API を使ってテキストを生成し、モデレーションの判断材料が必要な場合
入力の単独分類アプリケーションでモデルのレスポンスを生成せずに、テキストや画像を分類する必要がある場合
モデレーション結果の読み方アプリケーションでフラグ、カテゴリー、スコア、適用対象の入力タイプを解釈する必要がある場合
対応カテゴリーの確認どの有害コンテンツのカテゴリーがテキスト、画像、またはその両方に適用されるかを、アプリケーションで把握する必要がある場合

生成コンテンツのモデレーション

アプリケーションで生成テキストとモデレーションスコアの両方が必要な場合は、生成リクエストの最上位に moderation オブジェクトを渡します。モデレーション用のリクエストを別途送信しなくても、API はモデルへの入力と生成出力のモデレーションスコアを返します。

モデルは通常どおり生成を行います。出力をユーザーに表示したり、後続の処理を実行したりする前に、モデレーション結果を確認してください。

レスポンスの作成時に moderation.model を設定します。

モデレーションスコア付きのレスポンスの生成
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-6-astra",
    input=[
        {
            "role": "user",
            "content": (
                "A user asks for instructions to make a harmful weapon. "
                "Draft a brief refusal and offer a safer alternative."
            ),
        }
    ],
    moderation={"model": "omni-moderation-latest"},
)

input_moderation = response.moderation.input
output_moderation = response.moderation.output
if input_moderation.type == "error":
    raise RuntimeError(input_moderation.message)
if output_moderation.type == "error":
    raise RuntimeError(output_moderation.message)

print(input_moderation.flagged)
print(output_moderation.flagged)

Responses API は、入力の moderation_result オブジェクトを response.moderation.input に、出力の moderation_result オブジェクトを response.moderation.output に返します。

インラインのモデレーション結果は、単独のモデレーション結果と同じカテゴリーフィールドを使用します。まず flagged で一次判定を行い、その後、ログ記録、振り分け、監査証跡、人によるレビューのキューなどの用途に応じて categoriescategory_scores を確認します。拒否やその他の安全性に配慮したレスポンスであっても、有害なコンテンツに言及している場合はフラグが付くことがあります。モデレーションスコアは、自動的にブロックするかどうかの決定としてではなく、アプリケーションのポリシーを適用するための判断材料として扱ってください。

アプリケーションでモデレーションの失敗に対応する必要がある場合は、スコアを読み取る前にモデレーション結果の型を確認してください。モデレーションの処理が完了できない場合、該当する入力または出力のモデレーションフィールドには、スコアの代わりにエラーが含まれることがあります。

ツール呼び出しを伴うリクエストでは、会話内容に含まれるツール呼び出しの引数とツールの出力がモデレーションの対象になります。ツール名、ツールの説明、ツールのスキーマ、レスポンス形式のスキーマは対象になりません。

生成レスポンスをストリーミングする場合、モデレーションスコアは生成出力の全体が揃った後に届きます。部分的な出力の差分には含まれません。

入力の単独分類

モデルのレスポンスを生成せずにテキストや画像の入力を分類するには、モデレーションエンドポイントを使用します。以下のタブでは、OpenAI ライブラリomni-moderation-latest モデルの使用方法を示します。

テキスト入力の分類情報の取得
from openai import OpenAI

client = OpenAI()

response = client.moderations.create(
    model="omni-moderation-latest",
    input="...text to classify goes here...",
)

print(response)

モデレーション結果の読み方

以下は、戦争映画の 1 フレームを切り出した画像に対する出力例の全体です。モデルは画像内に暴力の兆候を検出し、violence カテゴリーのスコアは 0.8 を超えています。

{
  "id": "modr-970d409ef3bef3b70c73d8232df86e7d",
  "model": "omni-moderation-latest",
  "results": [
    {
      "flagged": true,
      "categories": {
        "sexual": false,
        "sexual/minors": false,
        "harassment": false,
        "harassment/threatening": false,
        "hate": false,
        "hate/threatening": false,
        "illicit": false,
        "illicit/violent": false,
        "self-harm": false,
        "self-harm/intent": false,
        "self-harm/instructions": false,
        "violence": true,
        "violence/graphic": false
      },
      "category_scores": {
        "sexual": 2.34135824776394e-7,
        "sexual/minors": 1.6346470245419304e-7,
        "harassment": 0.0011643905680426018,
        "harassment/threatening": 0.0022121340080906377,
        "hate": 3.1999824407395835e-7,
        "hate/threatening": 2.4923252458203563e-7,
        "illicit": 0.0005227032493135171,
        "illicit/violent": 3.682979260160596e-7,
        "self-harm": 0.0011175734280627694,
        "self-harm/intent": 0.0006264858507989037,
        "self-harm/instructions": 7.368592981140821e-8,
        "violence": 0.8599265510337075,
        "violence/graphic": 0.37701736389561064
      },
      "category_applied_input_types": {
        "sexual": ["image"],
        "sexual/minors": [],
        "harassment": [],
        "harassment/threatening": [],
        "hate": [],
        "hate/threatening": [],
        "illicit": [],
        "illicit/violent": [],
        "self-harm": ["image"],
        "self-harm/intent": ["image"],
        "self-harm/instructions": ["image"],
        "violence": ["image"],
        "violence/graphic": ["image"]
      }
    }
  ]
}

JSON レスポンスには、入力にどのカテゴリーのコンテンツが含まれるかと、各カテゴリーに対するモデルの確信度を示すフィールドが含まれます。

出力カテゴリー 説明
flagged

モデルがコンテンツを潜在的に有害と分類した場合は true、 それ以外の場合は false に設定されます。

categories

カテゴリーごとの違反フラグを格納した辞書です。 各カテゴリーの値は、モデルがそのカテゴリーの違反を検出した場合は true、 それ以外の場合は false になります。

category_scores

カテゴリーごとのスコアを格納した辞書です。各スコアは、入力にそのカテゴリーのコンテンツが含まれているというモデルの確信度を表します。値は 0 から 1 の範囲で、値が大きいほど確信度が高いことを示します。

category_applied_input_types

カテゴリースコアの適用対象となる入力タイプが含まれます。 たとえば、violence/graphic カテゴリーが画像とテキストの両方の入力に適用される場合、 violence/graphic プロパティは ["image", "text"] に設定されます。

モデレーションエンドポイントの基盤となるモデルは、継続的にアップグレードする予定です。 そのため、category_scores に依存するカスタムポリシーは、 時間の経過とともに再調整が必要になる場合があります。

対応カテゴリーの確認

以下の表では、モデレーションエンドポイントが検出できるコンテンツのカテゴリーと、各カテゴリーが対応する入力タイプを説明します。

「テキストのみ」と記載されているカテゴリーは、画像入力に対応していません。 omni-moderation-latest モデルにテキストを添えずに画像のみを送信すると、 画像入力に対応していないカテゴリーのスコアは 0 になります。 画像ファイルの上限は 20 MB です。

カテゴリー説明入力
harassment

対象を問わず、嫌がらせに当たる言葉を表現したり、その使用を扇動または助長したりするコンテンツです。

テキストのみ
harassment/threatening

対象を問わず、その対象への暴力や深刻な危害も含む嫌がらせのコンテンツです。

テキストのみ
hate

人種、ジェンダー、民族、宗教、国籍、性的指向、障害の有無、カーストに基づく憎悪を表現、扇動、助長するコンテンツです。保護対象ではない集団(チェスプレイヤーなど)に向けた憎悪のコンテンツは、嫌がらせに分類されます。

テキストのみ
hate/threatening

人種、ジェンダー、民族、宗教、国籍、性的指向、障害の有無、カーストに基づいて標的とされた集団への暴力や深刻な危害も含む、憎悪のコンテンツです。

テキストのみ
illicit

違法行為の実行方法について助言や指示を与えるコンテンツです。「万引きの方法」のような表現がこのカテゴリーに該当します。

テキストのみ
illicit/violent

illicit カテゴリでフラグが付くコンテンツのうち、 暴力や武器の調達への言及も含むものです。

テキストのみ
self-harm

自殺、自分の体を切る行為、摂食障害などの自傷行為を助長、奨励、または描写するコンテンツです。

テキストと画像
self-harm/intent

自殺、自分の体を切る行為、摂食障害などの自傷行為を行っている、または行う意思があると発言者が表明するコンテンツです。

テキストと画像
self-harm/instructions

自殺、自分の体を切る行為、摂食障害などの自傷行為を奨励したり、そうした行為の方法を指示、助言したりするコンテンツです。

テキストと画像
sexual

性行為の描写など、性的興奮を引き起こすことを目的とするコンテンツ、または性的サービスを宣伝するコンテンツです(性教育や性的な健康に関するものを除きます)。

テキストと画像
sexual/minors

18 歳未満の人物が含まれる性的なコンテンツです。

テキストのみ
violence 死亡、暴力、または身体的な負傷を描写するコンテンツです。 テキストと画像
violence/graphic

死亡、暴力、または身体的な負傷を生々しく詳細に描写するコンテンツです。

テキストと画像