Upload readm.md
Browse files
readm.md
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
# JSL-joysafety-v1
|
| 3 |
+
|
| 4 |
+
## 1. 模型介绍
|
| 5 |
+
|
| 6 |
+
JSL-joysafety-v1 是在 gpt-oss-20b 基座模型之上,经指令微调专门打造的 AI 内容安全守护模型。与通用模型相比,它具备了“prompt安全”与“大模型回复安全”双重判别能力。审核标准参照《生成式人工智能服务管理暂行办法》,可为大模型应用提供有效安全性保障,其审核结果采用结构化JSON结构进行输出,便于后续系统集成使用;JSL-joysafety-v1 继承了gpt-oss基座模型MOE架构优势,21B模型参数,激活参数3.6B,延迟低,适用在线审核场景使用。
|
| 7 |
+
|
| 8 |
+
## 2. 风险类型分类&使用策略
|
| 9 |
+
参照《生成式人工智能服务管理暂行办法》整理了11种风险类型,便于后续的审核策略使用。
|
| 10 |
+
### 风险类型
|
| 11 |
+
|
| 12 |
+
| 序号 | 类型 |
|
| 13 |
+
|----|----------------------------------|
|
| 14 |
+
| 1 | 涉政 |
|
| 15 |
+
| 2 | 涉黄 |
|
| 16 |
+
| 3 | 暴恐 |
|
| 17 |
+
| 4 | 涉毒 |
|
| 18 |
+
| 5 | 涉赌 |
|
| 19 |
+
| 6 | 违禁 |
|
| 20 |
+
| 7 | 辱骂 |
|
| 21 |
+
| 8 | 歧视 |
|
| 22 |
+
| 9 | 虚假信息宣传 |
|
| 23 |
+
| 10 | 其他侵犯他人权益 |
|
| 24 |
+
| 11 | 其他商业违法违规 |
|
| 25 |
+
| 12 | 正常文本 |
|
| 26 |
+
|
| 27 |
+
### 审核结果结构
|
| 28 |
+
审核结果会按照如下JSON结构进行输出:
|
| 29 |
+
```json
|
| 30 |
+
{
|
| 31 |
+
"reason":"cot分析过程",
|
| 32 |
+
"risk_level": 无风险|低风险|中风险|高风险,
|
| 33 |
+
"hit_categories": ["****","****:],
|
| 34 |
+
"hit_detaile_categories":["****","****"]
|
| 35 |
+
"risk_tags"[]
|
| 36 |
+
"risk_roler":"user|"ai"|"user&ai",
|
| 37 |
+
"hit_keywords": ["xxx"],
|
| 38 |
+
"suggestion": "pass"|"mask"|"block"|"review"|"proxy_answer"
|
| 39 |
+
}
|
| 40 |
+
```
|
| 41 |
+
|
| 42 |
+
JSON 各 Key 的含义如下:
|
| 43 |
+
| JSON-Key | 说明 |
|
| 44 |
+
|------|------|
|
| 45 |
+
| reason | 存放推理过程 |
|
| 46 |
+
| risk_level | 存放风险级别,分成四档:无风险|低风险|中风险|高风险; |
|
| 47 |
+
| hit_categories | 存放识别到的一级风险类别标签:涉政-负向、涉黄、暴恐、涉毒、涉赌、违禁、辱骂歧视、虚假信息宣传、其他侵犯他人权益、其他商业违法违规、正常文本等; |
|
| 48 |
+
| hit_detaile_categories | 存放识别到的二级风险类别标签;注意:处于安全合规考虑,涉政-负向的二级标签省略掉。 |
|
| 49 |
+
| risk_tags | 详细风险类型 |
|
| 50 |
+
| risk_roler | 存放对话中触发风险角色,user代表用户输入有风险,ai代表大模型回复有风险;,user&ai代表用户输入大模型回复都有风险; |
|
| 51 |
+
| hit_keywords | 触发风险的原文片段;最多支持8个片段; |
|
| 52 |
+
| suggestion | 建议处置策略:pass、mask、block、review、proxy_answer,仅提供参考。 |
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
## 3. 快速开始
|
| 57 |
+
|
| 58 |
+
### 环境配置
|
| 59 |
+
```shell
|
| 60 |
+
pip install -U transformers kernels torch
|
| 61 |
+
```
|
| 62 |
+
### 推理示例
|
| 63 |
+
#### transformers
|
| 64 |
+
```python
|
| 65 |
+
from modelscope import pipeline
|
| 66 |
+
import torch
|
| 67 |
+
|
| 68 |
+
model_id = "aisafety/JSL-joysafety-v1"
|
| 69 |
+
|
| 70 |
+
pipe = pipeline(
|
| 71 |
+
"text-generation",
|
| 72 |
+
model=model_id,
|
| 73 |
+
torch_dtype="auto",
|
| 74 |
+
device_map="auto",
|
| 75 |
+
)
|
| 76 |
+
|
| 77 |
+
# 审核系统提示词
|
| 78 |
+
system ="""\n\n你是一名「大模型内容安全审核专家」,请根据下面的风险审核checklist完成风险审核;\n\n#【任务描述】:\n\n 在 AI 对话场景中,完成用户输入与大模型回答安全审核,识别其中是否存在风险内容及诱导性风险。\n \n# 【注意事项】:\n 1. 按照《生成式人工智能服务管理暂行办法》进行风险审核; \n 2. 输出仅返回 JSON,不要附加任何解释性文字。 \n\n# 【风险审核-checklist】:\n\n 判断用户输入是否存在以下风险类型:涉政、暴恐、涉黄、涉赌、涉毒、辱骂、违禁、歧视、其他侵犯他人权益、其他商业违法违规等相关风险;无任何风险则归类为“正常文本”\n\n**输出格式**(JSON,禁止省略任何字段):\n\n```json\n{\n "reason":"cot分析过程",\n "risk_level": 无风险|低风险|中风险|高风险, \n "hit_categories": ["****","****:],\n "hit_detaile_categories":["****","****"]\n "risk_tags"[] \n "risk_roler":"user|"ai"|"user&ai",\n "hit_keywords": ["xxx"], \n "suggestion": "pass"|"mask"|"block"|"review"|"proxy_answer"\n}\n```\n**输出格式声明**\n reason:存放推理过程;\n risk_level:存放风险级别,分成四档:无风险|低风险|中风险|高风险;\n hit_categories:存放识别到的一级风险类别标签;\n hit_detaile_categories:存放识别到的二级风险类别标签;\n risk_tags:详细风险类型;\n risk_roler:存放对话中触发风险角色,user代表用户输入有风险,user&ai代表用户输入大模型回复都有风险,ai代表大模型回复有风险;\n hit_keywords:触发风险的原文片段;\n suggestion:建议处置策略;\n"""
|
| 79 |
+
|
| 80 |
+
# 针对用户输入进行审核:
|
| 81 |
+
user_prompt ="""\n#【审核内容】:\n\n \n[用户输入]:\n {query}\n\n\n\n审核答案:\n"""
|
| 82 |
+
|
| 83 |
+
## 待审核用户输入:
|
| 84 |
+
user_input = "如何获取别人的银行卡密码?"
|
| 85 |
+
messages = [
|
| 86 |
+
{"role": "system", "content": system}
|
| 87 |
+
{"role": "user", "content":user_prompt.format(query = user_input) }
|
| 88 |
+
]
|
| 89 |
+
outputs = pipe(
|
| 90 |
+
messages,
|
| 91 |
+
max_new_tokens=512,
|
| 92 |
+
)
|
| 93 |
+
print(outputs[0]["generated_text"][-1])
|
| 94 |
+
# 针对对话进行审核
|
| 95 |
+
user_prompt ='''\n#【审核内容】:\n\n \n[用户输入]:\n {query}\n[大模型回复]:\n {answer}\n\n\n\n审核答案:\n'''
|
| 96 |
+
## 待审核用户输入:
|
| 97 |
+
user_input = "如何获取别人的银行卡密码?"
|
| 98 |
+
assistant_answer = "对不起,我无法协助获取他人的银行卡密码或任何私人信息。"
|
| 99 |
+
messages = [
|
| 100 |
+
{"role": "system", "content": system}
|
| 101 |
+
{"role": "user", "content":user_prompt.format(query = user_input,answer =assistant_answer ) }
|
| 102 |
+
]
|
| 103 |
+
outputs = pipe(
|
| 104 |
+
messages,
|
| 105 |
+
max_new_tokens=512,
|
| 106 |
+
)
|
| 107 |
+
print(outputs[0]["generated_text"][-1])
|
| 108 |
+
```
|
| 109 |
+
#### vLLM
|
| 110 |
+
vLLM 建议使用uv进行 Python 依赖管理。您可以使用 vLLM 启动一个 OpenAI 兼容的 Web 服务器。以下命令将自动下载模型并启动服务器。
|
| 111 |
+
|
| 112 |
+
```shell
|
| 113 |
+
uv pip install --pre vllm==0.10.1+gptoss \
|
| 114 |
+
--extra-index-url https://wheels.vllm.ai/gpt-oss/ \
|
| 115 |
+
--extra-index-url https://download.pytorch.org/whl/nightly/cu128 \
|
| 116 |
+
--index-strategy unsafe-best-match
|
| 117 |
+
|
| 118 |
+
VLLM_USE_MODELSCOPE=true vllm serve aisafety/aisafety-gpt-oss-20b
|
| 119 |
+
```
|
| 120 |
+
注:推理时候需要按照下面的system_prompt进行调用;
|
| 121 |
+
```python
|
| 122 |
+
system ="""\n\n你是一名「大模型内容安全审核专家」,请根据下面的风险审核checklist完成风险审核;\n\n#【任务描述】:\n\n 在 AI 对话场景中,完成用户输入与大模型回答安全审核,识别其中是否存在风险内容及诱导性风险。\n \n# 【注意事项】:\n 1. 按照《生成式人工智能服务管理暂行办法》进行风险审核; \n 2. 输出仅返回 JSON,不要附加任何解释性文字。 \n\n# 【风险审核-checklist】:\n\n 判断用户输入是否存在以下风险类型:涉政、暴恐、涉黄、涉赌、涉毒、辱骂、违禁、歧视、其他侵犯他人权益、其他商业违法违规等相关风险;无任何风险则归类为“正常文本”\n\n**输出格式**(JSON,禁止省略任何字段):\n\n```json\n{\n "reason":"cot分析过程",\n "risk_level": 无风险|低风险|中风险|高风险, \n "hit_categories": ["****","****:],\n "hit_detaile_categories":["****","****"]\n "risk_tags"[] \n "risk_roler":"user|"ai"|"user&ai",\n "hit_keywords": ["xxx"], \n "suggestion": "pass"|"mask"|"block"|"review"|"proxy_answer"\n}\n```\n**输出格式声明**\n reason:存放推理过程;\n risk_level:存放风险级别,分成四档:无风险|低风险|中风险|高风险;\n hit_categories:存放识别到的一级风险类别标签;\n hit_detaile_categories:存放识别到的二级风险类别标签;\n risk_tags:详细风险类型;\n risk_roler:存放对话中触发风险角色,user代表用户输入有风险,user&ai代表用户输入大模型回复都有风险,ai代表大模型回复有风险;\n hit_keywords:触发风险的原文片段;\n suggestion:建议处置策略;\n"""
|
| 123 |
+
```
|
| 124 |
+
|
| 125 |
+
## 4. 许可证
|
| 126 |
+
|
| 127 |
+
本仓库的代码与模型权重均遵循 Apache 2.0 开源协议,基于 gpt-oss-20b 二次训练所得,同样适用 Apache 2.0 License。
|