不该用 LLM 做安全检查的架构思考
深度剖析为何不应该用 LLM 审查恶意请求,而应采用严谨的架构设计。对构建安全 AI 应用的程序员具有实际指导意义。
深度剖析为何不应该用 LLM 审查恶意请求,而应采用严谨的架构设计。对构建安全 AI 应用的程序员具有实际指导意义。
“所以你反对用 LLM 做安全防护?”
不。我反对的是偷懒的架构设计。让我解释一下两者的区别,因为这正是我正在构建的工具背后最核心的设计决策。
目前 AI 安全领域的常见模式是:针对每一个请求,调用一次 LLM,然后问它:“这个请求是否恶意?”这种方式感觉很合理,因为模型能够理解细微的语义差异。但让前沿模型判断每一个请求,就像让你的资深工程师手动审查每一次提交中的每一行代码一样。不仅昂贵、缓慢,而且还没到午饭时间,他们就已经筋疲力尽了。
具体来说,在关键请求链路上使用 LLM-as-judge,会带来以下问题:
与其只使用一个昂贵的判断器,不如把检测设计成多个层级:先执行成本最低的检测,只有当某个案例确实有必要时,才继续升级:
这样一来,整个经济账就完全反转了。你不再需要为 100% 的请求支付 LLM 的费用,而只需为真正需要模型判断的极少数请求付费;并且这些判断会由你亲自选择的模型,在你自己的环境中完成。
这就是整个思路。它并不反对 LLM。这其实正是你在现实中组建安全团队的方式:快速的自动化检查负责处理海量请求,只有遇到棘手案例时,才会请昂贵的专家介入。
还有一个额外好处:由于始终开启的检测层都是确定性的,并且在本地运行,因此整个系统可以在你自己的 VPC 中以完全隔离网络的方式运行,无须调用任何托管模型。没有任何东西需要向外部服务器发送信息,因此它也不会这样做。
我为此做了一个 Demo,你可以实时观察这些快速检测层如何拦截攻击,无须注册:
https://g8kepr.com/demo-login
需要坦诚说明的权衡是:面对新颖而隐蔽的攻击时,确定性检测层的能力会弱于大模型,而这恰恰就是升级路径存在的原因。你的技术栈会如何判断一个请求是否值得接受昂贵的检查?我对此确实很好奇。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。