1. AI 敏感词过滤用例
keyword 规则是引擎中最简单的规则:你给它一份词项列表,网关
会在某个阶段把它们中的任意一个与文本匹配。匹配是不区分
大小写的子串——BadWord、badword 和 BADWORD 都匹配,并且
即使词项嵌入在一个更长的词中也会匹配(因此 class 也匹配
classic)。每个词项都被当作一个字面字符串,而不是模式;你不必
转义正则元字符。
在控制台中保存规则一次,将防护栏绑定到任意 API 密钥(或将它
设为工作区默认值),那个密钥上的每一次调用都会被筛查,无需
修改 SDK,无需重新部署。策略存在于网关中,而不在你的应用中——
你的应用继续像以前一样调用 /v1/chat/completions。
2. 在控制台中编写规则
这里的每一步都是你自己会话下的控制台操作。创建和编辑 防护栏需要工作区中的 Developer+。只有最后的/v1/* 调用使用
sk-orca-... 中继密钥。
添加一条 keyword 规则
添加一条规则:
- Type: Keyword denylist(
keyword) - Stage: Both(请求和响应)
- Action: Block
- Keywords: 你的禁用词项,每行一个
测试它
打开 Test 标签页,粘贴一个包含禁用词项的样本,选择一个
阶段,并在本地运行该策略——没有上游调用,没有配额(参见
§5)。
3. 选择动作
keyword 规则为每条规则选择一个动作:Block——拒绝调用
Block——拒绝调用
任何匹配都会以 HTTP 400
guardrail_blocked 拒绝请求。
被拦截的请求不消耗配额——输入阶段拦截在计量之前触发;
输出阶段拦截会退回预先扣除的配额——并被标记为 skip-retry。
用它处理任一方向都绝不能通过的词项。参见
guardrail_blocked 错误。Mask——脱敏词项
Mask——脱敏词项
每个匹配项会被就地替换为一个编辑标签,请求带着净化后的
文本继续——上游模型永远看不到原始词项。参见
动作。
Flag——仅观察
Flag——仅观察
记录一条匹配并且不改变流量的任何方面。用它在切换到执行
之前衡量一个词项出现的频率。
Spotlight——包裹为不可信数据(输入)
Spotlight——包裹为不可信数据(输入)
用分隔符包裹匹配到的文本(例如
⟦UNTRUSTED⟧…⟦/UNTRUSTED⟧),让模型把它视为数据,而不是
指令——一种输入阶段的提示注入防御。文本仍然到达模型,
只是被围起来。参见动作。4. 流式覆盖
你选择的动作会与响应是否流式相互作用:| 动作 | 非流式 | 流式 |
|---|---|---|
block(输出) | 执行 | 执行——扫描器切断流 |
mask(输出) | 执行 | 尚未——遵循 block 决策,被脱敏的文本不转发(路线图) |
5. 绑定前先测试
在任何密钥指向它之前,先证明规则如你所愿地工作。打开编辑器内 的 Test 标签页,粘贴一个样本,选择阶段,然后运行:6. 发送请求
用一个绑定到banned-terms 的密钥,像以前一样调用 OrcaRouter——
无需新的请求头,无需修改 SDK:
guardrail_blocked 被拒绝。把动作换成 mask,词项则在转发前
被就地脱敏。
7. 查看触发了什么
每条触发的规则都会记录一条匹配——规则类型、动作、阶段和 一个详情字符串(对于 keyword 规则,是匹配了多少个词项)——呈现在 工作区 Matches 信息流中。 如果一个良性词项一直匹配(一个拒绝列表条目是某个常见词的 子串),从 Matches 信息流把它标记为误报并收紧该条目。参见 调优误报。8. 接下来去哪里
正则检测器
当一份字面拒绝列表不够时,匹配结构化模式——SKU、订单号、
格式。
品牌安全
建立在 keyword 规则之上的脏话、竞争对手提及和儿童安全
预设。
动作
block、mask 和 flag 有何不同以及何时使用每一个。
防护栏参考
完整引擎——每种规则类型、字段和路由。
llm_judge 规则会针对一个工作区模型
运行语义检查。