3行でいうと

  • 公式の部品は、有害な内容の分類(OpenAIのモデレーション、Geminiの安全設定)、ルールを束ねた設定(BedrockのGuardrails)、自分で組む検査(小さいモデルによる判定、Agents SDKのガードレール)に分かれます。
  • OpenAIは、スコアを自動の遮断の判断にしないように書き、Anthropicは、複数の対策を層にして重ねるように書いています。検査だけで守りきれると書いた文書は、僕らが読んだ範囲にはありません。
  • 設計で決めることは、検査を置く場所(入力、出力、道具の呼び出し)、検査が終わるまで待つか並べて走らせるか、検査自体が失敗したときの扱い、の3つです。

この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書を読んでまとめたもので、実際に使って確かめた記録ではありません。情報は2026年10月22日に確認しました。変わることがあります。

先に結論

公式の部品を並べる

部品 何をするか 公式が書いている主な点
OpenAIのModeration API 文章と画像を、有害さの13分類で判定する 無料。結果は目安で、自動の遮断の判断にはしない
GeminiのSafety settings 分類ごとに、遮断する確率の基準を決める 追加のフィルターは既定でオフ(2.5以降)。一部の保護は常時
Amazon Bedrock Guardrails 内容、話題、語句、個人情報、根拠の確認などを、設定として束ねる 機微情報の検出は確率的
Anthropicの検査の案内 小さいモデル(Haiku 5.5)で入力を先に判定する 判定を決まった形で受け取る。検査の拒否も遮断として扱う
OpenAI Agents SDKのガードレール 入力、出力、道具の呼び出しの前後に、自分の検査を差し込む 速くて安いモデルで検査し、高いモデルを止める考え方

検査を置く場所

入力、出力、道具の呼び出し

OpenAIのAgents SDKの文書によると、検査は3か所に置けます。入力の検査は、ユーザーの入力を調べ、最初のエージェントでだけ動きます。出力の検査は、最後の答えを出すエージェントが終わった後に動きます。道具の検査は、自分で定義した関数の道具を呼ぶたびに動きます。

ここに、設計上の穴が書かれています。入力と出力の検査は、途中のエージェントを対象にしません。道具の検査は、エージェントへの引き継ぎ(ハンドオフ)や、OpenAIが用意した道具(ホスト型の道具)、組み込みの実行用の道具は対象外です。つまり、「検査を付けたつもり」の外側が、構成によってはあります。

「道具の結果」を検査する

Anthropicの文書は、利用者は信頼できるが、AIが読む第三者の内容(道具の結果など)に悪意のある指示が混ざる場合を、別の脅威として扱っています。対策として、次の点が挙げられています。

「間接インジェクション」の考え方そのものは、別の記事でも扱っています。

止めるか、待つか:並べるか

OpenAIのAgents SDKは、入力の検査の動かし方を2つに分けています。既定は並列で、検査をエージェントと同時に走らせます。待ち時間は最小ですが、検査が引っかかったときには、エージェントがすでにトークンを使ったり、道具を動かしたりしている場合があります。もう1つは、検査が終わるまでエージェントを始めない方法です。引っかかれば、費用も副作用も出ません。代わりに、始まるまでの待ち時間が増えます。

OpenAIの別の文書(Latency optimization)にも、モデレーションのように結果がほぼ決まっている確認は、本命の処理と同時に始めて、結果が予想と違えば本命を取り消す、という書き方が載っています。

モデレーションAPIは、ストリーミング(少しずつ表示する方式)の場合、スコアは出力が全部そろってから届き、途中の断片には付かない、と書かれています。

見立てです。ここは、「失敗の重さ」で決めるのが分かりやすいと思います。メールの送信や支払いのように、取り消せない作業につながる入力は、先に検査を終えてから進める。チャットの返事のように、あとで引っ込められるものは、並べて待ち時間を優先する。公式の文書は、この判断基準を書いてはいません。

検査の結果をどう扱うか

スコアは「信号」で、判決ではない

OpenAIのModeration APIの文書は、スコアを、自分の方針のための信号として使い、自動で遮断する判断にはしないように、と書いています。また、安全に配慮した返事や、拒否の文章でも、有害な話題に触れていれば「フラグあり」になりうる、と書いています。モデルが更新されると、スコアの基準が変わる可能性もあります。自分で閾値を決めた場合は、見直しが必要です。

Geminiの安全設定は、遮断が「害の確率」に基づき、「害の重さ」ではないと書いています。確率が低くても、重い内容がありうる、という注意です。

検査自体が失敗する

Anthropicの文書には、検査用の小さいモデルが、検査の依頼そのものを拒否することがある、と書かれています。その場合の拒否(refusal)は、有害の判定として扱うように、とあります。OpenAIの文書は、モデレーションの結果が、スコアの代わりにエラーになることがあると書いています。Agents SDKでは、検査の関数が例外を出した場合は、「却下」とは見なされません。

つまり、「検査が動かなかったとき、通すのか、止めるのか」を、あらかじめ決めておく必要があります。これは公式が答えを書いている点ではなく、設計の宿題です。

止めたあとに残るもの

Agents SDKの文書は、出力の検査で却下されたとき、却下された最終出力は保存されない、と書いています。道具の結果がそのまま最終出力になって却下された場合は、置き換えの文言(プレースホルダー)が残ります。ただし、関数を呼んだときの引数などは残ります。そこに、却下した出力と同じ情報が入っていることがありえます(僕らの読みです)。止めたつもりでも、情報が別の場所に残りうる、という注意です。

OpenAIのModeration APIの仕様(公式の記載)

OpenAIの文書(2026年10月22日に読んだ時点)によると、次のとおりです。

  • モデルはomni-moderation-latest。文章と画像を受け付け、音声は分類しません。画像は20MBまで。利用は無料です。
  • 分類は13個で、文章のみが7つ、文章と画像の両方が6つです。分類の名前は、公式の一覧で確認してください。
  • 結果は、flagged(真偽)、categories(分類ごとの真偽)、category_scores(0〜1)、category_applied_input_typesです。
  • 道具を使うときのモデレーションは、道具の引数と結果を調べますが、道具の名前、説明、スキーマは調べません。
  • 児童性的虐待の素材(CSAM)の疑いがあるものは、このAPIに送らないこと、が明記されています。
Geminiの安全設定とBedrock Guardrailsの仕様(公式の記載)

Gemini(Google、2026年10月22日に読んだ時点)

  • 調整できる分類があります。今回取得した表では5つで、ジェイルブレイクの分類も含まれていました(数と名前は公式の一覧で確認してください)。ほかに、調整できない常時の保護があります。
  • 害の確率は4段階あり、遮断の基準にもそれぞれ名前が付いています(名前は公式のページで確認してください)。
  • 基準を決めない場合の既定は、Gemini 2.5以降のモデルではOFFです。
  • 遮断の見つけ方:今回取得したページ(Interactions APIの説明)では、入力か出力が遮断されるとHTTP 400のエラーになり、エラーのcode(safety、jailbreak、prohibited_content、blocklistなど)で理由が分かる、と書かれています。blockReasonやfinishReasonの説明は、このページでは確認できませんでした。

Amazon Bedrock Guardrails(AWS、2026年10月22日に読んだ時点)

  • 部品は6つあります。内容フィルター、拒否する話題、語句フィルター、機微情報フィルター、根拠の確認などです(全部の名前と細目は、公式の一覧で確認してください)。
  • 「Classic」と「Standard」の2つの段階があります。
  • ApplyGuardrail APIがあります。
  • 会話や検索結果のうち、ユーザーの入力だけを検査し、システムの指示などは飛ばす方法(タグ)があります。ただしSDKのみで、コンソールでは使えません。
  • 思考(reasoning)の部分は検査の対象外です。数値の上限や、待ち時間の数字は、読んだページには載っていませんでした。

最小の構成(見立て)

ここからは僕らの見立てです。公式の考え方を、小さな構成にまとめました。

  1. 入力に、軽い検査を1つ。 有害さの分類(Moderation APIなど)か、小さいモデルによる判定。判定は、決まった形(真偽だけなど)で返させます。
  2. 出力にも、軽い検査を1つ。 入力だけだと、AIが自分で作った内容は調べられません。
  3. 道具の呼び出しの前に、権限の検査を。 取り消せない操作は、検査と人の確認を通します。
  4. 検査が動かなかった場合の扱いを決める。 通すか、止めるか、人に回すかを、作業の重さ別に決めます。
  5. 引っかかった記録を残す。 あとで基準を見直す材料になります。残す内容の扱いは、別の記事(個人情報とログ)で書きます。
  6. 攻撃を想定したテストを、公開前に。 OpenAIもAnthropicも、悪意のある入力を含めて試す(レッドチーム)ことを勧めています。

Anthropicの検査の案内が示す、判定を決まった形で受け取る書き方は、公式の例を短くすると、こんな形です。動作確認はしていません。

{
  "output_config": {
    "format": {
      "type": "json_schema",
      "schema": {
        "type": "object",
        "properties": { "is_harmful": { "type": "boolean" } },
        "required": ["is_harmful"],
        "additionalProperties": false
      }
    }
  }
}

構造化出力の仕組みは、別の記事で扱っています。

よくある落とし穴

気をつけること

出典

更新履歴