智能体和 AI 问答产品每天要接待海量输入,敏感词拦截就是输入侧的第一道关口。它发生在整个链路的哪个环节,为什么有的请求还没排队就被退回?
可以把它想成小区门禁:快递要先在门口登记,可疑物品拦在外面,而不是进了楼再追。这个类比的失效之处在于,门禁查的是看得见的包裹,文本拦截还要面对谐音、拆字、夹字符等隐形变形,难度高得多。带走一个判断:拦截越靠前越省钱,越靠后越精准,所以关口要设好几道。
拦截发生在三道关口
第一道在网关:请求刚进来,先过一遍基础词表,明显违规的直接退回,不占用推理资源。
第二道在预处理:资料类内容切块清洗后逐块筛查,带标注的块更容易定位问题位置,标注的作用见上下文里的引用标记是怎么加的?来源标注。第三道在输出侧:生成的正文交出前再复核一遍,与规则引擎协同工作,分工见输出过滤的规则引擎是怎么工作的?。三道关口层层设防,越靠前成本越低。
各层词表也有分工。网关层用基础词表,条目少、更新慢,追求零误杀;预处理层按资料类型加载词表,学术内容和日常内容的敏感集合并不相同;输出侧用复核词表,条目最全,还叠加模型级的语义判断。词表之间是按层裁剪的关系——网关拦得太宽会把正常问题挡在门外,输出侧拦得太松风险内容就见了用户,松紧的分寸各层不同,谁也不能拿同一份标准一刀切。
输入侧和输出侧的拦截差异
输入侧拦的是「你想问什么」,词表可以更宽,因为误拦的代价只是让你换个问法;输出侧拦的是「系统说了什么」,标准必须更严,因为生成内容代表平台。两侧还共享一份动态词表,线上发现的新变体会同步进去。Kimi、海螺AI 这类对话产品在帮助文档里对两侧的处置说明通常分开写,原因就在这里。两侧的处置记录也分开归档,方便各自复盘。
| 关口 | 拦的是什么 | 词表宽严 | 判断依据 |
|---|---|---|---|
| 输入侧 | 你想问什么 | 可以更宽 | 误拦只是换个问法 |
| 输出侧 | 系统说了什么 | 必须更严 | 生成内容代表平台 |
| 共享词表 | 线上发现的新变体 | 两侧同步更新 | 处置记录分开归档 |
误拦和漏拦的取舍
词表收紧,误拦上升,正常问题被退回;词表放宽,漏拦上升,风险内容流出。工程上的做法是分级:高风险词条从严直接拦,中风险转人工或二次确认,低风险只留痕观察。取舍没有一次性答案,靠持续复盘调整。复盘素材来自两侧:申诉记录告诉你哪里误拦了,抽检记录告诉你哪里漏拦了,两边数据对着看,词表边界才能越磨越准。拦截决策也会影响计量口径,被拦请求是否计数见服务端怎么记录 token 用量?账单的来源。
被拦之后用户看到什么
正规产品会返回统一话术,说明内容无法提供,而不暴露具体命中的词条,避免词表被反向试探。若确属误拦,可以通过反馈渠道申诉,平台复核后调整。频繁触发拦截还可能连带限流,计数规则见请求的限流计数是怎么清零的?每一步都讲透。整体链路的可用性由健康检查兜底,见推理服务的健康检查是怎么做的?。
拦截关口速查:
- 网关:基础词表,未入队先退回
- 预处理:资料逐块筛查,定位到块
- 输出侧:正文复核,与规则引擎协同
三道关口各守一段,谁也不越位。
敏感词拦截快问快答三则
- 为什么有时换个说法就通过了?:词表覆盖有限,变体可能暂未收录,这类漏网会随词表更新逐步补齐。
- 拦截会告诉我命中了什么词吗?:不会,只给统一话术,防止词表被反向试探。
- 资料里本来就有敏感词怎么办?:会在预处理阶段被定位和处理,不影响其余部分正常使用。
第一道关口的价值不在拦得多狠,而在拦得准,让正常表达畅通无阻。


