跳转到主要内容

设计不拖垮延迟的 AI 安全层

阅读需 1 分钟Tian PanTian Pan

大多数团队引入护栏的方式,和引入日志一样随意:直接挂上去,以为代价很小,然后继续往下走。但代价并不小。一次内容审核检查要花 10–50ms,再加上 PII 检测,又是 20–80ms;再叠上输出 schema 校验和毒性分类器,在第一个 token 到达用户之前,串行开销就已累积到 200–400ms。加上 500ms 的模型响应,你那个"快速"的 AI 功能现在给人的感觉就是迟钝。

把锅甩给 LLM 是错的。护栏才是瓶颈。解决方案不是去掉安全措施,而是停止把安全检查当成一堆无差别的任务,改用架构思维来对待它。

安全栈的延迟解剖

不同的护栏机制运行在截然不同的时间量级上,理解这一差异是设计不叠加出数百毫秒延迟的护栏栈的第一步。

正则表达式和关键词过滤几乎是免费的——亚毫秒级、确定性执行、CPU 密集。一个设计良好的信用卡号或已知侮辱性词语的模式匹配,无论输入多长,都能在微秒内完成。

轻量级 ML 分类器——例如针对毒性或 PII 检测微调过的 BERT 量级模型——每次检查耗时 10–50ms。对于少数几个类别,串行执行的速度足够快,不会明显影响感知延迟。

基于 LLM 的评估器则完全不同。将一个完整的大模型调用用作输出判断器,最坏情况下需要 7–10 秒;即便是 Meta 的 PromptGuard(86M 参数)或 Prem AI 的 MiniGuard(600M 参数)这类较小的守卫模型,也需要精心部署才能控制在 100ms 以内。把主流前沿模型调用当毒性检测器,是一个延迟陷阱——准确,但慢到足以毁掉用户体验。

大多数团队犯的错误,是把这三个层级等同对待,然后串行堆叠。五个串行检查,每个加 50ms,在调用 LLM 之前就已经付出了 250ms。

风险分级架构

正确的心智模型是安检通道,而不是质检清单。你不会给每个人都做全身搜查——先过金属探测器,只有触发了才升级处理。

同样的逻辑适用于安全检查:

快速通道(微秒级): 正则模式、黑名单、输入长度约束、Unicode 归一化。立即拦截明显的违规。每个请求都经过这一层。

二级分析(10–100ms): 轻量级 ML 分类器——专用于 PII 检测、毒性、提示注入的小型模型。所有通过快速通道的请求都在此处理,但模型足够小,串行执行依然可行。

深度检查(秒级,仅用于模糊案例): 基于 LLM 的评估、多模型共识或人工审核排队。这一层只处理前两层标记为不确定的情况。大多数生产流量永远不会到达这里。

关键设计约束:每一层只向上传递值得进一步审查的流量。如果快速通道过滤器能捕获 95% 的明显违规,你昂贵的 LLM 判断器只需评估剩余的 5%。每个请求的平均成本大幅下降。

一个具体的基准:采用这种级联方式构建的系统,安全评估的 P50 延迟始终低于 70ms,P95 低于 120ms——这些数字在对话界面中对用户来说真正是无感的。

并行化:隐藏无法消除的成本

并非所有检查都可以通过分级来消除。某些类别需要对每个请求进行 ML 级别的评估,某些生产环境还有多个独立要求(PII、内容政策、合规监管),各自都需要独立检查。

串行运行这些检查是默认做法,也是错误做法。如果 PII 检测和毒性评估是相互独立的——事实上它们确实独立——就没有理由等一个完成再开始另一个。

Cloudflare 的 AI 防火墙是一个很好的生产案例:其架构会同时向每个检测模块发出并行、非阻塞的请求。多检查评估的总延迟由最慢的单个检查决定,而不是所有检查的总和。增加新的检测类别不会增加总延迟——只有当新类别比当前瓶颈更慢时才有影响。

实践含义:把每个安全检查当作协程,而不是阻塞调用。同时启动,统一等待结果,结果全部到达后再执行任何阻断逻辑。Python 的 asyncio 模式或任何语言的并行任务执行器都能免费实现这一点。

阻断 vs. 异步:真正重要的设计决策

并非所有安全检查都需要阻断响应。这是护栏设计中最关键的架构决策,大多数团队因为对所有内容都默认阻断而犯错。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 9 分钟

护栏税:当安全分类器让你的延迟和账单翻倍时

外挂式安全分类器堆叠在关键路径中,使延迟增加三倍并推高了你的推理账单。本文介绍如何根据爆炸半径调整护栏规模,并采用并发而非串行的方式运行它们。

llm
ai-safety
阅读需 10 分钟

Tokenizer 算术:生产环境中悄然作祟的隐藏层

BPE 分词会产生可预测的故障模式,破坏结构化输出解析器、损坏缓存策略,并导致成本估算在真实流量下崩溃——在责怪模型之前,先检查 tokenizer。

insider
llm
阅读需 10 分钟

思维的 p99:当模型决定你的请求耗时多久

推理模型使响应时间成为问题难度的函数,导致 p99 延迟激增至 p50 的 3-5 倍,超时调整也演变为成本问题。通过针对更小模型的对冲请求、按路由设置的推理开销上限以及感知难度的 SLO,可以将尾部延迟控制在合理范围内。

insider
llm
阅读需 8 分钟

那个你从未进行过负载测试的备用模型

配置好的备用模型只能证明你的路由机制有效 —— 却无法证明你的应用是否能在次要模型的输出下生存。本文探讨了为什么名义上的备用方案在真实流量下会失败,以及如何在供应商出故障前先行测试你的故障转移机制。

insider
llm
阅读需 8 分钟

渐进式上下文替换:在长 AI 对话中保持质量的方法

硬截断和朴素摘要在长 AI 对话中都会导致质量下降。滚动替换模式——对近期轮次保持原始状态,同时对较旧内容进行增量压缩——是在会话超过四十轮时保持质量的有效方法。

insider
ai-engineering