大模型的有害输出,往往不是单纯的“模型不够聪明”,而是安全目标、用户指令和应用场景之间发生了冲突。一个模型可能在常规测试中拒绝明显危险请求,却在多轮对话、角色扮演、输入改写或外部文档注入后,逐渐偏离原有的安全边界。因此,安全对齐不能只依赖一次训练或一个关键词过滤器,而应当覆盖模型训练、应用编排、攻击测试和上线监控的完整链路。

安全对齐解决的到底是什么问题
安全对齐的核心,不是让模型拒绝所有可能存在风险的内容,而是让模型在遵守系统目标和安全边界的同时,尽可能准确地完成合法任务。理想状态下,模型能够区分正常的技术讨论、风险分析和真正具有伤害意图的请求,并在无法安全回答时给出清晰、克制的拒答或替代建议。
这项工作通常包含几个层面。监督微调用于向模型展示符合预期的回答方式;基于人类反馈的强化学习(RLHF)则通过人工偏好或评价信号,让模型更倾向于产生有帮助、诚实且安全的响应;红队测试用于主动寻找模型和应用中的失效场景;输入输出过滤则在模型之外增加一道运行时防线。
这些方法各自解决不同问题。训练改变模型的行为倾向,红队测试暴露薄弱环节,过滤器降低危险内容进入或离开系统的概率。把其中任何一项当成唯一防线,都会留下明显缺口。
监督微调与 RLHF:让模型学会安全地回应
监督微调的基本思路,是准备包含安全示范的训练样本,让模型学习在不同风险场景下如何回答。例如,面对明显有害的请求,样本不应只有简单拒绝,还可以展示如何解释无法协助的原因,以及如何将问题转向防御、合规或教育用途。
高质量样本的关键在于覆盖边界,而不是堆积大量相同的拒答句式。模型需要接触直接请求、含糊请求、多轮逐步诱导、专业术语包装和正常问题与风险问题混合等情况。否则,模型可能只学会识别固定表达,而没有真正掌握风险判断。
RLHF进一步利用人工反馈来调整模型输出偏好。评价者可以比较多个候选回答,判断哪个回答更有帮助、更准确,也更符合安全要求。经过多轮优化后,模型通常会更稳定地拒绝明显危险内容,并减少不必要的攻击性、歧视性或误导性表达。
但 RLHF 并不等于安全证明。它依赖反馈数据的覆盖范围和评价标准,模型学到的也往往是统计意义上的行为倾向,而不是一套绝对可靠的规则。如果训练样本主要包含单轮、直白的危险请求,模型就可能在更复杂的上下文中表现不稳定。例如,攻击者先以正常问题建立对话,再逐步改变任务目标;模型在每一轮都只看到局部合理的请求,却可能在连续回应中最终输出不应提供的内容。
因此,训练阶段应当同时关注“拒绝什么”和“如何正确完成安全任务”。过度拒答会损害正常使用,拒答过少则会放大风险。评估时不能只看拒答率,还要检查回答是否准确、是否泄露了不应透露的内部信息,以及是否因为过度概括而给出新的误导。
红队测试:把模型放进真实的对抗环境
红队测试不是让测试人员随意尝试几个危险问题,而是系统性地模拟攻击者,寻找模型、提示模板和应用流程中的薄弱点。测试对象也不应局限于基础模型,还应覆盖检索内容、工具调用、会话记忆、用户界面和输出处理环节。
一个常见攻击场景是越狱提示。攻击者可能通过角色设定、复杂任务包装、冲突指令或多轮对话,试图让模型忽略原有的安全约束。直接要求模型越过规则通常容易被识别,但经过多次对话逐步拆分目标后,风险判断会变得更困难。
另一个场景是间接提示注入。应用将网页、文档或用户上传内容交给模型处理时,外部内容可能夹带与原任务冲突的指令。模型如果没有区分“需要分析的数据”和“可以执行的指令”,就可能把文档中的恶意内容当成更高优先级的操作要求,进而改变回答方向,甚至影响后续工具调用。
多语言、编码变形、拼写扰动和长上下文也是值得测试的方向。它们的共同点不是某个固定技巧,而是试图让安全分类器、模型本身或应用逻辑无法正确理解用户意图。测试人员应关注攻击是否能跨越多个组件,而不是只记录模型最终有没有说出某个词。
红队测试结果最好转化为可重复的回归测试。每次发现新的失效案例,都应保存其风险类别、触发条件、模型响应、严重程度和修复状态。后续更换模型、修改系统提示或调整过滤器后,重新运行这些案例,确认修复没有被新变更破坏。测试还应采用不同背景和专长的人员,避免所有测试者使用同一种思路。
输入过滤与输出过滤:在模型外增加运行时护栏
输入过滤可以在请求进入模型前识别明显的高风险意图、指令冲突和异常结构。它既可以进行内容分类,也可以检查用户输入是否试图覆盖系统约束、提取内部提示,或把外部文本伪装成系统指令。
不过,输入过滤不适合只依赖关键词。简单的关键词规则容易被改写绕过,也可能误伤正常的安全研究、代码审计和风险教育内容。更稳妥的做法是结合上下文、任务类型、会话历史和应用权限进行判断,并把高风险请求转入更严格的处理路径。
输出过滤则检查模型已经生成的内容,阻止明显有害、敏感或不适合当前场景的结果被返回给用户。相关措施还可以包括敏感信息识别与脱敏,避免模型输出中出现不应暴露的个人信息、访问凭据或其他机密内容。对于面向公众的应用,输出过滤尤其适合作为最后一道防线。
过滤器本身也会失效。模型可能用隐晦表达传达危险意图,分类器可能无法理解长对话中的上下文,过滤器过于严格又会让正常请求频繁失败。更重要的是,过滤器只能检查它看到的输入和输出,无法自动解决权限过大、工具调用缺少确认或应用把不可信内容直接交给执行组件等问题。

为什么安全对齐仍然容易被绕过
安全对齐面对的是概率系统,而不是一组完全确定的规则。模型会根据上下文预测下一步输出,同一风险意图经过不同表述、不同语言或不同对话顺序处理后,结果可能并不一致。
对抗性攻击利用的正是这种不稳定性。攻击者不一定直接提出危险目标,而可能把目标拆成多个看似普通的子任务,或者借助虚构场景、翻译任务和格式转换来隐藏真实意图。多轮对话中的风险尤其容易被低估,因为单独查看某一轮时,它可能并不明显。
应用层的组合也会扩大攻击面。一个只负责问答的模型,风险主要集中在输出内容;如果模型还能读取外部资料、调用工具或修改业务状态,提示注入就可能从“生成不当回答”升级为“影响应用行为”。这也是为什么基础模型通过了安全测试,并不代表整个产品已经安全。
目前不存在能够覆盖所有规避攻击的单一方案。安全措施必须结合具体应用场景调整,并通过持续测试验证效果。企业不应把一次评估结果当成永久结论,也不应把某个安全分数直接等同于生产环境中的安全性。
企业部署时更实际的安全策略
企业首先要定义风险边界,而不是先选择某种训练方法。需要明确哪些内容可以回答,哪些内容必须拒绝,哪些内容需要人工复核,以及模型是否允许访问外部资料、执行操作或处理高风险业务。风险严重程度和出现概率不同,测试与防护资源也应有所区分。
在系统设计上,建议将不可信输入、模型指令和可执行操作分开管理。外部文档即使被模型读取,也不应自动获得与系统指令相同的权限;模型输出即使看起来合理,也不应未经校验就直接触发关键操作。涉及外部工具时,应采用最小权限、参数校验和必要的人工确认,把模型的“建议”与系统的“执行”明确分离。
部署前应建立覆盖多轮对话、间接提示注入、角色包装、语言变形和异常长输入的测试集,并记录每个案例的风险等级和处置结果。红队测试不应只安排在上线前,模型、提示模板、过滤策略或业务流程发生变化后,都应重新运行关键回归案例。
上线后则要持续观察拒答、异常输出、用户投诉和人工拦截等信号。监控的目的不是收集越多数据越好,而是保留足以定位问题的必要信息,并控制敏感内容的暴露范围。发现新的攻击路径后,应将其反馈到训练样本、过滤规则、权限策略和回归测试中,形成闭环。
最后,要为安全失败准备降级方案。无法判断的请求可以转入人工审核、限制工具权限或返回更保守的结果;当某项防护组件异常时,系统应避免继续以完整权限运行。真正可靠的对齐策略,不是承诺模型永远不会出错,而是让错误更难发生、更容易被发现,也更容易被控制在有限范围内。