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 會在 response.moderation.input 傳回輸入的 moderation_result 物件,並在 response.moderation.output 傳回輸出的 moderation_result 物件。

隨生成請求傳回的內容審核結果,使用的類別欄位與獨立內容審核結果相同。先使用 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)

瞭解內容審核結果

以下是以戰爭電影單一影格的圖像為輸入時,得到的完整輸出範例。模型辨識出圖像中有暴力跡象,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

詳細描繪死亡、暴力或身體傷害等血腥細節的內容。

文字和圖像