跳转到主要内容
你可以将防护栏绑定到单个 API 密钥,但大多数团队想要一个 底线:一个适用于工作区中每一个密钥的内容策略,除非 某个密钥选择了别的东西。那条底线就是工作区默认值—— 一个被标记为 is_default 的防护栏,当某个密钥没有明确绑定时 网关会回退到它。 本页涵盖默认 AI 防护栏:如何设置它、解析如何工作,以及一条 值得记住的不变量——每个工作区一个默认值。完整的引擎 参考请见防护栏参考
这里的一切都是托管网关(api.orcarouter.ai)上的控制台 操作,在你自己的会话下运行。只有最后的 /v1/* 调用使用 sk-orca-... 中继密钥。晋级或降级默认防护栏需要工作区中的 Developer+

1. 为何设置默认 AI 防护栏

按密钥绑定很精确,但容易遗忘——签发一个新密钥、跳过 下拉菜单,那个密钥就带着筛查上线了。工作区默认值 弥补了这个缺口:

无绑定的密钥继承它

任何 guardrail_id 未设置(0/null)的密钥都会被默认值 自动筛查——包括你设置之后创建的密钥。

编辑一次,切换整个工作区

默认值存在于网关中,而不在每个密钥上。编辑它,每个继承的 密钥都会在下一次调用时切换——无需重新部署,无需修改 SDK。
一种常见模式:把一个保守的 PII Shield 设为工作区默认值, 让任何东西都不会意外泄露,然后在特定密钥需要时让它们绑定一个 更严或更宽松的策略。

2. 将防护栏晋级为默认值

在控制台中打开 Guardrails,编辑你想作为底线的那个防护栏, 并打开 Set as workspace default。保存。
1

创建或选择一个防护栏

像往常一样编写一个策略——例如 PII Shield 预设,一条在 both 阶段脱敏的单条 pii 规则。
2

标记为默认值并保存

打开 Set as workspace default 并保存。该防护栏的 is_default 标志会翻为开启。
3

让密钥保持无绑定

任何没有明确防护栏的密钥现在都会继承这一个。已经指向 另一个防护栏的密钥保持它们的绑定。
默认值还必须已启用才能生效。一个被标记为 is_default 但已禁用的防护栏会解析为不执行——开关和启用状态是 相互独立的两个开关。

3. 每个工作区一个默认值——晋级是原子的

这是那条不变量:每个工作区最多有一个防护栏带有 is_default。你永远不必手动取消旧的那个。 当你将一个新防护栏晋级为默认值时,网关会在同一事务中 降级上一个默认值——晋级和降级要么都落地,要么都不落地。 永远不会出现两个防护栏同时是默认值的窗口,也永远不会出现 没有默认值的窗口。
Before:   billing-pii   ← is_default ✓
          legal-redact

Promote "legal-redact" to default
          (single transaction)
          ┌─────────────────────────────────────────┐
          │  legal-redact  → is_default = true       │
          │  billing-pii   → is_default = false       │
          └─────────────────────────────────────────┘

After:    billing-pii
          legal-redact  ← is_default ✓
你不必先降级。只需晋级新的那个——旧的默认值会被原子地 为你清除。被降级的防护栏仍然存在并保持启用;它只是不再 充当回退。明确绑定到它的密钥不受影响。
无论你是在创建时晋级(把一个全新的防护栏标记为默认值) 还是在编辑时晋级(在现有防护栏上翻转该标志),都适用 同样的原子交换。

4. 解析如何使用默认值

对任意请求,网关按如下固定顺序精确解析出一个防护栏 (或无):
顺序适用内容
1密钥明确的 guardrail_id——如果它存在且已启用
2工作区已启用的 is_default 防护栏(密钥没有绑定)。
3无——请求与没有策略的工作区字节相同。
明确的密钥绑定永不静默回退到默认值。如果某个密钥指向 一个防护栏而该防护栏被禁用,则密钥解析为不执行——而不是 工作区默认值。禁用绑定的防护栏是该密钥的关闭开关。(防火墙 策略在这里行为不同——一个被禁用的绑定防火墙策略确实会 回退到工作区默认值。参见 防护栏 vs. 防火墙。)
所以默认值只是无绑定密钥的回退。它永远不会覆盖一个做出了 明确选择的密钥。
设计上故障开放(Fail-open)。 如果默认值解析遇到瞬时错误, 网关会降级为不执行,而不是让请求失败。 安全性降级;可用性得以保留。

5. 实例演练

假设你的工作区有两个防护栏和三个密钥:
  • pii-shield——被标记为工作区默认值,已启用。
  • strict-block——拦截信用卡,不是默认值。
  • 密钥 A——无绑定。密钥 B——绑定到 strict-block。密钥 C ——绑定到一个你后来禁用的防护栏。
一个提到 email 的请求会这样解析:
guardrail_id 未设置,因此解析下沉到已启用的 is_default 防护栏 pii-shield。email 在模型看到之前被 脱敏为 [EMAIL]
明确绑定胜出。strict-block 适用;从不查询默认值。
绑定存在,但它的防护栏被禁用,因此解析返回——它 不会下沉到 pii-shield。请求未被筛查。
现在将 strict-block 晋级为默认值并保存。在一个事务中 strict-block.is_default 变为 truepii-shield.is_default 变为 false。密钥 A 在它的下一次调用时立即继承 strict-block——而无需对密钥本身做任何改动。

6. 确认请求命中了默认值

用一个无绑定密钥发送请求,并检查 Matches 信息流——在你的 默认防护栏下记录的一条匹配就确认了回退触发:
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": "Reply to jane@acme.com please"}
    ]
  }'
如果默认值是一个脱敏 PII 策略,网关会在转发前把 email 改写为 [EMAIL]。如果它拦截,调用返回 HTTP 400 guardrail_blocked ——这不消耗配额并被标记为 skip-retry。完整的响应形态见 guardrail_blocked 错误
想在任何密钥依赖它之前证明默认值的行为?打开防护栏 编辑器中的 Test 标签页,在 input 阶段运行一个样本——没有 上游调用,没有配额。参见 测试与 eval

7. 接下来去哪里

绑定到单个密钥

当一个密钥需要与工作区底线不同的策略时。

创建你的第一个防护栏

端到端的流程——创建、测试、绑定、发送。

解析与范围

密钥、策略和工作区如何组合。

版本管理

每次晋级都会写入一条历史记录——diff 和回退。
晋级或降级默认值本身就是一次版本化的变更——在防护栏上 打开 History 查看 is_default 何时翻转以及谁做的。完整的 引擎请阅读防护栏参考