1. LLM 成本防護欄使用情境
槓桿是一種內建規則類型:max_chars。它限制某階段文字的字元數。沒有模型呼叫、沒有網路跳躍——一個確定性的長度檢查,在計量之前於請求上執行,或在模型回傳之後於回應上執行。
兩種形狀,由規則的動作挑選:
封鎖過大的請求
在一條動作為 block 的請求
max_chars 規則上,任何超過限制的提示都會以 HTTP 400 guardrail_blocked 被拒絕——而一個被封鎖的請求不消耗配額,因為封鎖在用量被計量之前觸發。夾住過大的回應
在一條動作為 mask 的
max_chars 規則上,文字會被截斷到限制而非拒絕——呼叫方仍會得到一個可用的答案,只是被限定範圍。在回應階段用以限制外送很有用。上限計算字元(rune 感知——
日本語 是三個,不是九個),而非權杖。出貨的權杖導向預設會以標準的字元→權杖比率把一個權杖預算轉換成一個字元上限;若要更嚴格的預算,直接收緊規則的 max_chars 欄位。2. 出貨的成本預設
在主控台中開啟 New guardrail 分割按鈕並從 cost 範本類別挑選。三個預設各植入一條max_chars 規則:
| 預設 | 階段 · 動作 | 上限 |
|---|---|---|
| Prompt-Size Cap | input · block | 50,000 字元 |
| Token Cost Cap (prompt) | input · block | 200,000 字元(~50K 權杖) |
| Response Size Cap | output · block | 32,000 字元 |
max_chars 值、階段或動作以符合你的預算。撰寫與編輯防護欄需要工作區中的 Developer+。
3. 撰寫你自己的上限
一條成本規則是引擎中最簡單的規則——一個階段、一個動作,以及一個整數。若要把請求限制在 20,000 字元並拒絕任何更大的:max_chars 必須是一個正整數;驗證器會拒絕 0 或負值。
4. 綁定前先測試
在任何金鑰指向它之前,先證明上限在你預期的地方觸發。開啟防護欄編輯器內的 Test 分頁,貼上一個樣本,選擇input 階段,並在本機執行目前的政策——沒有上游呼叫,不消耗配額。一個超過限制的樣本會傳回一個被封鎖的裁決;一個未達限制的樣本會原封不動地通過。
對於一條夾住規則,沙盒會顯示截斷後渲染的文字,這樣你就能在依賴它之前確認上限落在一個 rune 邊界上。
5. 把上限綁定到一把金鑰
一個成本防護欄解析方式與任何其他完全一樣——把它綁定到一個 API 金鑰,或將它設為工作區預設值。這裡的每個步驟都是你自己工作階段下的一個主控台動作。6. 一個被封鎖的請求花費什麼
一個請求階段的上限是最便宜的防護欄:它在用量被計量之前執行,所以一個過大的提示會以零配額成本被拒絕。一個被封鎖的過大請求會消耗配額嗎?
一個被封鎖的過大請求會消耗配額嗎?
不會。輸入階段封鎖在計量之前觸發。輸出階段封鎖會在回應被拒絕後退還已預先扣除的配額。無論哪種情況,呼叫方都不消耗配額、會得到 HTTP 400
guardrail_blocked,而請求被標記為 skip-retry——重跑同一個過大的提示只會再次封鎖。參見 guardrail_blocked 錯誤。回應上限在串流上會強制執行嗎?
回應上限在串流上會強制執行嗎?
輸出階段的一個
max_chars block 在兩種情況下都會強制執行:在非串流回應上,答案會在回傳前被審查;在串流回應上,一旦緩衝區越過上限,掃描器就會在飛行途中切斷串流。輸出上的 mask(夾住)目前只套用於非串流回應。參見 串流覆蓋。一條成本規則會在動態中顯示匹配文字嗎?
一條成本規則會在動態中顯示匹配文字嗎?
不會。一條
max_chars 規則沒有子字串概念,所以 匹配動態 會記錄上限觸發了——它的類型、動作與階段——但永不記錄一個匹配子字串,即使 Log raw content 開啟也一樣。你得到的是它觸發了的訊號,而不必重新擷取那個過大的酬載。7. 這適用於哪裡
一個max_chars 上限是一個粗鈍的成本槓桿——一個硬性上限,而非每金鑰的支出預算。若要限制美元而非字元,在 API 金鑰本身上設定 credit_limit_usd(0 = 無限制),閘道會獨立於任何防護欄強制執行它。兩者疊加:金鑰預算限制總支出,成本防護欄限制任何單一請求或回應的大小。
8. 下一步去哪裡
輸入階段規則
請求審查如何在上游呼叫之前與計量之前執行。
輸出階段規則
審查與夾住模型的回應,無論串流與否。
guardrail_blocked 錯誤
HTTP 400 形狀、不消耗配額保證,以及 skip-retry。
測試與評測
在綁定金鑰之前針對一個語料庫證明一個上限。
