[[我也希望安全第一]]|第 8/30 天
Fable 5 上線後,資安研究者很快發現一些奇怪情況:閱讀部落格、做 code review,甚至要求「寫得更安全」都可能觸發 guardrail。系統會暫停原本的 Fable 對話,顯示請求被標記為 cybersecurity 或 biology,再回退到能力較低的模型。
對產品團隊來說,這種架構很好理解。最強模型具備更高風險能力,就在入口前放一個分類器;請求落入敏感領域時拒絕、降級,或交給通過身分審核的使用者。安全規則可以獨立更新,不必每次重新訓練模型。
對使用者來說,感受完全不同。他沒有要求攻擊任何系統,只因為出現幾個資安詞彙,手上的工具就突然變笨了。
Guardrail 擋住的不只是風險,也可能是人買這個模型的理由。
把簡化後的流程畫出來,外掛防護會是這樣:
request
↓
input classifier ── low risk ─→ frontier model ─→ output classifier ─→ response
│ │
├─ uncertain ─→ fallback model └─ flagged ─→ redact/refuse
└─ high risk ─→ refuse/verified-access workflow
這個做法的優點很務實:
代價也直接。分類器通常只看有限的文字和 metadata,很容易把領域和意圖混在一起。「分析惡意程式」可能是在寫攻擊,也可能是 incident response。門口先擋掉後,主模型根本沒有機會理解完整脈絡。
Fable 5.1 後來把降低 false positive 當成產品更新的一部分。Anthropic 另一次官方更新表示,調整 biology safeguards 後,相關 fallback 在自家測試中減少約 85%。這不是旁枝末節,而是 guardrail 對正常工作造成的摩擦已經大到必須被當成產品指標。
另一條路是讓主模型在 post-training 階段學會政策,把風險判斷和回答放進同一次推論:
request + policy context
↓
policy-trained model
├─ safe request → helpful answer
├─ dual-use request → bounded assistance
└─ harmful request → refuse/safe completion
↓
system policy + tool authorization + monitoring
這種模型有機會理解「同樣是漏洞程式碼,這次是在修補還是在部署攻擊」,也能用較自然的方式提供安全範圍內的協助。使用者不必因為碰到一個敏感關鍵字,就整段對話被切到另一個模型。
更新速度是它的弱點。模型學到的政策不像一條規則可以立刻改掉;行為會受 prompt、語言、上下文和新攻擊影響,也不容易精確說明是哪條 policy 造成拒答。
文章標題把兩條路寫成「外掛 vs 內建」,實際產品不會這麼乾淨。GPT-5.6 的官方 system card 描述的是 layered safeguards:模型訓練、監控、產品限制和分級發布一起工作,並沒有公開足夠細節讓外界把每一次拒答精確歸因到某個內部元件。因此這裡比較的是設計位置,不是宣稱 GPT-5.6 只靠模型內建防護。
如果要比較兩套架構,我會先要求以下幾個數字分開看:
| 指標 | 數字變差時,現場會發生什麼 |
|---|---|
| attack success rate | 有害請求穿過防護 |
| false positive/false refusal | 合法工作被拒絕或降級 |
| fallback rate | 使用者買了強模型,實際常被換成弱模型 |
| task success after safeguard | 安全處理後,原任務是否仍完成 |
| policy latency/token cost | 每次請求多一次分類與等待 |
| appeal/override rate | 使用者多常需要申訴或請管理員解鎖 |
| detection by slice | 某語言、領域或多輪情境是否特別容易漏掉 |
單獨把 attack success 壓低很容易:全部拒絕就好。只追 task success 也很容易:把 guardrail 關掉。真正的發布決策是在兩邊同時設門檻,而且高傷害切片不能被平均值蓋掉。
例如資安產品的正常請求成功率從 92% 掉到 61%,整體安全分數仍上升,對資安團隊來說也不能算成功。它可能會促使用戶換模型、關閉防護,或把整段工作搬到無法監控的環境。
一個新 classifier 不一定要第一天就拒絕請求。可以先在 shadow mode 裡只記錄 decision,不改變使用者看到的結果:
production request
├─→ current safeguard → actual response
└─→ candidate classifier → log only
團隊再抽樣檢查候選分類器準備攔下哪些正常工作,尤其是少數語言、公司內部術語和 dual-use 任務。累積足夠資料後,先對少量帳號 canary;每次 policy、classifier、主模型和 fallback model 都綁定版本,才知道誤判是從哪次更新開始。
對高風險領域,還可以加入 verified access。但身分驗證不能替代意圖判斷:有公司信箱的人仍可能濫用,沒有漂亮職稱的人也可能在修真正的漏洞。它只是另一個訊號。
| 情況 | 比較適合的控制位置 |
|---|---|
| 法規或公司政策今天就要改 | 外掛 policy/classifier |
| 需要理解長上下文與細微意圖 | 模型訓練與模型內判斷 |
| 涉及付款、刪除、資料外傳 | 確定性的 tool authorization |
| 擔心未知攻擊與模型漂移 | 多層監控、shadow eval、事件回應 |
最後一列很容易被忽略。模型防護和 classifier 都是機率性元件;付款 API 的授權不該因為前面某一層判定「大概安全」就放行。
下一篇會面對這套設計的代價。每多一層分類、確認和權限限制,任務就可能更慢、更貴、更常卡住;每拿掉一層,agent 又多一條可以走的路。問題不會是選出一套完全不漏的 guardrail,而是哪些能力值得開、破壞半徑要壓到多小。