所有數字來自 Day 6 的 eval 分割、filter v3、ma-baseline template。
# bench/ma_injection.py
from bench.run import run
from guards.model_armor import ModelArmorGuard
for level in ["LOW_AND_ABOVE", "MEDIUM_AND_ABOVE", "HIGH_AND_ABOVE"]:
guard = ModelArmorGuard(template=f"ma-baseline-{level.lower()}")
results, lat = run(load_eval(categories=ALL_SIX), guard)
report(results, lat, tag=f"v3/{level}")
三個 confidence level 各建一個 template(ma-baseline-low 等),避免測試中途改設定造成快取污染。
【此處貼實測結果表截圖:列=六類語料,欄=三檔閾值,格=攔截率(n)】
表格每一格都要帶樣本數。這裡先講讀表的方法,數字由實測填入:
sanitizeUserPrompt 一次只看一段文字。多輪鋪陳型攻擊要不要把歷史一起送?送了會增加延遲與誤判,不送就看不到鋪陳。本系列測兩種:只送最後一輪、送最後三輪。【此處貼 ROC 風格的三點圖截圖:X=B-benign 誤判率,Y=攻擊類平均攔截率,三個點對應三檔】
讀法:
Day 26 會用 XSTest 補跑一次 safety 側的過度拒絕,這裡只看 security 側。
把 D-zh 每一筆手動翻成英文成 D-en(同語意、同攻擊結構),跑同一組設定。
【此處貼 D-zh vs D-en 攔截率對照截圖】
如果差距明顯,代表兩件事:一是 Model Armor 的訓練語料以英文為主,zh-TW 是弱項;二是這正是地端線的機會——Day 19 微調 ShieldGemma 時會刻意用 zh-TW 語料補這個缺口,Day 28 對照表會回來看這個差距有沒有被補上。
如果差距不明顯,那就是 Model Armor 的多語言支援比預期好,也要誠實寫出來。
【以下依實際狀況保留或刪除】
本系列每一篇實測的結論都用同一個格式:
在 eval 集(六類、共 N 筆、filter v3)上,
ma-baseline-<level>對攻擊類的平均攔截率為 X%,對 B-benign 的誤判率為 Y%。zh-TW 與英文的攔截率差距為 Z 個百分點。
有 N、有版本、有兩邊的數字。沒有「高達」、沒有「幾乎全部」。
Day 10:RAI 內容安全四類別與 confidence threshold 調校,以及 Model Armor 原生沒有的系統提示詞洩漏偵測要怎麼用 SDP 自訂型別補上。
Instagram @aid3fend。
更多 AI 資安筆記:aid3fend.com