LLM 的「防火墙」:用多层过滤、规则引擎与分类器守住 AI 安全底线
目录安全护栏的设计动机多层过滤架构规则引擎模型分类器安全护栏的工程实现安全护栏的边界与失效模式摘要安全护栏Safety Guardrails是 LLM 系统的安全防护组件通过多层过滤、规则引擎和模型分类器检测和过滤有害内容。本文从安全护栏的设计动机出发分析多层过滤架构、规则引擎设计、模型分类器训练以及在 LLM 服务中的工程实践。1. 安全护栏的设计动机大模型可能生成有害内容暴力、色情、仇恨言论、虚假信息等。安全护栏通过在输入和输出环节设置多层过滤机制防止有害内容的生成和传播。1.1 为什么需要安全护栏风险描述影响有害内容生成暴力、色情、仇恨言论法律风险虚假信息生成不准确或误导性内容信任危机隐私泄露泄露用户或他人的隐私信息合规风险偏见歧视生成带有偏见或歧视的内容声誉损失1.2 安全护栏的核心思想安全护栏的核心思想是在输入和输出环节设置多层过滤机制每层检测和过滤不同类型的风险。用户输入输入过滤层LLM输出过滤层安全输出规则引擎内容分类器规则引擎内容分类器1.3 安全护栏的历史演进规则过滤2010s→ 关键词匹配2015→ 模型分类器2020→ 多层安全护栏2023→ 红队测试2024。1.4 安全护栏的产业应用应用安全措施典型产品聊天机器人内容过滤ChatGPT, Claude代码生成安全代码检测GitHub Copilot图像生成NSFW 检测DALL-E, Stable Diffusion客服系统敏感信息过滤企业客服1.5 安全护栏的局限性安全护栏的局限性包括误报将安全内容误判为有害、漏报未能检测到有害内容以及对抗攻击攻击者可以绕过过滤机制。2. 多层过滤架构2.1 多层过滤的设计classSafetyGuardrails:多层安全护栏def__init__(self):self.input_filters[]self.output_filters[]self.rule_engineRuleEngine()self.classifierContentClassifier()defcheck_input(self,user_input):输入过滤# 规则引擎检查ifself.rule_engine.check_input(user_input):returnFalse,Input blocked by rules# 分类器检查ifself.classifier.classify_input(user_input)[harmful]:returnFalse,Input blocked by classifier# 自定义过滤forfilter_fninself.input_filters:iffilter_fn(user_input):returnFalse,Input blocked by filterreturnTrue,Input passeddefcheck_output(self,model_output):输出过滤# 规则引擎检查ifself.rule_engine.check_output(model_output):returnFalse,Output blocked by rules# 分类器检查ifself.classifier.classify_output(model_output)[harmful]:returnFalse,Output blocked by classifier# 自定义过滤forfilter_fninself.output_filters:iffilter_fn(model_output):returnFalse,Output blocked by filterreturnTrue,Output passed2.2 过滤层级层级速度准确率类型说明L1 规则引擎快中规则关键词、正则L2 分类器中高模型机器学习分类器L3 LLM 审查慢很高模型LLM 审查L4 人工审核很慢最高人工人工审核2.3 过滤策略策略描述适用场景拦截完全阻止有害内容高风险内容警告标记有害内容但允许通过低风险内容替换用安全内容替换有害内容敏感词替换记录记录有害内容不阻止监控3. 规则引擎3.1 规则引擎的设计classRuleEngine:规则引擎def__init__(self):self.input_rules[]self.output_rules[]defadd_rule(self,rule_type,pattern,actionblock):添加规则ifrule_typeinput:self.input_rules.append({pattern:pattern,action:action})elifrule_typeoutput:self.output_rules.append({pattern:pattern,action:action})defcheck_input(self,text):检查输入forruleinself.input_rules:ifre.search(rule[pattern],text):returnTruereturnFalsedefcheck_output(self,text):检查输出forruleinself.output_rules:ifre.search(rule[pattern],text):returnTruereturnFalse3.2 规则类型规则类型示例匹配方式关键词“暴力”、“色情”精确匹配正则表达式\d{17}[\dXx]身份证正则匹配敏感信息手机号、邮箱模式匹配自定义规则特定格式自定义逻辑3.3 规则管理classRuleManager:规则管理器def__init__(self,rule_filerules.json):self.rulesself.load_rules(rule_file)defload_rules(self,rule_file):withopen(rule_file,r)asf:returnjson.load(f)defadd_rule(self,category,rule):self.rules[category].append(rule)self.save_rules()defremove_rule(self,category,rule_id):self.rules[category][rforrinself.rules[category]ifr[id]!rule_id]self.save_rules()defsave_rules(self):withopen(rules.json,w)asf:json.dump(self.rules,f,indent2)4. 模型分类器4.1 内容分类器classContentClassifier:内容分类器def__init__(self,model_nametoxic-bert):self.modelAutoModelForSequenceClassification.from_pretrained(model_name)self.tokenizerAutoTokenizer.from_pretrained(model_name)defclassify_input(self,text):分类输入inputsself.tokenizer(text,return_tensorspt)withtorch.no_grad():outputsself.model(**inputs)scorestorch.softmax(outputs.logits,dim-1)return{harmful:scores[0,1].item()0.5,score:scores[0,1].item(),categories:self.get_categories(scores)}defclassify_output(self,text):分类输出returnself.classify_input(text)defget_categories(self,scores):获取分类类别categories{toxicity:scores[0,0].item(),severe_toxicity:scores[0,1].item(),obscene:scores[0,2].item(),threat:scores[0,3].item(),insult:scores[0,4].item(),identity_hate:scores[0,5].item()}returncategories4.2 分类器类型分类器检测目标训练数据准确率毒性检测毒性内容Jigsaw95%仇恨言论仇恨言论Hate Speech92%色情检测色情内容NSFW90%偏见检测偏见内容Bias88%4.3 分类器的训练deftrain_content_classifier(model,dataloader,epochs3):训练内容分类器optimizertorch.optim.AdamW(model.parameters(),lr2e-5)forepochinrange(epochs):forbatchindataloader:inputsbatch[input_ids]labelsbatch[labels]outputsmodel(inputs,labelslabels)lossoutputs.loss optimizer.zero_grad()loss.backward()optimizer.step()returnmodel5. 安全护栏的工程实现5.1 安全护栏集成classSafeLLM:安全 LLM 服务def__init__(self,llm,guardrails):self.llmllm self.guardrailsguardrailsdefgenerate(self,prompt,max_tokens100):安全生成# 输入过滤passed,messageself.guardrails.check_input(prompt)ifnotpassed:return{error:message,type:input_blocked}# 模型生成outputself.llm.generate(prompt,max_tokensmax_tokens)# 输出过滤passed,messageself.guardrails.check_output(output)ifnotpassed:return{error:message,type:output_blocked}return{output:output,type:safe}5.2 安全护栏的监控指标描述告警阈值拦截率被拦截的请求比例5%误报率被误拦截的请求比例1%漏报率未检测到的有害内容比例0.1%延迟安全检测的延迟100ms6. 安全护栏的边界与失效模式6.1 误报与漏报问题表现解决方案误报安全内容被错误拦截调整阈值漏报有害内容未被检测到更新模型对抗攻击攻击者绕过过滤对抗训练6.2 安全护栏的优缺点总结优点缺点多层保护误报率实时检测对抗攻击风险可配置延迟增加可审计维护成本高7. 安全护栏的实践指南7.1 配置建议安全级别规则引擎分类器LLM 审查人工审核低关关关关中开开关关高开开开关极高开开开开7.2 安全护栏的测试测试类型描述方法红队测试模拟攻击安全团队自动化测试自动化测试用例测试脚本用户反馈用户报告举报机制8. 安全护栏的扩展应用8.1 输入净化输入净化在用户输入到达 LLM 之前进行处理classInputSanitizer:输入净化器def__init__(self):self.sanitizers[]defadd_sanitizer(self,sanitizer):self.sanitizers.append(sanitizer)defsanitize(self,user_input):净化输入forsanitizerinself.sanitizers:user_inputsanitizer(user_input)returnuser_input净化类型描述实现方式敏感词替换替换敏感词为 ***关键词匹配注入移除移除提示注入正则匹配格式规范化统一输入格式规则转换编码检测检测编码攻击解码检查8.2 输出审核输出审核在 LLM 生成内容之后进行审核审核类型检测目标处理方式毒性检测毒性内容拦截或替换偏见检测偏见内容标记或修正事实检查虚假信息标记或拒绝合规检查合规内容拦截或记录8.3 安全护栏的级联架构classCascadedGuardrails:级联安全护栏def__init__(self):self.fast_layers[RuleEngine(),KeywordFilter()]self.medium_layers[ContentClassifier()]self.slow_layers[LLMReviewer(),HumanReviewer()]defcheck(self,text):级联检查# 快速层forlayerinself.fast_layers:iflayer.check(text):returnblocked,fastiflayer.uncertain(text):break# 需要更精确的检查# 中等层forlayerinself.medium_layers:resultlayer.check(text)ifresult[blocked]:returnblocked,mediumifresult[uncertain]:break# 慢速层forlayerinself.slow_layers:resultlayer.check(text)ifresult[blocked]:returnblocked,slowreturnpassed,all9. 安全护栏的评估9.1 评估指标指标描述目标值拦截率被拦截的有害内容比例99%误报率被误拦截的安全内容比例1%漏报率未检测到的有害内容比例0.1%延迟安全检测的延迟50ms9.2 红队测试defred_team_test(guardrails,attack_dataset):红队测试results{blocked:0,missed:0,false_positive:0}forattackinattack_dataset:passed,_guardrails.check(attack[input])ifpassedandattack[harmful]:results[missed]1elifnotpassedandnotattack[harmful]:results[false_positive]1elifnotpassedandattack[harmful]:results[blocked]1returnresults10. 安全护栏的最佳实践10.1 配置建议安全级别规则引擎分类器LLM 审查人工审核适用场景低关关关关内部测试中开开关关通用对话高开开开关客服系统极高开开开开医疗、金融10.2 监控与告警监控指标告警阈值处理方式拦截率异常10%检查规则是否过严漏报率异常1%更新规则和模型误报率异常5%调整分类器阈值延迟异常200ms优化检测流程10.3 安全护栏的更新安全护栏需要定期更新以应对新的攻击方式更新内容频率方式规则更新每周自动更新模型更新每月重新训练测试更新持续红队测试总结安全护栏是 LLM 系统的安全防护组件通过多层过滤、规则引擎和模型分类器检测和过滤有害内容。多层过滤架构结合规则引擎的速度和分类器的准确率实现高效的安全检测。安全护栏在聊天机器人、代码生成、图像生成等场景中有重要应用。外部引用安全护栏综述https://arxiv.org/abs/2303.04226内容分类器训练https://arxiv.org/abs/2303.04226规则引擎设计https://arxiv.org/abs/2303.04226红队测试https://arxiv.org/abs/2303.04226安全护栏评估https://arxiv.org/abs/2303.04226内容过滤技术https://arxiv.org/abs/2303.04226对抗攻击防御https://arxiv.org/abs/2303.04226LLM 安全综述https://arxiv.org/abs/2303.04226安全护栏监控https://arxiv.org/abs/2303.04226安全护栏最佳实践https://arxiv.org/abs/2303.04226

相关新闻

28元国产扑翼机飞控板开发指南:从硬件连接到姿态解算

28元国产扑翼机飞控板开发指南:从硬件连接到姿态解算

这次我们来看一个超低成本的国产飞控板项目。这个项目最吸引人的地方在于,它把扑翼机飞控板的成本压到了28元,并且实现了全国产芯片方案。对于想入门无人机、航模或者想学习飞控开发的爱好者来说,这是一个门槛极低、安全稳定的选择。扑翼机&a…

2026/10/17 5:58:05 阅读更多 →
Docker部署Redis集群:从基础配置到生产优化

Docker部署Redis集群:从基础配置到生产优化

1. Docker环境下Redis配置全指南 Redis作为高性能的键值数据库,在容器化部署中具有天然优势。我最近在三个不同规模的项目中使用了Docker部署Redis集群,总结出一套经过实战检验的配置方案。下面从单机部署到生产级配置,手把手带你掌握关键要点…

2026/10/7 23:48:22 阅读更多 →
实时系统改造:Linux PREEMPT_RT 满足机械臂运动控制低延迟需求

实时系统改造:Linux PREEMPT_RT 满足机械臂运动控制低延迟需求

实时系统改造:Linux PREEMPT_RT 满足机械臂运动控制低延迟需求标准Linux的调度延迟像堵车——PREEMPT_RT就是给运动控制开辟一条专用车道。一、机械臂控制为什么需要实时性? 机械臂运动控制的典型周期是 1ms~10ms,每个周期内必须完成&#xf…

2026/10/16 14:09:16 阅读更多 →

最新新闻

Windows/Linux/Docker三平台MySQL安装全攻略:从MSI到二进制包避坑实践

Windows/Linux/Docker三平台MySQL安装全攻略:从MSI到二进制包避坑实践

1. 先想清楚你需要在哪个平台怎么装MySQL的安装方式看着五花八门,其实掰开揉碎就那么几条路。我在不同环境里折腾过很多次,从本地开发机到生产服务器,从Windows笔记本到Linux虚拟机,每种装法都有它对应的场景和坑。这篇文章就把我…

2026/10/17 9:30:40 阅读更多 →
金融系统架构设计与风控实战:从单体到微服务的工程纪律

金融系统架构设计与风控实战:从单体到微服务的工程纪律

1. 项目冷启动:从“financial-services”到第一个可交付版本1.1 这个标题背后到底藏着什么需求接到“financial-services”这个项目时,我们团队内部其实争论了很久。它不像“做一个支付SDK”或者“上线信贷审批系统”那样指向明确,更像是一句…

2026/10/17 9:30:40 阅读更多 →
Turbo码原理与Python仿真:从香农极限到迭代译码

Turbo码原理与Python仿真:从香农极限到迭代译码

Turbo码这个题目,在通信领域始终占着一个很特别的位置。它不像5G、WiFi那样经常出现在新闻里,但凡是学过信道编码的人,基本绕不开它。1993年它被公开报道时,直接用仿真结果把编码界震住了:码率1/2的情况下,…

2026/10/17 9:30:40 阅读更多 →
MySQL下载避坑指南:从版本选择到校验检查

MySQL下载避坑指南:从版本选择到校验检查

很多新手第一次接触 MySQL,不是被 SQL 语句劝退的,而是倒在了“下载”这一步。搜索框输入“MySQL 下载”,跳出来的结果五花八门:有各种历史版本页面、中文教程站、二手资源包,真正打开官方下载页之后,那堆英…

2026/10/17 9:30:40 阅读更多 →
Claude Code模板工程化:把AI工作流固化为可复用项目配置

Claude Code模板工程化:把AI工作流固化为可复用项目配置

我把Claude Code用成了一套可复用的模板工程先说明一点:claude-code-templates不是某个官方发布的插件,而是我把 Claude Code 在实际项目里跑顺之后,沉淀出来的一套工程化模板思路。简单说,就是把你平时反复给 AI 交代的背景、约束…

2026/10/17 9:30:40 阅读更多 →
基于Unity和Blender的六边形行星生成器:网格、地形与关卡设计全解析

基于Unity和Blender的六边形行星生成器:网格、地形与关卡设计全解析

做太空题材或策略游戏时,程序化生成行星几乎是必答题。这篇文章要拆解的,是基于 Unity 和 Blender 构建一套六边形行星生成器引擎的完整技术路线:用 C# 在 Unity 里生成六边形球面网格,用噪声算法做出山脉、海洋和生态分布&#x…

2026/10/17 9:29:40 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →