跳轉到主要內容
一個失控的提示就是一張失控的帳單。一個把 400KB 逐字稿貼進情境的代理、一個持續重送同一個臃腫請求的重試迴圈、一個串流 50,000 字元文字牆的模型——每一個都計費你從沒打算花的權杖。cost 預設類別在那些請求前面放置一個硬性上限,這樣閘道就會在它們抵達上游模型與計量之前停止它們。 這是成本控制使用情境的一個聚焦落地頁。完整的防護欄引擎——每種規則類型、欄位與路由——請見 防護欄參考

1. LLM 成本防護欄使用情境

槓桿是一種內建規則類型:max_chars。它限制某階段文字的字元數。沒有模型呼叫、沒有網路跳躍——一個確定性的長度檢查,在計量之前於請求上執行,或在模型回傳之後於回應上執行。 兩種形狀,由規則的動作挑選:

封鎖過大的請求

在一條動作為 block 的請求 max_chars 規則上,任何超過限制的提示都會以 HTTP 400 guardrail_blocked 被拒絕——而一個被封鎖的請求不消耗配額,因為封鎖在用量被計量之前觸發。

夾住過大的回應

在一條動作為 maskmax_chars 規則上,文字會被截斷到限制而非拒絕——呼叫方仍會得到一個可用的答案,只是被限定範圍。在回應階段用以限制外送很有用。
上限計算字元(rune 感知——日本語 是三個,不是九個),而非權杖。出貨的權杖導向預設會以標準的字元→權杖比率把一個權杖預算轉換成一個字元上限;若要更嚴格的預算,直接收緊規則的 max_chars 欄位。

2. 出貨的成本預設

在主控台中開啟 New guardrail 分割按鈕並從 cost 範本類別挑選。三個預設各植入一條 max_chars 規則:
預設階段 · 動作上限
Prompt-Size Capinput · block50,000 字元
Token Cost Cap (prompt)input · block200,000 字元(~50K 權杖)
Response Size Capoutput · block32,000 字元
每個預設是種子,不是鎖——套用它,然後編輯 max_chars 值、階段或動作以符合你的預算。撰寫與編輯防護欄需要工作區中的 Developer+
Response Size Cap 是一個輸出階段上限。若要夾住一個長答案而非拒絕它,把它的動作切換為 mask——閘道會把回應修剪到限制,而使用者仍會得到一個截斷但可用的回覆而非一個錯誤。

3. 撰寫你自己的上限

一條成本規則是引擎中最簡單的規則——一個階段、一個動作,以及一個整數。若要把請求限制在 20,000 字元並拒絕任何更大的:
{
  "type": "max_chars",
  "stage": "input",
  "action": "block",
  "max_chars": 20000
}
在主控台中把它新增到任何防護欄。max_chars 必須是一個正整數;驗證器會拒絕 0 或負值。

4. 綁定前先測試

在任何金鑰指向它之前,先證明上限在你預期的地方觸發。開啟防護欄編輯器內的 Test 分頁,貼上一個樣本,選擇 input 階段,並在本機執行目前的政策——沒有上游呼叫,不消耗配額。一個超過限制的樣本會傳回一個被封鎖的裁決;一個未達限制的樣本會原封不動地通過。 對於一條夾住規則,沙盒會顯示截斷後渲染的文字,這樣你就能在依賴它之前確認上限落在一個 rune 邊界上。

5. 把上限綁定到一把金鑰

一個成本防護欄解析方式與任何其他完全一樣——把它綁定到一個 API 金鑰,或將它設為工作區預設值。這裡的每個步驟都是你自己工作階段下的一個主控台動作。
1

儲存防護欄

在主控台中建立或開啟一個防護欄,新增一條 max_chars 規則(或套用一個成本預設),並儲存。
2

綁定一把金鑰

編輯一個 API 金鑰並從 Guardrail 下拉選單選擇該防護欄(在金鑰上設定 guardrail_id),或將防護欄標記為工作區預設值。參見 綁定到金鑰帳戶預設值
3

發送請求

用那把金鑰,像以前一樣呼叫 OrcaRouter——無新標頭,無需修改 SDK:
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "...a very long prompt..."}
    ]
  }'
如果提示超過上限,呼叫會傳回 HTTP 400 guardrail_blocked 且不計費任何東西。

6. 一個被封鎖的請求花費什麼

一個請求階段的上限是最便宜的防護欄:它在用量被計量之前執行,所以一個過大的提示會以零配額成本被拒絕。
不會。輸入階段封鎖在計量之前觸發。輸出階段封鎖會在回應被拒絕後退還已預先扣除的配額。無論哪種情況,呼叫方都不消耗配額、會得到 HTTP 400 guardrail_blocked,而請求被標記為 skip-retry——重跑同一個過大的提示只會再次封鎖。參見 guardrail_blocked 錯誤
輸出階段的一個 max_chars block 在兩種情況下都會強制執行:在非串流回應上,答案會在回傳前被審查;在串流回應上,一旦緩衝區越過上限,掃描器就會在飛行途中切斷串流。輸出上的 mask(夾住)目前只套用於非串流回應。參見 串流覆蓋
不會。一條 max_chars 規則沒有子字串概念,所以 匹配動態 會記錄上限觸發了——它的類型、動作與階段——但永不記錄一個匹配子字串,即使 Log raw content 開啟也一樣。你得到的是它觸發了的訊號,而不必重新擷取那個過大的酬載。

7. 這適用於哪裡

一個 max_chars 上限是一個粗鈍的成本槓桿——一個硬性上限,而非每金鑰的支出預算。若要限制美元而非字元,在 API 金鑰本身上設定 credit_limit_usd0 = 無限制),閘道會獨立於任何防護欄強制執行它。兩者疊加:金鑰預算限制總支出,成本防護欄限制任何單一請求或回應的大小。
一個成本防護欄審查內容大小,而非模型選擇或路由決策。無論由哪個模型服務它,它都會拒絕一個過大的提示。若要治理一個代理的工具呼叫——拒絕破壞性動作或保留它們待審批——請使用 防火牆,它在工具呼叫介面(allow / deny / pending_approval)上做決策,而非內容介面。

8. 下一步去哪裡

輸入階段規則

請求審查如何在上游呼叫之前與計量之前執行。

輸出階段規則

審查與夾住模型的回應,無論串流與否。

guardrail_blocked 錯誤

HTTP 400 形狀、不消耗配額保證,以及 skip-retry。

測試與評測

在綁定金鑰之前針對一個語料庫證明一個上限。
成本上限限制大小。若要限制內容——PII、密鑰、不安全的提示——從 防護欄總覽 開始,或閱讀 防護欄參考 以了解完整引擎。