/api/guardrail/* 路由對話。本頁是
逐路由的防護欄 API 參考:每個端點、它所需的工作區
角色,以及它預期的驗證。
關於防護欄是什麼以及規則如何組合,閱讀防護欄。
本頁是線級的伴讀。
1. 驗證與範圍
每個/api/guardrail/* 路由都是管理平面:它以你的控制台
工作階段或存取權杖(與你登入控制台時相同的身份)驗證,
而非中繼金鑰。
- 路由是工作區範圍化的——它們只看見活躍工作區的 防護欄。沒有任何東西跨越租戶邊界。
- 每個路由都由你的工作區角色 RBAC 把關(Viewer / Developer / Admin / Owner)。讀取對 Viewer+ 開放;沙箱 和所有寫入需要 Developer+;誤報端點需要 Admin(Admin 或 Owner)。
大多數團隊從不直接呼叫這些路由——控制台驅動全部。
當你想把防護欄放進原始碼控制、CI,或接入你自己的工具時,
才使用 REST 表面。
2. 一個具體呼叫——列出你的防護欄
讀取是最簡單的起點。以任何工作區成員(Viewer+)驗證:3. 一張表中的角色模型
決定層級的是你採取的動作,而非路由。| 動作 | 最低角色 |
|---|---|
| 讀取(列出/取得、歷史、匹配、評估執行)、執行評估 | Viewer+ |
| 執行沙箱測試 | Developer+ |
| 建立、更新、刪除、還原、上傳/刪除語料庫 | Developer+ |
| 標記/取消標記匹配為誤報 | Admin |
guardrails:read 權限(由 Viewer 及以上持有);寫入對應
guardrails:write(Developer 及以上)。標記誤報額外
需要 Admin 角色。關於角色和權限如何組合,參見範圍、金鑰與政策。
4. 按區域分組的路由
防護欄(CRUD + 沙箱)
防護欄(CRUD + 沙箱)
| 方法與路徑 | 角色 |
|---|---|
GET /api/guardrail/ | Viewer+ |
GET /api/guardrail/meta | Viewer+ |
GET /api/guardrail/my-permissions | 任何成員 |
GET /api/guardrail/:id | Viewer+ |
GET /api/guardrail/:id/tokens | Viewer+ |
POST /api/guardrail/test | Developer+ |
POST /api/guardrail/ | Developer+ |
PUT /api/guardrail/ | Developer+ |
DELETE /api/guardrail/:id | Developer+ |
meta 返回引擎詞彙——規則類型、階段、動作、PII
實體、預設值和預設值類別——以便工具能建構表單
而無需硬編碼列舉。test 在沙箱中對樣本
文字執行當前政策:什麼都不持久化,什麼都不上游。版本歷史
版本歷史
| 方法與路徑 | 角色 |
|---|---|
GET /api/guardrail/:id/history | Viewer+ |
GET /api/guardrail/:id/history/diff | Viewer+ |
GET /api/guardrail/:id/history/:version | Viewer+ |
POST /api/guardrail/:id/revert | Developer+ |
revert 把舊版本向前複製為一個新版本——
歷史從不被變更。評估與語料庫
評估與語料庫
| 方法與路徑 | 角色 |
|---|---|
POST /api/guardrail/:id/eval | Viewer+ |
GET /api/guardrail/:id/eval/runs | Viewer+ |
GET /api/guardrail/eval/runs/:run_id | Viewer+ |
GET /api/guardrail/eval/corpora | Viewer+ |
POST /api/guardrail/eval/corpora | Developer+ |
GET /api/guardrail/eval/corpora/:id | Viewer+ |
DELETE /api/guardrail/eval/corpora/:id | Developer+ |
Matches 動態
Matches 動態
| 方法與路徑 | 角色 |
|---|---|
GET /api/guardrail/match | 任何成員 |
GET /api/guardrail/match/grouped | 任何成員 |
GET /api/guardrail/match/stats | 任何成員 |
GET /api/guardrail/match/export | 任何成員 |
GET /api/guardrail/match/cap-status | 任何成員 |
GET /api/guardrail/match/:id | 任何成員 |
POST /api/guardrail/match/:id/mark-fp | Admin |
DELETE /api/guardrail/match/:id/mark-fp | Admin |
mark-fp 路由是
Admin 限定(Admin 或 Owner)且有速率限制。5. 解析:哪個防護欄適用
上面的路由管理政策;解析決定哪一個在給定的 中繼呼叫上執行。它是一個明確或預設模型,明確附加時 沒有靜默回退:- 金鑰上明確的
guardrail_id→ 該防護欄適用,前提是它 存在且已啟用。停用的附加是關閉開關——它 不回退。 - 沒有附加 → 工作區已啟用的預設防護欄(
is_default)。 - 兩者皆無 → 無強制執行。請求與從未啟用該功能的 工作區逐位元組相同。
guardrail_id;0/null
代表「無明確附加」。
6. 封鎖返回什麼
當block 動作規則觸發時,中繼呼叫(/v1/*,在你的中繼金鑰上)——
而非這些管理路由——返回:
| 欄位 | 值 |
|---|---|
| HTTP 狀態 | 400 |
| 錯誤代碼 | guardrail_blocked |
| 配額成本 | 輸入階段封鎖在預先消耗之前觸發,所以不計費 |
| 重試 | 標記為 skip-retry |
7. 動作、階段和規則類型一覽
meta 路由將這些作為列舉返回;這裡列出以便快速參考。
- 動作:
block(拒絕,HTTP 400)、mask(修訂匹配項,轉發 清理後的文字)、flag(僅記錄——觀察而不改變流量)、annotate(非阻塞——記錄匹配並向上游注入人類可讀的註記 以便模型在回答前被告知)、spotlight(非阻塞——將匹配到的不可信片段包進分隔符並告訴 模型將其視為資料而非指令;一種提示注入防禦, 實務上是輸入階段)。 - 階段:
input(請求)、output(模型的回應)或both。 - 規則類型:
keyword、regex、pii、max_chars、external、llm_judge、grounding。
輸出階段規則在串流和非串流回應上都強制執行:
block 切斷串流,而 mask 隨著區塊流動就地重寫匹配的片段。
在串流上,已沖出的位元組無法撤回,所以
匹配只有在足夠的部分緩衝後才會被處理——為求最強的
保證,在輸入階段掃描,它在模型看見之前
就清理請求。先在沙箱中證明你確切的階段/串流組合。8. 相關參考
防火牆 API
動作平面的對等項——
/api/workspace/firewall/* 和閘道路由。合規性 API
/api/compliance/*——包、簽署報告、居住地、就緒度。錯誤代碼
每個
*_blocked 代碼、它的 HTTP 狀態,以及如何處理。防護欄(深入)
規則類型、PII 實體、預設值、評估,以及完整的匹配動態。
