> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apiyi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 內容安全攔截排查：用分詞消融法找到觸發詞

> 一個真實案例：同一段提示詞網頁版能出圖、API 報 safety_violations=[sexual]。講清攔截髮生在哪一層、為什麼 moderation: low 無效、網頁版為何能過，以及用分詞消融法 20 次實測定位觸發詞並給出零改意的改法。

被內容安全攔下，**不等於提示詞寫了違規內容**。更常見的情況是：提示詞裡某一個詞把「成圖」推過了稽核線，而你自己讀提示詞根本看不出問題。本文用一個真實客戶案例，講清攔截髮生在哪一層、網頁版為什麼能過、`moderation: low` 為什麼沒用，以及一套 20 次呼叫就能定位觸發詞的方法。

## 案例復盤：網頁版能出、API 報 sexual

客戶用 `gpt-image-2.5-sunburst` 生成一張角色設定圖（左側臉部特寫、右側正面 / 側面 / 背面三檢視）。請求體：

```json theme={null}
{
  "model": "gpt-image-2.5-sunburst-2026-09-08",
  "prompt": "幫我生成一個媽感美豔女主（外國人），皮膚通透有自然光澤，無過度磨皮；皮膚保留自然原生紋理、皮膚通透有自然光澤；整體畫面自然真實，8K超高畫質，細節豐富，真實人像攝影質感，純白背景#一張綜合角色設定圖，左側為臉部大特寫，右側為全身標準三檢視,露出完整的頭部，臉部特寫和全身三檢視要在一張圖。全身三檢視：右側依次排列全身的正面視角、90 度純側面視角（頭部完全側轉）、背面視角。",
  "size": "2736x1536",
  "quality": "xhigh",
  "background": "auto",
  "n": 1
}
```

API 穩定返回 400：

```json theme={null}
{
  "status_code": 400,
  "error": {
    "message": "Your request was rejected by the safety system. If you believe this is an error, contact us at ***.***.com and include the request ID req_e97b3571a1e2433da4b154fe7ea7a82c. safety_violations=[sexual]."
  }
}
```

客戶的反饋很有代表性：

> 我理解是內容安全，但我在 ChatGPT 網頁版又能成功，你得告訴我，為啥網頁版能成。

提示詞裡沒有任何露骨內容，只是「美豔女主 + 三檢視 + 純白背景」。這類「我沒寫什麼卻被攔」的工單，排查思路和「我寫了什麼被攔」完全不同。

## 先分清攔截髮生在哪一層

出圖模型的內容安全有兩道關，觸發的層不同，排查方法也不同：

|           | 提示詞層攔截        | 影像輸出層攔截                   |
| --------- | ------------- | ------------------------- |
| 稽核物件      | 你發的文本         | 生成出來的那張圖                  |
| 響應耗時      | **幾秒內**返回 400 | **與成功請求相同**（圖先生成，再被分類器攔下） |
| 同一提示詞多次呼叫 | 結果穩定：每次都拒     | **有隨機性**：每次成圖不同，時過時不過     |
| 改法        | 刪掉明顯違規詞       | 找到把成圖「推過線」的那個詞            |

**判據就看耗時**。本案例失敗請求耗時 42 到 51 秒，成功請求 46 到 57 秒，兩者沒有區別，說明圖已經生成完了，是輸出側分類器判了 sexual。後面的消融實驗也印證了這一點：同一句提示詞跑 3 次，出現過 1 過 2 拒。

<Info>
  提示詞層攔截和引數錯誤一樣幾乎秒回。如果你的 400 等了半分鐘以上才來，先按「輸出層攔截」來查，別急著刪提示詞裡的詞。
</Info>

## 為什麼網頁版能成

這和 [如何生成滿意的圖片](/zh-Hant/api-capabilities/image-generation-success-tips) 裡講的是同一件事：**網頁版是 Agent，API 是單次原子呼叫**。

* ChatGPT 網頁版不會把你這段話原樣餵給出圖模型。中間的對話模型會先**改寫、擴充**提示詞，通常會自己補上服裝、場景、光線等細節。等於替你做了下文「加服裝」那一步。
* API 是原文直達。你沒寫穿什麼，模型就自由發揮；在「美豔 + 全身三檢視 + 純白背景」這個組合下，它傾向畫成貼身或少衣的角色設定圖，成圖就容易越線。
* 再疊加輸出層稽核本身的隨機性，網頁版跑一次成功、API 跑一次失敗並不矛盾。

所以「網頁版能過」不能推出「API 稽核更嚴」，兩條鏈路送進模型的提示詞根本不是同一段。

## 分詞消融法：一次只動一個詞

提示詞裡有十幾個形容詞和構圖約束，靠猜哪個詞有問題效率很低。有效的辦法是**消融**：每次只刪或替換一個詞塊，其餘一字不動，看哪一次結果翻轉。

<Steps>
  <Step title="列出可疑詞塊">
    分三類：人物形容詞（美豔、性感、嫵媚……）、身體相關動詞（露出、展示、貼身……）、構圖約束（全身、三檢視、純白背景……）。構圖約束單獨看沒問題，但會和形容詞組合出效果。
  </Step>

  <Step title="每次只動一個詞塊">
    刪掉或換成中性詞，其餘原樣。同時也跑一組「不動詞、只加約束」的變體，比如給人物加一句明確的服裝描述。
  </Step>

  <Step title="翻轉後迴歸 2 到 3 次">
    輸出層攔截有隨機性，單次通過不算數。命中的變體至少再跑 2 次，全過才算找到。
  </Step>

  <Step title="取最小改動">
    目標不是「能過」，而是「改意最小地能過」。優先選不動原詞、只加約束的方案。
  </Step>
</Steps>

<Tip>
  變體之間互不依賴，**並行跑**。本案例 6 個變體一批發出，50 秒左右全部返回；序列等要五分鐘。
</Tip>

本案例的完整消融記錄（共 20 次呼叫，同尺寸同 quality）：

| 改法                                   | 結果              |
| ------------------------------------ | --------------- |
| 原句（跑 2 次）                            | 400 sexual ×2   |
| 原句 + `moderation: "low"`             | 400 sexual      |
| 只把「露出完整的頭部」改成「頭部完整入畫」                | 400 sexual      |
| 只刪「媽感」，保留「美豔」                        | 400 sexual      |
| 只刪「美豔」，保留「媽感」                        | 200             |
| 「媽感美豔女主」改成「成熟優雅的歐美女性角色」（跑 3 次）       | 200 ×3          |
| 改成「成熟優雅、面容精緻的歐美女性角色」（跑 3 次）          | 400 / 200 / 400 |
| **原句一字不動，只加「身穿米色高領針織衫和深色長褲」（跑 3 次）** | **200 ×3**      |

從表裡能直接讀出三件事：觸發詞是「美豔」（刪「媽感」沒用、刪「美豔」就過）；「露出」不是原因；「面容精緻」那組 1 過 2 拒，證明稽核物件是每次都不同的成圖而不是文本。

## 結論與推薦改法

**觸發機制**：「美豔」讓模型把人物往性感方向渲染，「全身三檢視 + 純白背景」又是典型的設定圖構圖，兩者疊加，成圖容易被輸出側分類器判為 sexual。提示詞本身沒有一個字違規。

**推薦改法**：保留全部原文，只在人物描述後加一句明確的服裝。實測 3/3 通過，人物氣質和構圖都和原意一致：

```text theme={null}
幫我生成一個媽感美豔女主（外國人），身穿米色高領針織衫和深色長褲，皮膚通透有自然光澤，無過度磨皮；皮膚保留自然原生紋理、皮膚通透有自然光澤；整體畫面自然真實，8K超高畫質，細節豐富，真實人像攝影質感，純白背景#一張綜合角色設定圖，左側為臉部大特寫，右側為全身標準三檢視,露出完整的頭部，臉部特寫和全身三檢視要在一張圖。全身三檢視：右側依次排列全身的正面視角、90 度純側面視角（頭部完全側轉）、背面視角。
```

<Frame caption="同一段提示詞，只加了一句服裝描述：3 次呼叫全部通過，臉部特寫與正 / 側 / 背三檢視按要求出齊">
  <img src="https://mintcdn.com/apiyillc/jVG8GxgXc4e0wCxN/images/image-safety-case-turnaround-clothed.jpg?fit=max&auto=format&n=jVG8GxgXc4e0wCxN&q=85&s=86cb15b543b0ae764311bd30fff41984" alt="歐美女性角色設定圖，左側臉部特寫，右側正面、側面、背面三檢視，人物著米色高領針織衫與深色長褲，純白背景" width="1200" height="673" data-path="images/image-safety-case-turnaround-clothed.jpg" />
</Frame>

服裝換成任何得體的日常裝都可以，關鍵是**要寫**，不要留給模型自己決定。

**備選改法**：把「美豔」換成「成熟優雅」，同樣 3/3 通過，但臉部氣質會偏溫和，離原意遠一些。

## moderation: low 為什麼沒用

`moderation` 引數（見 [文生圖參數列](/zh-Hant/api-capabilities/gpt-image-2/text-to-image)）取值 `auto` / `low`，作用是降低**提示詞側**的稽核強度。本案例傳了 `low` 照樣 400，因為攔截髮生在輸出層，這個引數管不到成圖的 sexual 分類。

在閘道之外無法區分「引數沒透傳」和「引數透傳了但不生效」，但對結論沒有影響：**遇到輸出層攔截，改引數沒用，得改提示詞**。

## 通用排查清單

<AccordionGroup>
  <Accordion title="報錯是秒回還是等了很久？">
    秒回是提示詞層，等了和正常出圖差不多的時間是輸出層。前者刪明顯違規詞；後者用分詞消融法找「推過線」的那個詞，並接受同一提示詞會有隨機性。
  </Accordion>

  <Accordion title="提示詞裡有沒有把「穿什麼」交給模型？">
    人物類提示詞只寫氣質、不寫服裝，是輸出層攔截最常見的來源。加一句明確的服裝描述，往往一步就解決，而且不動原意。
  </Accordion>

  <Accordion title="一次只改一個詞了嗎？">
    同時改三個詞，過了也不知道是哪個起作用，下次換個提示詞又要從頭猜。每次只動一個詞塊，命中後迴歸 2 到 3 次。
  </Accordion>

  <Accordion title="被攔的請求會扣費嗎？">
    按 token 計費的 gpt-image 系列觸發稽核返回 400 時不計費，口徑見 [gpt-image-2 常見問題](/zh-Hant/api-capabilities/gpt-image-2/overview#常見問題)「生成失敗會扣費嗎」。所以消融實驗本身不花錢，只花時間。
  </Accordion>
</AccordionGroup>

## 速查總結

* **看耗時判層級**：400 秒回是提示詞層；等了和出圖一樣久才 400，是成圖被輸出層分類器攔下。
* **輸出層攔截有隨機性**：同一提示詞時過時不過，單次結果不能下結論，要回歸 2 到 3 次。
* **網頁版能過不代表 API 更嚴**：網頁版會先改寫擴充提示詞（補服裝、場景），API 是原文直達。
* **分詞消融法**：一次只動一個詞塊，並行跑變體，取改意最小的方案。本案例觸發詞是「美豔」。
* **人物提示詞寫清服裝**：只加一句服裝描述、其餘不動，實測 3/3 通過；`moderation: low` 對輸出層攔截無效。

## 相關文件

* [如何生成滿意的圖片](/zh-Hant/api-capabilities/image-generation-success-tips)
* [出圖提示詞診斷技能](/zh-Hant/api-capabilities/image-prompt-doctor)
* [圖片 API 呼叫須知與最佳實踐](/zh-Hant/api-capabilities/image-api-best-practices)
* [gpt-image-2 常見問題](/zh-Hant/api-capabilities/gpt-image-2/overview#常見問題)
