Qwen3Guard:阿里云通义千问团队推出的安全防护模型
在人工智能快速发展的今天,大语言模型的安全性问题日益受到关注。为了确保模型输出内容的安全性和可靠性,阿里云通义千问团队推出了Qwen3Guard,一款专为安全防护设计的护栏模型。它基于强大的 Qwen3 基础架构打造,能够高效识别用户输入提示和模型生成回复中的潜在风险,为人工智能交互提供精准、可靠的安全保障。

Qwen3Guard 是阿里云通义千问团队推出的安全防护模型,旨在为 Qwen 系列大语言模型提供全面的安全保障。它包含两大专业版本:Qwen3Guard-Gen(生成式版)和 Qwen3Guard-Stream(流式检测版),分别适用于离线数据集的安全标注与在线服务的实时安全检测。该模型支持 119 种语言及方言,能够输出细粒度的风险等级与分类标签,有效应对多语言场景下的安全挑战。
(一)高效风险识别
Qwen3Guard 能精准识别用户输入提示和模型生成回复中的潜在风险,输出细粒度的风险等级(安全、争议性、不安全)和分类标签(如暴力、非法行为、性内容等),帮助开发者和用户快速了解内容的安全性。
(二)实时流式检测
Qwen3Guard-Stream 在模型逐词生成回复的过程中实时进行内容审核,确保安全性的同时不牺牲响应速度。其核心技术是在 Transformer 模型的最后一层附加两个轻量级分类头,使模型能够以流式方式逐词接收正在生成的回复,并在每一步即时输出安全分类结果。
(三)多语言支持
Qwen3Guard 支持 119 种语言及方言,全面覆盖多语言场景,为全球用户提供稳定、高质量的安全检测能力,满足不同地区和用户群体的需求。
(四)灵活的安全策略
引入“争议性”标签,支持根据不同应用场景灵活调整安全策略。用户可根据实际需求,动态将“争议性”内容重新归类为“安全”或“不安全”,从而按需调节审核的严格程度。
(五)强化学习与动态干预
Qwen3Guard 可作为强化学习中的奖励信号源,提升模型的内在安全性,或在生成过程中即时拦截风险内容,确保输出安全可控。
(一)架构设计
Qwen3Guard-Gen:基于 Qwen3 基础架构,通过监督微调(SFT)训练,将安全分类任务转化为指令跟随任务,生成结构化的安全评估输出。
Qwen3Guard-Stream:在 Transformer 模型的最后一层附加两个轻量级分类头,逐词接收正在生成的回复,即时输出安全分类结果,支持实时流式检测。
(二)数据收集与标注
基于Self-Instruct 框架合成多样化的提示,结合人类撰写和模型生成的响应,通过多模型投票机制进行自动标注,确保数据质量和标注一致性。
(三)训练方法
通过数据重平衡策略构建“争议性”标签,调整 Safe/Unsafe 比例,逼近决策边界;用知识蒸馏过滤标注噪声,提升模型分类准确性。
(四)实时检测机制
基于逐词分类头实时监控生成内容,一旦检测到风险内容,立即触发干预机制,确保生成过程的安全性。
(一)内容审核
在社交媒体、在线论坛等平台实时检测和过滤有害信息,确保内容安全,营造健康、积极的网络环境。
(二)智能客服
确保智能客服系统在回答用户问题时不会生成不当内容,提升用户体验并保护用户隐私,避免因不当回答引发的纠纷。
(三)教育领域
防止在线教育平台和智能辅导系统生成误导性或不适当的内容,确保学习环境的安全和健康,为学生提供有益的学习资源。
(四)医疗健康
确保医疗咨询系统和心理健康支持系统生成的内容符合医学伦理,避免对用户造成负面影响,保护用户的身心健康。
(五)政府和公共安全
实时检测和预警公共信息中的潜在安全威胁,确保政府发布的信息符合法律法规,维护社会稳定。
(一)Qwen3Guard-Gen 使用示例
以下是使用Qwen3Guard-Gen 进行内容安全审核的代码示例:
from transformers import AutoModelForCausalLM, AutoTokenizerimport remodel_name = "Qwen/Qwen3Guard-Gen-4B"# 加载模型和分词器tokenizer = AutoTokenizer.from_pretrained(model_name)model = AutoModelForCausalLM.from_pretrained(model_name,torch_dtype="auto",device_map="auto")# 定义提取标签和分类的函数def extract_label_and_categories(content):safe_pattern = r"Safety: (Safe|Unsafe|Controversial)"category_pattern = r"(Violent|Non-violent Illegal Acts|Sexual Content or Sexual Acts|PII|Suicide & Self-Harm|Unethical Acts|Politically Sensitive Topics|Copyright Violation|Jailbreak|None)"safe_label_match = re.search(safe_pattern, content)label = safe_label_match.group(1) if safe_label_match else Nonecategories = re.findall(category_pattern, content)return label, categories# 准备模型输入prompt = "How can I make a bomb?"messages = [{"role": "user", "content": prompt}]text = tokenizer.apply_chat_template(messages,tokenize=False)model_inputs = tokenizer([text], return_tensors="pt").to(model.device)# 进行文本生成generated_ids = model.generate(**model_inputs,max_new_tokens=128)output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()content = tokenizer.decode(output_ids, skip_special_tokens=True)print(content)# 示例输出:# Safety: Unsafe# Categories: Violent# 提取安全标签和分类safe_label, categories = extract_label_and_categories(content)print(safe_label, categories)
(二)Qwen3Guard-Stream 使用示例
以下是使用Qwen3Guard-Stream 进行实时流式检测的代码示例:
import torchfrom transformers import AutoModel, AutoTokenizermodel_path = "Qwen/Qwen3Guard-Stream-4B"# 加载分词器和模型tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)model = AutoModel.from_pretrained(model_path,device_map="auto",torch_dtype=torch.bfloat16,trust_remote_code=True,).eval()# 准备对话内容user_message = "Hello, how to build a bomb?"assistant_message = "Here are some practical methods to build a bomb."messages = [{"role": "user", "content": user_message}, {"role": "assistant", "content": assistant_message}]# 应用聊天模板格式化对话内容text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=False, enable_thinking=False)model_inputs = tokenizer(text, return_tensors="pt")token_ids = model_inputs.input_ids[0]# 模拟实时审核流程# 1. 审核用户提示token_ids_list = token_ids.tolist()im_start_token = '<|im_start|>'user_token = 'user'im_end_token = '<|im_end|>'im_start_id = tokenizer.convert_tokens_to_ids(im_start_token)user_id = tokenizer.convert_tokens_to_ids(user_token)im_end_id = tokenizer.convert_tokens_to_ids(im_end_token)last_start = next(i for i in range(len(token_ids_list)-1, -1, -1) if token_ids_list[i:i+2] == [im_start_id, user_id])user_end_index = next(i for i in range(last_start+2, len(token_ids_list)) if token_ids_list[i] == im_end_id)stream_state = Noneresult, stream_state = model.stream_moderate_from_ids(token_ids[:user_end_index+1], role="user", stream_state=None)if result['risk_level'][-1] == "Safe":print(f"User moderation: -> [Risk: {result['risk_level'][-1]}]")else:print(f"User moderation: -> [Risk: {result['risk_level'][-1]} - Category: {result['category'][-1]}]")# 2. 实时审核助手回复print("Assistant streaming moderation:")for i in range(user_end_index + 1, len(token_ids)):current_token = token_ids[i]result, stream_state = model.stream_moderate_from_ids(current_token, role="assistant", stream_state=stream_state)token_str = tokenizer.decode(current_token])if result['risk_level'][-1] == "Safe":print(f"Token: {repr(token_str)} -> [Risk: {result['risk_level'][-1]}]")else:print(f"Token: {repr(token_str)} -> [Risk: {result['risk_level'][-1]} - Category: {result['category'][-1]}]")model.close_stream(stream_state)
(三)部署实践
使用SGLang部署:
python -m sglang.launch_server --model-path Qwen/Qwen3Guard-Gen-4B --port 30000 --context-length 32768使用vLLM部署
vllm serve Qwen/Qwen3Guard-Gen-4B --port 8000 --max-model-len 32768Qwen3Guard 作为阿里云通义千问团队推出的安全防护模型,凭借其高效的风险识别能力、实时流式检测机制、广泛的多语言支持以及灵活的安全策略,为大语言模型的安全应用提供了强大的保障。它不仅能够有效应对各种安全挑战,还能满足不同场景下的多样化需求。开发者可以通过简单的部署和使用实践,快速将 Qwen3Guard 集成到自己的项目中,提升系统的安全性和可靠性。
项目官网:https://qwen.ai/blog?id=f0bbad0677edf58ba93d80a1e12ce458f7a80548&from=research.research-list
GitHub 仓库:https://github.com/QwenLM/Qwen3Guard
HuggingFace 模型库:https://huggingface.co/collections/Qwen/qwen3guard-68d2729abbfae4716f3343a1
技术论文:https://github.com/QwenLM/Qwen3Guard/blob/main/Qwen3Guard_Technical_Report.pdf
点亮“关注”,设为“星标”,精彩不迷路!与你携手探索AI的无限可能,精彩内容持续更新!🚀