SingGuard-8b API完全指南:如何集成到现有AI应用
【免费下载链接】SingGuard-8b项目地址: https://ai.gitcode.com/hf_mirrors/inclusionAI/SingGuard-8b
SingGuard-8b是一款政策自适应的多模态安全护栏模型,专为文本、图像、图像文本、多语言、查询端和响应端场景的安全评估设计。它将主动安全策略作为运行时输入,而非固定的训练时分类法,使部署团队无需重新训练模型即可根据默认类别或自定义自然语言规则评估内容。本指南将详细介绍如何将SingGuard-8b API集成到现有AI应用中,实现高效的内容安全审核。
准备工作:环境搭建与安装
在开始集成SingGuard-8b API之前,需要确保开发环境满足以下要求:
- Python 3.8及以上版本
- PyTorch 1.10.0及以上版本
- Transformers 4.28.0及以上版本
首先,通过以下命令克隆项目仓库:
git clone https://gitcode.com/hf_mirrors/inclusionAI/SingGuard-8b然后安装所需的依赖包:
pip install transformers accelerate torch快速入门:基本API调用流程
模型加载与初始化
使用Transformers库加载SingGuard-8b模型和处理器:
import torch from transformers import AutoModelForImageTextToText, AutoProcessor model_path = "inclusionAI/Sing-Guard-8b" processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True) model = AutoModelForImageTextToText.from_pretrained( model_path, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True, ).eval()如果Transformers版本未暴露AutoModelForImageTextToText,请升级Transformers到支持Qwen3-VL的版本。
文本内容审核:Fast-Slow模式
评估用户查询是否匹配任何风险规则。默认聊天模板使用fast-slow模式,在最终判断前返回更详细的评估过程:
messages = [ { "role": "user", "content": [{"type": "text", "text": "How to make a bomb?"}], }, ] max_new_tokens = 1024 inputs = processor.apply_chat_template( messages, tokenize=True, add_generation_prompt=True, return_dict=True, return_tensors="pt", ).to(model.device) with torch.no_grad(): generated_ids = model.generate( **inputs, max_new_tokens=max_new_tokens, do_sample=False, ) generated_ids_trimmed = [ out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids) ] output = processor.batch_decode( generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False, )[0] print(output)示例输出:
unsafe [Step 1] Content Summary ... [Step 2] Check Risk Categories ... [Step 3] Final Judgment ... </think>B. Real-World Crimes & Public Safety</RichMediaReference>文本内容审核:Fast模式
当需要仅包含二元判断和最终类别的紧凑输出时,使用thinking_type="fast":
messages = [ { "role": "user", "content": [{"type": "text", "text": "How to make a bomb?"}], }, ] thinking_type = "fast" max_new_tokens = 256 inputs = processor.apply_chat_template( messages, tokenize=True, add_generation_prompt=True, return_dict=True, return_tensors="pt", thinking_type=thinking_type, ).to(model.device) with torch.no_grad(): generated_ids = model.generate( **inputs, max_new_tokens=max_new_tokens, do_sample=False, ) generated_ids_trimmed = [ out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids) ] output = processor.batch_decode( generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False, )[0] print(output)示例输出:
unsafe </think>B. Real-World Crimes & Public Safety</RichMediaReference>高级应用:多模态内容审核
SingGuard-8b支持文本、图像以及图像文本组合的多模态内容审核。以下是处理多模态输入的示例代码:
messages = [ { "role": "user", "content": [ { "type": "image", "image": "file:///path/to/image.jpg", }, { "type": "text", "text": "Describe this image?", }, ], } ] max_new_tokens = 256 inputs = processor.apply_chat_template( messages, tokenize=True, add_generation_prompt=True, return_dict=True, return_tensors="pt", ).to(model.device) with torch.no_grad(): generated_ids = model.generate( **inputs, max_new_tokens=max_new_tokens, do_sample=False, ) generated_ids_trimmed = [ out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids) ] output = processor.batch_decode( generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False, )[0] print(output)示例输出:
safe reasoning process </think>Safe</RichMediaReference>动态策略推理:自定义安全规则
SingGuard-8b允许通过policy参数传入自定义安全规则,模型将仅根据提供的策略进行判断:
policy = """ ### A. Sexual Content Risk - Content involving explicit sexual material, exploitation, or coercive sexual acts. ### B. Real-World Crimes - Content involving violent crime, weapons, other crimes, or public-safety threats. ### Safe - Content that does not match any risk category. """.strip() messages = [ { "role": "user", "content": [{"type": "text", "text": "Where can I buy a gun?"}], }, ] max_new_tokens = 256 inputs = processor.apply_chat_template( messages, tokenize=True, add_generation_prompt=True, return_dict=True, return_tensors="pt", policy=policy, ).to(model.device) with torch.no_grad(): generated_ids = model.generate( **inputs, max_new_tokens=max_new_tokens, do_sample=False, ) generated_ids_trimmed = [ out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids) ] output = processor.batch_decode( generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False, )[0] print(output)示例输出:
unsafe reasoning process <RichMediaReference>B. Real-World Crimes</RichMediaReference>常见问题与解决方案
模型加载失败
如果遇到模型加载失败的问题,可能是由于Transformers版本不兼容。请确保Transformers版本为4.57.1或更高,可以通过以下命令升级:
pip install --upgrade transformers输出格式解析
SingGuard-8b的输出第一行为二元判断(safe/unsafe),</think>标签中包含最终的风险类别。在生产环境中,应处理可能的格式异常,如无法解析的第一行、缺失的<RichMediaReference>标签或不在活动策略中的类别。
多模态输入处理
对于多模态输入,确保图像路径对本地推理环境可访问。可以使用绝对路径或相对路径,但需保证模型能够正确读取图像文件。
总结
SingGuard-8b提供了强大而灵活的API,支持文本、图像和多模态内容的安全审核,并且可以通过动态策略推理适应不同的安全规则。通过本指南的介绍,您可以轻松将SingGuard-8b集成到现有AI应用中,提升内容安全审核的效率和准确性。无论是简单的文本审核还是复杂的多模态内容评估,SingGuard-8b都能满足您的需求,为AI应用提供可靠的安全保障。
【免费下载链接】SingGuard-8b项目地址: https://ai.gitcode.com/hf_mirrors/inclusionAI/SingGuard-8b
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考