Skip to main content

簡短回答

Claude 遇到觸發原廠安全策略的請求時,不會報錯。介面照常返回 HTTP 200,但:
  • content 是空陣列 [],output_tokens 為 0;
  • stop_reason 是 refusal;
  • stop_details 裡寫明拒答的類別(如 cyber 網路安全)和一段英文說明。
這是模型本身的行為,不是介面故障。程式碼裡如果直接取 message.content[0],就會丟擲 IndexError;用 OpenAI 相容格式呼叫時,拿到的是空字串,finish_reason 為 refusal。 拒答通常在 1~2 秒內返回。是否計費取決於拒答類別:cyber 等類別在輸出前被拒答時不計費,詳見下文「計費規則」。

拒答的輸出體

下面是同一條觸發網路安全拒答的請求,在四種呼叫方式下的實測返回(2026-09-29 實測,id 已打碼):
POST /v1/messages,stream: false:
拒答也可能發生在流式輸出的中途:先輸出了一部分正文,最後以 stop_reason: "refusal" 結束。這時已輸出的部分是不完整的,應當丟棄。

拒答類別

stop_details.category 目前有五個取值: 拒答對應不到具體類別時,category 和 explanation 都是 null,這是正常值。explanation 的文字隨時可能變化,只適合展示,不要拿來做字串匹配。

常見觸發場景

category: "cyber"(網路安全)是開發者最常遇到的一類。Claude 對網路安全相關請求有一層即時防護,下面這些任務都可能觸發:
  • 讓模型尋找程式碼漏洞、判斷一段程式碼「是否存在漏洞」、給出漏洞型別(CWE)
  • 編寫或補全漏洞利用程式碼(exploit)、滲透測試步驟
  • 分析、改寫惡意程式碼
批次評測和資料集蒸餾最容易踩到。 例如用一整個漏洞資料集逐條讓模型判斷,往往會有相當一部分樣本被拒答。指令碼如果預設 content[0] 一定存在,就會在拒答那一條上直接崩潰,看起來像「介面時好時壞」。

計費規則

按原廠規則(截至 2026 年 9 月,原廠可能根據誤攔率調整): 無論是否計費,拒答請求都會計入速率限制。usage 裡照常顯示 token 數,這是計數,不代表一定扣費。

如何識別與處理

1

先判斷 stop_reason,再取內容

原生格式看 stop_reason == "refusal",OpenAI 相容格式看 finish_reason == "refusal"。確認不是拒答之後,再去讀 content。
2

把拒答當作一類結果記錄

拒答是一次成功的呼叫,不是網路錯誤。評測類任務建議單獨記為「拒答」,連同 stop_details.category 一起存檔,而不是計入失敗重試。
3

不要原樣重試

同一內容原樣重試,大機率還是同樣的拒答,還會佔用速率限制;部分類別每次都會產生輸入費用。
4

多輪對話要先重置上下文

多輪對話裡某一輪被拒答後,要刪掉或改寫觸發拒答的那一輪,或者清空歷史,再繼續對話。不重置的話,後續請求會持續被拒答。
5

定期分析拒答集中在哪類內容

按 category 統計,就能看出是哪類任務在觸發。再決定這部分內容是否改用其他模型處理。
需要知道拒答類別,請用原生 /v1/messages 格式呼叫。OpenAI 相容格式只保留了 finish_reason: "refusal",沒有 stop_details。

合規的安全研究怎麼辦

拒答說明裡提到的 Cyber Verification Program(網路安全驗證計劃),是原廠面向合規安全研究的免費申請計劃:通過身份驗證後,漏洞利用、攻防工具開發這類「高風險兩用」任務可以放寬。但勒索軟體開發、大規模資料竊取這類「禁止用途」,任何情況下都會被攔截。 這個計劃由組織管理員以原廠賬號申請。通過第三方平臺呼叫時,原廠說明「並非所有平臺都參與」,API易 目前不提供該計劃的接入。 所以通過 API易 呼叫時,對被拒答的樣本:
  • 在評測結果裡如實記為「拒答」,連同類別一起統計;
  • 或改用其他模型處理這部分內容。
API易 不會也無法調整原廠的安全策略。

與 OpenAI 拒答的區別

OpenAI 模型的拒答形態詳見 OpenAI 模型拒答長什麼樣?。

常見問題

看類別和時機。輸出前被拒答、類別為 cyber、general_harms 或 null 的不計費;bio、frontier_llm、reasoning_extraction 按輸入計費;流式中途被拒按輸入加已輸出部分計費。詳見上文「計費規則」。
不能。拒答由原廠模型根據其安全策略決定,API易 無法關閉,也無法調整它的尺度。被拒答的內容建議記為拒答結果,或改用其他模型處理。
防護按每一條請求的內容單獨判斷。程式碼片段本身的特徵、提示詞的問法都會影響結果,所以同一個資料集裡通常只有一部分樣本被拒。實測同一條被拒的樣本連續重發,結果基本穩定一致。
模型沒有生成任何內容就結束了,所以輸出為 0,只有輸入被計數。這也是區分「拒答」和「被 max_tokens 截斷」的方法:後者 stop_reason 是 max_tokens,且輸出 tokens 等於你設定的上限。

相關文件

Claude 響應資料處理

流式與非流式響應結構、stop_reason 取值

OpenAI 模型拒答長什麼樣?

GPT 系列拒答的形態與識別方法

內容安全如何合規性?

平臺內容安全與合規政策