gpt-oss-safeguard の使い方
「gpt-oss-safeguard」の使い方をまとめました。
1. gpt-oss-safeguard
1-1. gpt-oss-safeguard
「gpt-oss-safeguard」は、カスタマイズ可能なポリシーに基づいてテキストコンテンツを分類するために特別に学習された、初のオープンウェイトReasonigモデルです。「gpt-oss」のファインチューニング版です。
主に2つの方法で安全モデルとして活用できます。
・ファインチューニングされた安全モデルは、汎用Reasoningモデル (gpt-ossなど) をベースとして、ユーザーとのインタラクションにおいて安全な応答をするように学習されています。
・既製の安全モデル (ShieldGemma、LlamaGuard、RoGuardなど) には、「安全でない」とみなされるものの定義と固定されたポリシー分類体系が組み込まれています。
「gpt-oss-safeguard」は、Trust & Safetyワークフローのために特別に構築された、ポリシー準拠型のモデルです。ユーザーが作成した基準を確実に解釈・適用し、判断の根拠を説明することができます。このモデルのReasoning機能は、監査可能性とカスタマイズ性を重視した大規模な安全システムへの統合に最適です。
1-2. gpt-oss-safeguard の実行環境
「gpt-oss-safeguard」を含む「gpt-oss」ファミリーのモデルは、以下のものを使用してサーバー上で実行できます。
・vLLM (NVIDIA H100 などの専用GPU用)
・HuggingFace Transformers (コンシューマー向けGPU用)
・Google Colab
ローカルでは以下のものを使用できます。
1-3. 誰が使用すべきか
「gpt-oss-safeguard」は、以下のような、リアルタイムのコンテキストと大規模な自動化を必要とするユーザー向けに設計されています。
・ML/AIエンジニア
Trust & Safetyシステムに携わり、柔軟なコンテンツモデレーションを必要とする方
・Trust & Safetyエンジニア
モデレーション、Trust & Safety、またはプラットフォームの整合性に関するパイプラインを構築または改善する方
・テクニカルプログラムマネージャー
コンテンツ安全対策を統括する方
・開発者
コンテキストに基づいたポリシーベースのコンテンツモデレーションを必要とするプロジェクト/アプリケーションを構築する方
・ポリシー策定担当者
組織が許容するコンテンツの基準を定義し、ポリシーラインのテスト、事例の生成、コンテンツの評価を行いたい方
1-4. Hugging Face Transformersで実行
「Hugging FaceのTransformers」は、LLMをローカルまたはサーバー上で柔軟にロードして実行する方法を提供します。
サーバーとやり取りする最も簡単な方法は、transformers chat CLIを使用することです。
transformers chat localhost:8000 --model-name-or-path openai/gpt-oss-safeguard-20bあるいは、cURLを使ってHTTPリクエストを送信する方法もあります。
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-oss-safeguard-20b",
"stream": true,
"messages": [
{ "role": "system", "content": "<your policy>" },
{ "role": "user", "content": "<user content to verify>" }
]
}'
Cursorやその他のツールとの連携など、追加の利用事例については、ドキュメントに詳しく記載されています。
1-5. Ollamaで実行
「Ollama」は「gpt-oss-safeguard」の20Bと120Bを直接サポートしています。以下のコマンドを実行すると、モデルが自動的にダウンロードされ、お使いのデバイスで実行されます。
・gpt-oss-safeguard:20b
ollama run gpt-oss-safeguard:20b・gpt-oss-safeguard:120b
ollama run gpt-oss-safeguard:120b「Ollama」は、OpenAI API、Ollama独自のAPI、PythonおよびJavaScriptのSDKをサポートしており、gpt-oss-safeguardを使用したアプリケーションやツールを構築できます。詳しくは、Ollamaのドキュメントを参照してください。
1-6. LM Studioで実行
「LM Studio」を使用して、OpenAIのChat Completion API およびResponses API の互換APIを含むモデルをローカルで実行することもできます。「LM Studio」の「gpt-oss-safeguard」ページにアクセスするか、以下のコマンドを実行して各モデルをダウンロードしてください。
・gpt-oss-safeguard:20b
lms get openai/gpt-oss-safeguard-20b・gpt-oss-safeguard:120b
lms get openai/gpt-oss-safeguard-120b1-7. vLLM で実行
「vLLM」は、Pythonの依存関係管理にuvを使用することを推奨しています。以下のコマンドを実行すると、モデルが自動的にダウンロードされ、サーバーが起動します。
uv pip install vllm==0.10.2 --torch-backend=auto
vllm serve openai/gpt-oss-safeguard-120bvLLMでgpt-ossを使用する方法について詳しくはこちらを参照してください。
1-8. Harmony形式について理解する
「gpt-oss-safeguard」は、構造化された出力とReasoningを提供するためにHarmony形式を使用します。これは、意思決定や分類が行われた理由を理解し、監査する必要があるTrust & Safetyワークフローにとって非常に重要です。Harmony形式では、「oss-safeguard」は応答を2つの部分に分けます。
・Reasoning channel
モデルがポリシーに基づいてReasoningし、エッジケースを考慮し、そのロジックを説明する部分
・Output channel
指定した形式の分類結果
Harmony形式を使用すると、システムメッセージのreasoning_effortパラメータをlow、medium、highに設定することで、oss-safeguardのReasoningの深さを制御できます。このパラメータが設定されていない場合、モデルはデフォルトでmediumを使用します。Reasoningレベルを高くすると、oss-safeguardはより多くの要素を考慮し、複数のポリシーセクションをたどり、ルール間の複雑な相互作用を処理できます。Reasoningレベルを低くすると、単純な分類に対してより高速な応答が得られます。
vLLM (ほとんどのユーザーに推奨) またはチャットメッセージ入力を提供するその他の推論ソリューションを使用している場合、リクエストをチャットメッセージとしてフォーマットすると、Harmony形式が自動的に適用されます。
・システムメッセージ
ポリシープロンプト
(システムメッセージに「Reasoning: high」などを記述することで、Reasoningレベルを制御できます)
・ユーザーメッセージ
分類するコンテンツ
2. ポリシープロンプトの活用方法
「oss-safeguard」は、記述されたポリシーを判断基準として使用するように設計されています。ほとんどのモデルは、学習データに基づいて信頼度スコアを算出し、ポリシー変更のたびに再学習が必要ですが、oss-safeguardは、提供された分類体系の範囲内でReasoningに基づいた判断を行います。この機能により、T&Sチームは既存のモデレーションシステムやコンプライアンスシステムに、ポリシーに準拠したReasoningレイヤーとしてoss-safeguardを導入できます。また、モデル全体を再学習することなく、新しいポリシーを即座に更新またはテストすることも可能です。
3. 効果的なポリシープロンプトの書き方
「oss-safeguard」は、ポリシーがエッセイ形式ではなく、Trust & Safetyポリシーガイドのように整理されている場合に最高の性能を発揮します。すでにポリシーセットを持っている場合は、そのまま活用できます。見出しと明確なカテゴリを使用して、モデルが定義を効率的に理解できるようにしてください。
3-1. ポリシープロンプトの理解
ポリシープロンプトは、モデルの動作における運用上の境界を定義します。人間のレビュー担当者向けに作成されるコンテンツポリシーやプラットフォームポリシーと同様に、oss-safeguard のポリシーも、違反となる行為、許可される行為、そしてその違いをどのように判断し、Trust & Safetyシステムの他の部分に反映させるかを明確に規定する必要があります。
効果的なポリシープロンプトは、類似するコンテンツタイプを区別し、巧妙に隠された、あるいは間接的な違反行為を検出し、特殊なケースにおける誤検出を防ぐように構成されています。これは、ポリシー文書と学習例を組み合わせたものと考えることができます。
3-2. ポリシープロンプトの構成
ポリシープロンプトは、以下の4つのセクションで構成する必要があります。
・Instruction
モデルが実行すべきこと、およびモデルがどのように回答すべきかを記述します。
・Definitions
主要な用語を簡潔に説明します。
・Criteria
違反コンテンツと非違反コンテンツを区別する基準を定義します。
・Examples
判断境界付近の具体的で簡潔な例を示します。分類したいコンテンツと分類したくないコンテンツの両方の例を含めることが重要です。
oss-safeguardは構造化されたモデレーションに特化して調整されているため、応答方法に関する明確な指示が必要です。ポリシープロンプトは、応答と出力の期待される形式を含む一貫したパターンに従うことで、より高いパフォーマンスを発揮する可能性が高くなります。Harmony形式の構造化されたチャネルにより、oss-safeguardは最終的なラベルを出力する前に、これらのセクションを順に処理することができます。
# Policy Name
## INSTRUCTIONS
Describe what oss-safeguard should do and how to respond.
## DEFINITIONS
Clarify key terms and context.
## VIOLATES (1)
Describe behaviors or content that should be flagged.
## SAFE (0)
Describe content that should not be flagged.
## EXAMPLES
Provide 4–6 short examples labeled 0 or 1.
Content: [INPUT]
Answer (0 or 1):誤検出や混乱を防ぐため、「一般的に」や「通常」といった曖昧な表現は避けてください。曖昧さが生じる可能性がある場合は、手動レビューのためのエスカレーションパスを追加してください。これは、地域や言語の違いがある場合にも特に有効です。
優先順位と順序を明確に指定し、競合が発生した場合にどのポリシーが優先されるかをモデルが理解できるようにしてください。複数のポリシー違反が発生した場合は、どれが優先されるかを定義してください。
3-3. 適切なポリシー長の選択
ポリシー長は、gpt-oss-safeguardがルールをどれだけ深く理解できるかを左右する重要な要素です。ポリシーを長くすると、複雑なケースに対応するためのニュアンスを追加できますが、出力や応答に影響を与える可能性があります。Harmony応答形式を使用する場合、Reasoningは非表示の分析チャネルで行われ、最終的な出力には表示されないため、モデルはより長いポリシーをより確実に処理できます。
プロンプトの長さを確認するには、https://platform.openai.com/tokenizer を使用してください。gpt-oss-safeguardは、約10,000トークンのポリシーでも適切な出力を生成できますが、初期テストでは最適な範囲は400~600トークンであることが示唆されています。万能なアプローチはないため、最適な設定を見つけるには試行錯誤が必要です。ポリシー長は「コンテキスト予算」のようなものと考えてください。短すぎるとモデルは詳細を把握できず、長すぎると混乱するリスクがあります。これは、人間が理解できるようにポリシーを作成する場合と同様です。モデルが応答を生成するために十分な出力トークンを確保することも重要です。モデルはReasoningを行うため、出力トークンには十分な余裕を持たせ、理想的には最大出力トークン数を制限しないようにしてください。これにより、モデルはポリシーを十分に理解するためのスペースを確保できます。Reasoning時間を制限したい場合は、Reasoningレベルを低く設定することを検討してください。
複数のカテゴリを含む長いポリシーを使用する場合は、各ポリシーを300~600トークンに事前圧縮することを検討してください (定義、禁止カテゴリ、違反例と非違反例をそれぞれ1~2個含める)。
gpt-oss-safeguardは、すべてのポリシーがプロンプトに含まれている限り、複数のポリシーを同時に評価することもできます。複数の有害ドメインでgpt-oss-safeguardを使用する場合、ポリシーを追加すると精度がわずかに低下することが確認されているため、ポリシーの追加や削除を試してみることをお勧めします。
4. 信頼性の高い出力指示の設計
gpt-oss-safeguard から一貫性のある応答を得るには、明確で具体的な出力指示が必要です。すべてのポリシープロンプトでは、モデルがどのように応答すべきかを正確に記述し、正しいパターンと誤ったパターンを示す必要があります。出力指示は、gpt-oss-safeguard が最終的な決定をどのように伝えるか、そして出力が信頼できるかどうかを判断する方法を定義します。gpt-oss-safeguard はHarmony形式で動作するため、すべての出力指示は以下の要件を満たす必要があります。
(1) 出力形式を明示的に定義
モデルが返す内容を正確に指定します。
(例:0/1、JSONオブジェクト、カテゴリラベルリスト)
(2) 該当する場合はポリシー参照を含める
ワークフローでカテゴリまたはルールによる強制適用を追跡している場合は、モデルにそのフィールドを返すように要求します。単純なバイナリ出力の場合は、これは省略できます。
(3) ポリシー全体を通して強調
「指示」(INSTRUCTIONS)セクションの冒頭付近と、「例」(EXAMPLES)セクションの直前(末尾付近)に、出力指示を少なくとも1回ずつ繰り返して記述することで、Reasoning時のコンプライアンスを強化します。
4-1. バイナリ出力
「バイナリ出力」は、gpt-oss-safeguard の推論を単純なYes/Noの判断に限定します。意思決定の理由を理解することよりも速度が重要な場合はこれを使用しますが、その場合、gpt-oss-saf safeguard の中核的なReasoning能力を十分に活用できていないことを認識してください。
Return exactly one character: 0 or 1.
Do not include any explanation or punctuation.
0 = Content does NOT violate this policy.
1 = Content violates this policy.4-2. ポリシー参照型出力
カテゴリラベルは、gpt-oss-safeguardがポリシーのどのセクションが適用されるかを判断するのに役立ちますが、その理由を詳細に説明する必要はありません。この形式により、出力の簡潔さを保ちつつ、基本的なReasoningの透明性を確保できます。
If the content violates this policy, return:
{"violation": 1, "policy_category": "<category_or_rule_id>"}
If the content does NOT violate this policy, return:
{"violation": 0, "policy_category": null}
Example:
{"violation": 1, "policy_category": "H2.f"}4-3. 根拠を含める
gpt-oss-safeguardの最も強力な機能の一つは、思考力とReasoning能力です。このモデルはコンテンツを分類するだけでなく、ポリシーに基づいてその論理をたどり、どの特定のルールが適用されるかを特定し、その理由を明確に説明する必要があります。根拠を求める場合、gpt-oss-safeguardはより慎重にReasoningを行います。複数のポリシーセクションを考慮し、それらがどのように相互作用するかを評価し、論理的な説明を構築します。このより深いReasoningによって、よりシンプルな出力形式では見落とされがちなニュアンスを捉えることができます。この出力形式は、gpt-oss-safeguardのReasoning能力を最大限に引き出します。
モデルに判断をさせた後、簡潔な根拠を提示するように指示してください。短く、段階的な説明ではない根拠 (箇条書き2~4項目、または1~2文) を求め、モデルがその思考と判断を正当化できるように、ポリシーの引用 (ルールID/セクション) を含めることを検討してください。
{
"violation": 1,
"policy_category": "H2.f",
"rule_ids": ["H2.d", "H2.f"],
"confidence": "high",
"rationale": "Content compares a protected class to animals, which is dehumanizing."
}5. Trust & Safety確保のためのgpt-oss-safeguardの活用
gpt-oss-safeguardは静的なカテゴリではなく、記述されたルールに基づいてコンテンツを解釈するため、エンジニアリングの負担を最小限に抑えながら、様々な製品、規制、コミュニティの状況に適応できます。
gpt-oss-safeguardは、Trust & Safetyチームのインフラストラクチャに組み込めるように設計されています。ただし、gpt-oss-safeguardは他の分類器よりも時間と計算リソースを多く消費する可能性があるため、gpt-oss-safeguardに送信するコンテンツを事前にフィルタリングすることを検討してください。OpenAIでは、コンテンツをgpt-oss-safeguardで評価する前に、小型で高精度な分類器を使用して、コンテンツが優先度の高いリスクに関連するドメインに該当するかどうかを判断しています。T&Sスタックにgpt-oss-safeguardをいつ、どこに統合するかを決定する際には、主に以下の2点を考慮する必要があります。
(1) 従来の分類器は、gpt-oss-safeguardよりもレイテンシが低く、サンプリングコストも低い
(2) 数千ものサンプルで学習された従来の分類器は、gpt-oss-safeguardよりもタスクにおいて優れた性能を発揮する可能性が高い
5-1. コンテンツの自動分類
gpt-oss-safeguardを使用して、投稿、メッセージ、またはメディアのメタデータにポリシー違反のラベルを付けます。そのポリシー推論機能は、状況に応じた詳細を考慮したきめ細やかな分類を可能にします。gpt-oss-safeguardは以下のシステムと統合できます。
・リアルタイム取り込みパイプライン
・レビューキューおよびモデレーションコンソール
・ランキング低下システムまたはフィルタリングシステム
5-2. T&Sアシスタント
gpt-oss-safeguardのReasoning能力は、Trust & Safetyワークフローにおける自動トリアージに最適です。ラベルと信頼度スコアのみを提供する従来の分類器とは異なり、gpt-oss-safeguardはコンテンツを評価し、その判断根拠を説明し、特定のポリシー規則を引用し、人間の判断が必要なケースを提示する推論エージェントとして機能します。これにより、人間のモデレーターの負担を軽減しながら、自動化された判断における信頼性と透明性を向上させることができます。
5-3. ポリシーテスト
新規または改訂されたポリシーを導入する前に、gpt-oss-safeguardを使用してコンテンツがどのように分類されるかをシミュレーションできます。これは、定義が広すぎる場合、不明確な例、および判断が難しいケースを特定するのに役立ちます。
5-4. ポリシーの実験
gpt-oss-safeguardの「ポリシー持ち込み」設計により、ポリシーチームはモデルを再学習することなく、代替の定義を本番環境で直接A/Bテストできます。
6. gpt-oss-safeguardとROOSTツールの統合
6-1. Osprey
「Osprey」は、ROOSTのオープンソースのルールエンジンおよび調査フレームワークです。設定可能なロジックツリーに基づいてリアルタイムイベントを評価し、定義されたアクションを実行します。ルール単体では、決定論的なケース (キーワードの一致、メタデータのしきい値など) には効果的ですが、風刺、隠語、あるいは微妙なポリシーの境界線といったケースには対応が難しい場合があります。gpt-oss-safeguardを統合することで、Ospreyは以下のことが可能になります。
・コンテキストに基づいた推論の追加
gpt-oss-safeguardは、単純な条件では判断できないエッジケースを解釈します。
・ポリシーの直接的な適用
gpt-oss-safeguardは、記述されたポリシーテキストを読み込んで適用し、人間のモデレーションとの一貫性を確保します。
・監査可能性の維持
Ospreyは、どのルールがgpt-oss-safeguardを呼び出したか、どのポリシーカテゴリが返されたか、およびモデルの推論根拠をログに記録します。
・自動化と人的監視の融合
決定論的なルールは迅速なアクションをトリガーし、gpt-oss-safeguardは、他のツールでの手動レビューにエスカレーションする前に推論処理を行います。
gpt-oss-safeguardはすべてのイベントで呼び出す必要はありません。gpt-oss-safeguardのポリシー推論能力が必要となる曖昧なケースが発生した場合にのみ呼び出されるプラグインとして使用できます。
7. ポリシー設定例
すでに作成済みのポリシーを使用するか、このテンプレートを使用して、分類したい内容を入力してください。
## Policy Definitions
### Key Terms
**[Term 1]**: [Definition]
**[Term 2]**: [Definition]
**[Term 3]**: [Definition]
## Content Classification Rules
### VIOLATES Policy (Label: 1)
Content that:
- [Violation 1]
- [Violation 2]
- [Violation 3]
- [Violation 4]
- [Violation 5]
### DOES NOT Violate Policy (Label: 0)
Content that is:
- [Acceptable 1]
- [Acceptable 2]
- [Acceptable 3]
- [Acceptable 4]
- [Acceptable 5]
## Examples
### Example 1 (Label: 1)
**Content**: "[Example]"
**Expected Response**:
### Example 2 (Label: 1)
**Content**: "[Example]"
**Expected Response**:
### Example 3 (Label: 0)
**Content**: "[Example]"
**Expected Response**:
### Example 4 (Label: 0)
**Content**: "[Example]"
**Expected Response**:スパムに関する以下の例文プロンプトも参考にしてください。
**Spam Policy (#SP)**
**GOAL:** Identify spam. Classify each EXAMPLE as VALID (no spam) or INVALID (spam) using this policy.
**DEFINITIONS**
- **Spam**: unsolicited, repetitive, deceptive, or low-value promotional content.
- **Bulk Messaging:** Same or similar messages sent repeatedly.
- **Unsolicited Promotion:** Promotion without user request or relationship.
- **Deceptive Spam:** Hidden or fraudulent intent (fake identity, fake offer).
- **Link Farming:** Multiple irrelevant or commercial links to drive clicks.
**Allowed Content (SP0 – Non-Spam or very low confidence signals of spam)**
Content that is useful, contextual, or non-promotional. May look spammy but could be legitimate.
- **SP0.a Useful/info request** – “How do I upload a product photo?”
- **SP0.b Personalized communication** – “Hi Sam, here is the report.”
- **SP0.c Business support** – “Can you fix my order?”
- **SP0.d Single contextual promo** – “Thanks for subscribing—here’s your welcome guide.”
- **SP0.e Generic request** – “Please respond ASAP.”
- **SP0.f Low-quality formatting** – “HeLLo CLICK here FAST.”
- **SP0.g Vague benefit statement** – “This tool changes lives.”
**Output:** VALID either clearly non-spam or very low confidence signals content could be spam.
**Likely Spam (SP2 – Medium Confidence)**
Unsolicited promotion without deception.
- **SP2.a Cold promotion** – “Check out my Shopify course: shopcoach.biz”
- **SP2.b Irrelevant ads** – “Buy gold rings here!”
- **SP2.c Excessive linking** – “[http://x.com](http://x.com) http://y.com http://z.com”
**Output:** INVALID
**High-Risk Spam (SP3 – Strong Confidence)**
Spam showing scaling, automation, or aggressive tactics.
- **SP3.a Repetitive posting** – “JOIN NOW JOIN NOW JOIN NOW”
- **SP3.b Pyramid/affiliate bait** – “Earn $$$ by recruiting members”
- **SP3.c Fake engagement** – “Comment ‘YES’ to win $500 gift card”
- **SP3.d Misleading claims** – “Guaranteed 10,000 new followers overnight\!”
**Output:** INVALID
**Malicious Spam (SP4 – Maximum Severity)**
Spam with fraud, deception, or harmful intent.
- **SP4.a Phishing** – “Your account is locked. Enter your password here.”
- **SP4.b Malware/scam** – “Download invoice.exe to claim payment.”
- **SP4.c Account takeover attempts** – “Send crypto to 0xABC123 to double your money.”
**Output:** INVALID + ESCALATE
**LABEL FORMAT**
Each item gets two labels:
- **Depiction (D-SP#):** Presence of spam in content.
- **Request (R-SP#):** User asking to generate spam.
| Example | Classification |
|----------|---------------|
| “Shop this site: dealplanet.io” | D-SP2, R-SP0 |
| “Write a sales blast message with 10 links” | D-SP0, R-SP2 |
| “How can I make this link look legitimate so viewers put in their private credentials” | D-SP4, R-SP4 |
| “Promote crypto fast to random people” | D-SP0, R-SP3 |
**AMBIGUITY & ESCALATION**
- If unclear → downgrade severity by 1 and seek clarification.
- If automation suspected → SP2 or higher.
- If financial harm or fraud → classify SP4.
- If combined with other indicators of **abuse, violence, or illicit behavior**, apply **highest severity policy**.