regex 規則讓你在每次呼叫上匹配那個形狀,然後在提示抵達模型之前與回應抵達你的使用者之前封鎖、遮罩或標記它。
這是結構化模式使用情境的一個聚焦落地頁。完整的防護欄引擎——每種規則類型、欄位與路由——請見 防護欄參考。
這裡的每個步驟都是託管閘道(
api.orcarouter.ai)上的一個主控台動作。你在自己的工作階段下撰寫防護欄;只有最後的 /v1/* 呼叫使用 sk-orca-... 中繼金鑰。建立與編輯防護欄需要工作區中的 Developer+。1. 何時你需要一個 LLM 正規表示式防護欄控制
當你想捕捉的東西有一個字面封鎖清單無法表達的結構,但又不是pii 偵測器 已涵蓋的標準身份時,一條 regex 規則就是正確的工具。
結構化代碼
SKU、優惠券代碼、合約參照、內部工單 ID——一個固定前綴加上一個數字或字母數字串。
格式形狀的權杖
任何以形狀而非有限詞彙清單匹配的東西——一個訂單號版面、一個序號格式、一個內部 URL 模式。
輸出洩漏模式
一個不該浮現內部主機名、檔案路徑或紀錄 ID 格式的回應——掃描模型的輸出尋找該形狀。
便宜、確定性的檢查
純模式比對,無模型呼叫、無網路——在任一方向的每個請求上執行都安全。
2. RE2——線性時間、無回溯參照
一條regex 規則的 pattern 是一個 Go RE2 正規表示式。RE2 是讓一條 regex 規則能在每個請求上安全執行的引擎:
線性時間比對——無災難性回溯
線性時間比對——無災難性回溯
RE2 保證比對時間與輸入長度成線性關係,無論模式為何。一個回溯引擎可能在一個對抗性輸入上指數爆炸(一個「ReDoS」);RE2 不會。這就是為何你的模式在熱路徑上於每次呼叫評估都安全。
無回溯參照、無 lookaround
無回溯參照、無 lookaround
RE2 不支援回溯參照(
\1)、lookahead 或 lookbehind。如果你正在移植一個依賴那些的 PCRE 模式,請在沒有它們的情況下重寫它。字元類別、錨點、量詞、交替與非擷取群組全都如預期運作。不分大小寫與旗標放在模式中
不分大小寫與旗標放在模式中
沒有一個獨立的「忽略大小寫」開關——行內設定旗標。前綴
(?i) 表示不分大小寫,(?m) 表示多行。範例:(?i)\bproject-orca\b。模式必須可編譯——在儲存時檢查
模式必須可編譯——在儲存時檢查
規則建構器會在你儲存防護欄時編譯你的模式。一個無法編譯的模式會被拒絕,並在錯誤中附上規則索引,所以一個壞偵測器永不抵達中繼路徑。
3. 一條正規表示式規則的剖析
一條regex 規則是引擎中繼 keyword 之後最小的規則:一個模式、一個階段,以及一個動作。
| 欄位 | 作用 |
|---|---|
pattern | 一個 Go RE2 正規表示式(線性時間、無回溯參照)。必須可編譯。 |
stage | input(請求)、output(回應)或 both。 |
action | block、mask 或 flag。 |
[REDACTED] 標籤——一條 regex 規則沒有型別,所以它不會渲染一個像 [EMAIL] 的每實體標籤。如果你想要一個具型別標籤或一個自訂替換權杖,改把那個形狀建模為一個 自訂 PII 實體。
4. 一個具體範例
假設你的內部訂單號看起來像ORD- 後接八位數字,而你絕不想要一個在模型的回應中被回顯回來。在 output 階段新增一條單一的 regex 規則:
然後像以前一樣呼叫 OrcaRouter——無新標頭,無需修改 SDK:
5. 階段與串流覆蓋
你挑選的動作會與回應是否串流互動:| 動作 | 非串流 | 串流 |
|---|---|---|
block(輸出) | 強制執行 | 強制執行——掃描器切斷串流 |
mask(輸出) | 強制執行 | 強制執行——掃描器改寫緩衝區 |
輸入階段規則在上游呼叫之前執行,所以它們不受串流影響——在模型看到請求之前就遮罩它已經上線。輸出 mask 與輸出 block 在串流與非串流回應上都會強制執行。參見 串流覆蓋。
6. 挑選一個動作
一條regex 規則每條規則挑選一個動作:
Block——拒絕呼叫
Block——拒絕呼叫
任何匹配都會以 HTTP 400
guardrail_blocked 拒絕請求。一個被封鎖的請求不消耗配額——輸入階段封鎖在計量之前觸發;輸出階段封鎖會退還已預先扣除的配額——並被標記為 skip-retry。參見 guardrail_blocked 錯誤。Mask——遮罩匹配項
Mask——遮罩匹配項
每個匹配項會就地替換為
[REDACTED],而請求以淨化後的文字繼續——上游模型(輸入階段)或你的使用者(輸出階段)永遠看不到原始內容。參見 動作。Flag——僅觀察
Flag——僅觀察
記錄一個匹配且不改變流量的任何部分。對一個新模式而言是正確的起點:把它以
flag 出貨,觀察 Matches 動態,然後在你信任它之後晉升為 mask/block。Annotate——附上一則註記
Annotate——附上一則註記
記錄一個匹配並附上一則註記(例如一個要在分流中呈現的發現),而不更改流量。參見 動作。
Spotlight——包裹為不可信資料
Spotlight——包裹為不可信資料
一種輸入階段防禦:每個匹配項被包裹在分隔符中(例如
⟦UNTRUSTED⟧…⟦/UNTRUSTED⟧),告訴模型把該文字當作資料而非指令——一種提示注入緩解。參見 動作。7. 查看觸發了什麼——並調校精確度
每條觸發的規則都會在工作區 Matches 動態中記錄一個 match——規則類型、動作、階段,以及一個詳情字串。 一個過於寬泛的模式是經典的正規表示式陷阱——\d{8} 匹配每一個八位數字串,而不只是你的訂單號。為它加上錨點(一個固定前綴如 ORD-、字邊界 \b),觀察 Matches 動態,並隨著進展標記誤報以收緊。若要針對一個語料庫進行 A/B 網格測試——證明一個模式捕捉到它該捕捉的東西而不標記良性流量——評測工具 就在隔壁分頁。參見 調校誤報。
8. 下一步去哪裡
自訂 PII 實體
當形狀是一個你想要具型別遮罩標籤或 Luhn 校驗的身份時——而非一個裸的
[REDACTED]。敏感詞
一個有限的字面詞彙清單——當你不需要結構時比一個模式更簡單。
動作
block、mask 與 flag 有何不同,以及何時使用各自。
防護欄參考
完整引擎——每種規則類型、欄位與路由。
regex 規則治理內容。若要治理一個代理的工具呼叫——拒絕破壞性動作、遮罩工具呼叫引數、要求審批——請使用 防火牆 及其 規則匹配器。對於任何模式都無法表達的模糊政策(有害性、離題、注入意圖),一條 llm_judge 規則會針對一個工作區模型執行語意檢查。若要查看正規表示式在整體設計中的位置,請閱讀 防護欄與防火牆。