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

モデレーション

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

OpenAI のモデレーションモデルを使うと、テキストや画像に含まれる有害なコンテンツを検出できます。モデレーションエンドポイントで入力を単独で分類することも、レスポンスの生成時にモデレーションスコアを併せて取得することもできます。判定結果を使って、アプリケーションのポリシーを適用してください。たとえば、コンテンツをフィルタリングしたり、リクエストをレビューに回したり、フラグが付いたコンテンツを送信したアカウントに対して措置を講じたりできます。

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

子どもの安全: 児童性的虐待コンテンツ(CSAM)に該当する、またはその疑いがあるコンテンツを Moderation 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 で一次判定を行い、次に categories と category_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

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

テキストと画像