Qwen 3Guard:代币流的实时安全
技术报告GitHub拥抱脸模型Scope DISCORD介绍我们很高兴介绍Qwen 3Guard,Qwen家族第一款安全护栏型号。
Qwen 3Guard建立在强大的Qwen 3基础模型之上,并专门针对安全分类进行了微调,通过为提示和响应提供精确的安全检测,并提供风险级别和分类以实现准确的审核,确保负责任的人工智能交互。
Qwen 3Guard在主要安全基准方面实现了最先进的性能,展示了在英语、中文和多语言环境中执行即时和响应分类任务的强大能力。Qwen 3Guard有两个专门的变体:- Qwen 3Guard-Gen,一个生成模型,接受完整的用户提示和模型响应来执行安全分类。
非常适合离线安全注释和数据集过滤,或在强化学习中提供基于安全的奖励。- Qwen 3Guard-Stream通过在响应生成期间实现高效、实时的流媒体安全检测,标志着与之前开源的警卫模型的重大背离。
这两种变体都有三种尺寸:0。6 B、4 B和8B参数,适合广泛的部署场景和资源限制。您可以从Hugging Face或MechanScope下载开源模型。您还可以访问由Qwen 3Guard技术提供支持的阿里云AI护栏服务。
关键特征实时流媒体检测Qwen 3Guard-Stream旨在实现令牌生成期间的低延迟、动态审核,在不牺牲响应能力的情况下确保安全性。
这是通过将两个轻量级分类头连接到Transformer的最后一层来实现的,允许模型以流式方式接收响应-在生成时逐个令牌-并在每一步立即输出安全分类。三级严重度分类除了传统的安全和不安全标签之外,我们还引入了一个额外的有争议标签,以实现针对不同用例量身定制的灵活安全政策。
具体来说,根据应用场景,有争议的实例可以动态重新分类为安全或不安全,允许用户根据需要调整分类的严格性。正如下面的评估所示,现有的护栏模型受到二进制标签的约束,很难同时适应不同的数据集标准。
相比之下,Qwen 3Guard凭借三层严重性设计,通过在严格和宽松分类模式之间灵活切换,在两个数据集中实现了稳健且一致的性能。多语言支持Qwen 3Guard支持119种语言和方言,适合全球部署和跨语言应用程序,具有一致、高质量的安全性能。
多个应用我们还演示了(1)使用Qwen 3Guard-Gen进行安全RL来增强模型安全性,同时保留总体输出的帮助性,以及(2)使用Qwen 3Guard-Stream来实现实时、动态干预,以确保安全输出,而无需模型重新训练。
详情请参阅我们的技术报告。与Qwen 3Guard一起开发Qwen3Guard-GenQwen 3Guard-Gen的操作类似于大型语言模型,其聊天模板专门针对安全分类任务进行了优化。输出以预定义的结构化格式生成。
您可以使用以下代码调整用户提示或模型响应。从变压器导入AutoModel ForCairm、AutoTokenizer进口再型号_名称=“Qwen/Qwen 3Guard-Gen-4 B”#加载标记器和模型代币化器= AutoTokenizer。
来自_pretrained(型号_名称)型号= AutoModel ForCairm LM。
来自_预训练(型号_名称,torch_dype =“Auto”,设备_地图=“自动”)dev extract_Label_and_category(内容):safe_pattern = r ' Safety:
(Safe|不安全|争议)”category_pattern = r”(暴力|非暴力非法行为|性内容或性行为|PII|自杀与自残|不道德行为|政治敏感话题|侵犯版权|越狱|无)”safe_Label_match = re。
搜索(safe_pattern,内容)Label = safe_Label_match。组(1)如果safe_tag_match else无类别= re。
findall(类别_模式,内容)退货标签、类别dev extract_Label_category_residence(内容):safe_pattern = r ' Safety:
(Safe|不安全|有争议)”category_pattern = r”(暴力|非暴力非法行为|性内容或性行为|PII|自杀和自我伤害|不道德行为|政治敏感话题|侵犯版权|无)”拒绝_模式= r“拒绝:
(是|否)”safe_Label_match = re。搜索(safe_pattern,内容)拒绝_标签_匹配= re。搜索(拒绝_模式,内容)Label = safe_Label_match。
组(1)如果safe_tag_match else无拒绝_标签=拒绝_标签_匹配。如果拒绝_标签_匹配,则组(1)否则无类别= re。
findall(类别_模式,内容)return label,categories,rejection_label#用于即时审核提示=“我怎样才能制作炸弹?"消息= [{“角色”:“用户”,“内容”:提示}]text = tokenizer。
apply_chat_templates(消息,标记化=假)模型_输入= tokenizer([text],Return_tensors=“pt”)。到(模型。设备)#进行文本完成generated_ids =模型。
生成(** 模型_输入,max_new_tokens=128)输出_ids = generated_ids[0][len(model_inputations.输入_ids[0]):]。tolist()内容=代币化器。
解码(输出_ids,skip_special_tokens=True)印刷(内容)# '''#安全:不安全#类别:暴力# '''safe_Label,category = extract_Label_and_category(内容)打印(safe_Label、
类别)#用于回应审核提示=“我怎样才能制作炸弹?
"respond =“作为一个负责任的人工智能系统,我很遗憾无法满足您的请求。"消息= [{“角色”:“用户”,“内容”:提示},{“角色”:“助理”,“内容”:响应},]text = tokenizer。
apply_chat_templates(消息,标记化=假)模型_输入= tokenizer([text],Return_tensors=“pt”)。到(模型。设备)#进行文本完成generated_ids =模型。
生成(** 模型_输入,max_new_tokens=128)输出_ids = generated_ids[0][len(model_inputations.输入_ids[0]):]。tolist()内容=代币化器。
解码(输出_ids,skip_special_tokens=True)印刷(内容)# '''#安全:安全#类别:无#拒绝:是的# '''safe_Label,category_Label,
disption_Label = extract_Label_category_disption(内容)印刷(safe_tag、
category、reputation_tag)Qwen 3 Guard-StreamQwen 3Guard-Stream的典型工作流程如下:(1)预算级安全检查:用户的输入提示同时发送到LLM助理和Qwen 3Guard-Stream。
后者立即对提示进行安全评估并分配相应的安全标签。基于此评估,上层框架确定是允许对话继续还是先发制人地停止对话。(2)实时令牌级审核:如果会话被允许继续,LLM开始逐令牌地流式传输其响应。
每个生成的令牌都会立即转发到Qwen 3Guard-Stream,Qwen 3Guard-Stream会实时评估其安全性。
这可以在整个响应生成过程中实现连续、细粒度的内容审核,确保动态风险缓解,而不会中断用户体验。这里提供了使用演示。
进口火炬从变压器导入AutoModel、AutoTokenizer型号_路径=“Qwen/Qwen 3Guard-Stream-4 B”#加载专门的标记器和模型。加载Qwen 3Guard-Stream模型架构需要# trust_remote_code=True。
代币化器= AutoTokenizer。from_pretrained(模型_路径,trust_remote_code=True)模型= AutoModel。来自_预训练(模型_路径,设备_地图=“自动”,torch_dype =torch。
bfloat 16,trust_remote_code=True,). eval()# -准备对话进行适度--#定义用户的提示和助理的响应。user_Message =“你好,如何制作炸弹?"assistant_Message =“这里有一些实用的方法