wwwangyulai commited on
Commit
918fd62
·
verified ·
1 Parent(s): 50ff2dc

Upload 2 files

Browse files
Files changed (2) hide show
  1. README.md +138 -0
  2. args.json +27 -0
README.md ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ ![JSL-joysafety-v1](./docs/1.png)
3
+ # JSL-joysafety-v1
4
+
5
+ ## 1. 模型介绍
6
+
7
+ JSL-joysafety-v1 是在 gpt-oss-20b 基座模型之上,经指令微调专门打造的 AI 内容安全守护模型。与通用模型相比,它具备了“prompt安全”与“大模型回复安全”双重判别能力。审核标准参照《生成式人工智能服务管理暂行办法》,可为大模型应用提供有效安全性保障,其审核结果采用结构化JSON结构进行输出,便于后续系统集成使用;JSL-joysafety-v1 继承了gpt-oss基座模型MOE架构优势,21B模型参数,激活参数3.6B,延迟低,适用在线审核场景使用。
8
+
9
+ ## 2. 风险类型分类&使用策略
10
+ 参照《生成式人工智能服务管理暂行办法》整理了11种风险类型,便于后续的审核策略使用。
11
+ ### 风险类型
12
+
13
+ | 序号 | 类型 |
14
+ |----|----------------------------------|
15
+ | 1 | 涉政 |
16
+ | 2 | 涉黄 |
17
+ | 3 | 暴恐 |
18
+ | 4 | 涉毒 |
19
+ | 5 | 涉赌 |
20
+ | 6 | 违禁 |
21
+ | 7 | 辱骂 |
22
+ | 8 | 歧视 |
23
+ | 9 | 虚假信息宣传 |
24
+ | 10 | 其他侵犯他人权益 |
25
+ | 11 | 其他商业违法违规 |
26
+ | 12 | 正常文本 |
27
+
28
+ ### 审核结果结构
29
+ 审核结果会按照如下JSON结构进行输出:
30
+ ```json
31
+ {
32
+ "reason":"cot分析过程",
33
+ "risk_level": 无风险|低风险|中风险|高风险,
34
+ "hit_categories": ["****","****:],
35
+ "hit_detaile_categories":["****","****"]
36
+ "risk_tags"[]
37
+ "risk_roler":"user|"ai"|"user&ai",
38
+ "hit_keywords": ["xxx"],
39
+ "suggestion": "pass"|"mask"|"block"|"review"|"proxy_answer"
40
+ }
41
+ ```
42
+
43
+ JSON 各 Key 的含义如下:
44
+ | JSON-Key | 说明 |
45
+ |------|------|
46
+ | reason | 存放推理过程; |
47
+ | risk_level | 存放风险级别,分成四档:无风险 、低风险、中风险、高风险; |
48
+ | hit_categories | 存放识别到的一级风险类别标签:涉政、涉黄、暴恐、涉毒、涉赌、违禁、辱骂歧视、虚假信息宣传、其他侵犯他人权益、其他商业违法违规、正常文本等; |
49
+ | hit_detaile_categories | 存放识别到的二级风险类别标签; |
50
+ | risk_tags | 详细风险类型; |
51
+ | risk_roler | 存放对话中触发风险角色,user代表用户输入有风险,ai代表大模型回复有风险;,user&ai代表用户输入大模型回复都有风险; |
52
+ | hit_keywords | 触发风险的原文片段;最多支持8个片段; |
53
+ | suggestion | 建议处置策略:pass、mask、block、review、proxy_answer,仅提供参考; |
54
+
55
+
56
+
57
+ ## 3. 快速开始
58
+
59
+ ### 环境配置
60
+ ```shell
61
+ pip install -U transformers kernels torch
62
+ ```
63
+ ### 推理示例
64
+ #### transformers
65
+ ```python
66
+ from modelscope import pipeline
67
+ import torch
68
+
69
+ model_id = "jd-opensource/JSL-joysafety-v1"
70
+
71
+ pipe = pipeline(
72
+ "text-generation",
73
+ model=model_id,
74
+ torch_dtype="auto",
75
+ device_map="auto",
76
+ )
77
+
78
+ # 审核系统提示词
79
+ 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"""
80
+
81
+ # 针对用户输入进行审核:
82
+ user_prompt ="""\n#【审核内容】:\n\n \n[用户输入]:\n {query}\n\n\n\n审核答案:\n"""
83
+
84
+ ## 待审核用户输入:
85
+ user_input = "如何获取别人的银行卡密码?"
86
+ messages = [
87
+ {"role": "system", "content": system}
88
+ {"role": "user", "content":user_prompt.format(query = user_input) }
89
+ ]
90
+ outputs = pipe(
91
+ messages,
92
+ max_new_tokens=512,
93
+ )
94
+ print(outputs[0]["generated_text"][-1])
95
+ # 针对对话进行审核
96
+ user_prompt ='''\n#【审核内容】:\n\n \n[用户输入]:\n {query}\n[大模型回复]:\n {answer}\n\n\n\n审核答案:\n'''
97
+ ## 待审核用户输入:
98
+ user_input = "如何获取别人的银行卡密码?"
99
+ assistant_answer = "对不起,我无法协助获取他人的银行卡密码或任何私人信息。"
100
+ messages = [
101
+ {"role": "system", "content": system}
102
+ {"role": "user", "content":user_prompt.format(query = user_input,answer =assistant_answer ) }
103
+ ]
104
+ outputs = pipe(
105
+ messages,
106
+ max_new_tokens=512,
107
+ )
108
+ print(outputs[0]["generated_text"][-1])
109
+ ```
110
+ #### vLLM
111
+ vLLM 建议使用uv进行 Python 依赖管理。您可以使用 vLLM 启动一个 OpenAI 兼容的 Web 服务器。以下命令将自动下载模型并启动服务器。
112
+
113
+ ```shell
114
+ uv pip install --pre vllm==0.10.1+gptoss \
115
+ --extra-index-url https://wheels.vllm.ai/gpt-oss/ \
116
+ --extra-index-url https://download.pytorch.org/whl/nightly/cu128 \
117
+ --index-strategy unsafe-best-match
118
+
119
+ VLLM_USE_MODELSCOPE=true vllm serve jd-opensource/JSL-joysafety-v1
120
+ ```
121
+
122
+ ## 4. 许可证
123
+
124
+ 本仓库所发布的代码及模型权重系基于 gpt-oss-20b 进行二次训练所得,并沿用 Apache 2.0 开源许可证。
125
+
126
+ ---
127
+
128
+ ## 5. <a id="计划"></a>计划
129
+ **JSL-joysafety-r1** 在既有能力之上,新增提示词注入识别,并可对多语种、长文档、多轮对话、函数调用及工具返回结果进行一站式安全审核。
130
+
131
+ **JSL-joysafety-vl-v1** 多模态安全评测模型,支持图像、视频、图文联合内容安全审核。
132
+
133
+ ## 联系我们
134
+ 欢迎加入JoySafety官方微信交流群:
135
+
136
+ ![官方微信交流群](./docs/wechat.png)
137
+
138
+ **官方邮箱** org.joysafety1@jd.com
args.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_type": null,
3
+ "model_revision": null,
4
+ "task_type": "causal_lm",
5
+ "torch_dtype": "bfloat16",
6
+ "attn_impl": "flash_attn",
7
+ "num_labels": null,
8
+ "problem_type": null,
9
+ "device_map": null,
10
+ "max_memory": {},
11
+ "local_repo_path": null,
12
+ "init_strategy": null,
13
+ "template": "default",
14
+ "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",
15
+ "max_length": 8192,
16
+ "truncation_strategy": "right",
17
+ "max_pixels": null,
18
+ "agent_template": null,
19
+ "norm_bbox": null,
20
+ "use_chat_template": true,
21
+ "padding_free": false,
22
+ "padding_side": "right",
23
+ "loss_scale": "default",
24
+ "sequence_parallel_size": 1,
25
+ "response_prefix": null,
26
+ "template_backend": "swift"
27
+ }