Claude Fable 5 回退至 Opus 4.8 詳解

了解 Claude Fable 5 的安全機制如何在生產 API 系統中與 Opus 4.8 的回退行為互動。

By Dora 2 min read

我是 Dora。我已經將生產流量路由到 Claude Fable 5 大約一週了。時間夠長,足以觀察到降級行為的觸發;時間夠短,我仍然記得哪些地方讓我感到驚訝。這篇文章寫給那些剛整合 Fable 5、看到完全無害的提示卻收到 stop_reason: "refusal" 的人,或者即將面對這種情況、不想在凌晨兩點才發現問題的人。

簡短版本: Claude Fable 5 的降級不是錯誤,而是模型出廠時已記錄在案的行為之一。當安全分類器拒絕某個請求時,API 會回傳 HTTP 200 並附上拒絕停止原因,Anthropic 提供三種方式讓你在 Claude Opus 4.8 上重試該請求,且不會讓使用者流失。如果你把它當作要捕捉的例外,你會處理錯誤。如果你把它當作路由決策,它就能完美嵌入。

我將逐一說明什麼會觸發降級API 實際回傳什麼如何實作重試,以及對計費的影響

為何 Opus 4.8 在 Fable 5 路由中至關重要

Fable 5 的安全防護與降級行為

Fable 5 是 Anthropic 目前最強大的廣泛發布模型,它內建了位於模型前端的安全分類器。當分類器標記某個請求時,Fable 5 不會回應。該請求可以在 Claude Opus 4.8 上重新執行,並告知使用者發生了這件事。此行為已記錄於 Anthropic 關於 Claude Fable 5 和 Mythos 5 的公告中。

Anthropic 表示,分類器平均在不到 5% 的會話中觸發。這個數字與我目前觀察到的結果相符。大多數時候你根本不會注意到降級機制的存在。

Mythos 5 的受限存取背景

Mythos 5 與 Fable 5 是相同的底層模型,只是沒有分類器。它尚未公開開放。存取途徑通過 Project Glasswing,目前僅限於網路安全合作夥伴,以及在獨立受信任存取計畫下的少數生物研究人員。如果你還沒有存取權限,你就是在 Fable 5 上開發。Anthropic 的 Mythos 品牌在這裡可能令人混淆——Mythos 是模型類別,而 Fable 5 是該類別中公開發布的成員。

本文其餘部分假設你的程式碼正在呼叫 Fable 5。

為何降級是產品功能,而非單純的錯誤路徑

這一點讓我花了一點時間才內化。Opus 4.8 並不是降級體驗,它是上一代的 Opus 層級,依然強大,且不執行相同的分類器。因此路由邏輯是:先嘗試最強的模型,如果分類器拒絕,就降至兩個月前還是旗艦的模型。使用者無論如何都能得到回應,這就是整個設計的核心。

降級不是錯誤回報,而是你的程式碼代表使用者做出的路由決策。

什麼會觸發降級或拒絕

網路安全、生物/化學及蒸餾類別

stop_details.category 欄位會告訴你哪個分類器觸發了。Fable 5 上已公布的類別包括 cyberbioreasoning_extraction——最後一個針對看起來像是試圖逆向工程或在 Anthropic 服務條款下蒸餾模型輸出的請求。目前的清單和確切行為記錄於 Claude API 文件中的拒絕與降級文件

在我的使用中,bio 從未觸發過。cyber 觸發了兩次。兩次的提示都與安全相關但無害——一次是關於特定日誌格式的結構問題,另一次是關於一個多年前已完全修補的 CVE。兩次都不是試圖做任何有害的事,分類器只是看到了表面模式就拒絕了。

誤報與保守的安全防護

Anthropic 明確表示,分類器經過保守調校——按他們自己的說法,比理想情況更嚴格。這是一種取捨。他們寧願拒絕一個無害的網路安全問題並將你路由到 Opus 4.8,也不願錯過真正的濫用案例。降級的存在正是因為設計上誤報率不為零。

如果你以這個假設來開發,意外就會消失。如果你假設拒絕是罕見的緊急情況,第一次發生就會出問題。

API 在請求被拒絕時回傳什麼

回應是正常的 HTTP 200。格式大致如下:

{
  "role": "assistant",
  "content": [],
  "stop_reason": "refusal",
  "stop_details": {
    "type": "refusal",
    "category": "cyber",
    "explanation": "..."
  },
  "usage": { "input_tokens": 106, "output_tokens": 1 }
}

在任何輸出生成之前就被拒絕的請求,不會向你收費。如果你在不重置被拒絕回合的情況下繼續同一個對話,你會持續收到拒絕——Anthropic 的串流拒絕文件對此有專門說明。重試前請移除或改寫該回合。

category 欄位僅供參考。不要依據它分支面向使用者的文案。在某些場景下(包括批次結果)它也可能為 null,因此請直接檢查 stop_reason 來偵測拒絕。

開發者應如何實作降級

三種方式,選一種,不要疊加。

伺服器端降級參數

在直接使用 Claude API 或 AWS 上的 Claude Platform 時,最簡潔的路徑是選擇加入的 fallbacks 參數(目前處於 beta 階段)。你在請求中加入一個降級模型清單,如果 Fable 5 拒絕,Anthropic 會在清單中的下一個模型(目前為 Opus 4.8)上重新執行請求,並將回應回傳給你。從你這端只需一次往返。

不支援 Message Batches API,目前也不支援 Amazon Bedrock、Vertex AI 或 Microsoft Foundry。如需在這些平台使用,請改用 SDK 中介軟體。

客戶端 SDK 中介軟體

Anthropic SDK 內建了拒絕降級中介軟體。你在建立客戶端時配置一次降級模型清單,它會處理重試、降級積分的 beta 標頭,以及對話歷史的管理。接受的模型會被固定於後續回合,確保對話保持一致。

我使用了中介軟體。配置只需在客戶端初始化時寫一個區塊,之後 client.beta.messages.create 的行為與一般客戶端完全相同——只是拒絕會自動路由。如果你在 Bedrock、Vertex 或 Foundry 上開發,或者只是想要統一的程式碼路徑,我會推薦這種方式。

記錄分類器結果而不暴露敏感內容

當拒絕發生時,記錄足夠除錯的資訊——模型、時間戳、類別——但如果完整提示可能含有敏感內容,不要將其寫入應用程式日誌。分類器已經標記了它。將提示視為需要處理的東西,而不是要在可觀測性堆疊中索引的東西。

我對 stop_details.category 維護一個計數器,並僅在開發環境中以採樣率記錄完整酬載。這樣你就能掌握誤報模式,又不會洩漏內容。

計費與使用者體驗

在支援的情況下避免重複的提示快取費用

如果你原始的 Fable 5 請求使用了長快取前綴,你不會想在 Opus 4.8 上重試時支付兩次快取讀取費用。降級積分可以解決這個問題。當拒絕產生積分時,你會在回應中收到一個不透明的 fallback_credit_token,在重試請求時傳入它可以避免重複的快取費用。機制和 beta 標頭已記錄於 AWS Bedrock 的降級積分指南,SDK 中介軟體會自動傳送該標頭。Token 有效期為五分鐘。

如果你使用了伺服器端 fallbacks 參數或中介軟體,這部分已自動處理。如果你在手動重試,則需要自行接入。

向終端使用者說明降級

降級不是失敗,但使用者確實需要知道回應來自不同的模型,無論是為了透明度,還是因為 Opus 4.8 的回答可能有所不同。我會顯示一個小型內嵌提示——例如「已由備援模型回應」——並連結到說明其含義的說明頁面。不是道歉,而是一個標籤。

我不會向使用者暴露類別。在缺乏脈絡的情況下,「cyber」或「bio」讀起來像是指控,而通常並非如此。

保持安全行為的可觀測性

將拒絕率作為正常的服務水準指標(SLI)來追蹤。如果它週復一週地上升,你需要知道——無論是你的使用模式在向被標記的類別偏移,還是分類器被重新調校。兩種情況在運營上都值得關注,如果你不測量,兩種情況都是不可見的。

常見問題

為何 Fable 5 會降級到 Opus 4.8?

因為 Fable 5 內建了安全分類器,可以在特定類別(網路安全、生物、化學、蒸餾)中拒絕請求。當這種情況發生時,Fable 5 不會回應,請求可以在 Opus 4.8 上重新執行——後者不執行相同的分類器——因此使用者仍然能得到回應。

API 團隊應如何處理拒絕回應?

將其視為正常的 API 結果,而非例外。檢查 stop_reason == "refusal"。使用伺服器端 fallbacks 參數、SDK 中介軟體,或實作附帶降級積分 token 的手動重試。繼續對話前請重置被拒絕的回合,否則你會持續收到拒絕。

降級意味著請求不安全嗎?

不是。分類器經過保守調校,因此相鄰類別中的無害請求有時也會觸發它們。Anthropic 表示不到 5% 的會話會遇到降級。將拒絕視為路由信號,而非對使用者的判決。

什麼情況下應以 Opus 4.8 作為預設模型?

當你不需要 Fable 5 的推理上限,且想完全避免路由邏輯時。Opus 4.8 的每 token 費用大約是 Fable 5 的一半,且不執行相同的分類器。對於例行工作,Opus 4.8 通常是更合理的預設選擇。對於長期自主代理執行,配置了降級的 Fable 5 才是正確做法。

結論

Claude Fable 5 的降級是一個路由事件,不是錯誤。 分類器以保守方式觸發,API 回傳乾淨的 200,Anthropic 提供了伺服器端參數和 SDK 中介軟體,可以處理重試、快取計費和對話歷史,無需你編寫太多程式碼。

實作工作很小。思維框架的轉換才是較難的部分。一旦你停止將拒絕視為例外,其他一切就水到渠成了。

我仍在觀察網路安全分類器在合法問題上的觸發頻率。再一週的資料應該能告訴我是否需要在我這端調整任何東西。下週繼續更新。

往期文章: