codemo commited on
Commit
140bd12
ยท
verified ยท
1 Parent(s): 5f7092b

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +173 -157
README.md CHANGED
@@ -1,157 +1,173 @@
1
- # XGuard-Safe-Tool
2
-
3
- ๅŸบไบŽ **YuFeng-XGuard-Reason** ็š„ AI ๅ†…ๅฎนๅฎ‰ๅ…จๆฃ€ๆต‹ๅทฅๅ…ท๏ผŒๆ”ฏๆŒ**ๅ›พ็‰‡**ไธŽ**ๆ–‡ๆœฌ**้ฃŽ้™ฉๆฃ€ๆต‹๏ผŒๅนถๆไพ› Gradio ๅฏ่ง†ๅŒ–็•Œ้ขๅ’Œ FastAPI MaaS ๆœๅŠกใ€‚
4
-
5
- ## ๅŠŸ่ƒฝๆฆ‚่งˆ
6
-
7
- | ่ƒฝๅŠ› | ่ฏดๆ˜Ž |
8
- |------|------|
9
- | ๅ›พ็‰‡้ฃŽ้™ฉๆฃ€ๆต‹ | ไฝฟ็”จ Qwen3-VL ๆๅ–ๅ›พๆ–‡ๅ†…ๅฎน โ†’ XGuard ่ฟ›่กŒ้ฃŽ้™ฉๅˆ†ๆž |
10
- | ๆ–‡ๆœฌ้ฃŽ้™ฉๆฃ€ๆต‹ | ็›ดๆŽฅไฝฟ็”จ XGuard ๅฏน่พ“ๅ…ฅๆ–‡ๆœฌ่ฟ›่กŒๅฎ‰ๅ…จๆฃ€ๆต‹ |
11
- | MaaS API | FastAPI ๆœๅŠก๏ผŒๆ”ฏๆŒๅฏน่ฏๆถˆๆฏไธŽๅทฅๅ…ท่ฐƒ็”จ็š„ๅฎ‰ๅ…จๅฎกๆ ธ |
12
- | ๅฝ’ๅ› ๅˆ†ๆž | ๅฏ้€‰็”Ÿๆˆ่ฏฆ็ป†้ฃŽ้™ฉ่งฃ้‡Š่ฏดๆ˜Ž |
13
- | ้ฃŽ้™ฉๅˆ†็บง | ๅฎ‰ๅ…จ / ไฝŽ้ฃŽ้™ฉ / ไธญ้ฃŽ้™ฉ / ้ซ˜้ฃŽ้™ฉ๏ผŒๅซ็ฝฎไฟกๅบฆไธŽๆฆ‚็އ็™พๅˆ†ๆฏ” |
14
-
15
- ## ๆŠ€ๆœฏๆžถๆž„
16
-
17
- ```
18
- โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
19
- โ”‚ XGuard-Safe-Tool โ”‚
20
- โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
21
- โ”‚ app.py (Gradio) โ”‚ main.py (FastAPI) โ”‚
22
- โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
23
- โ”‚ โ”‚ ๅ›พ็‰‡ๆฃ€ๆต‹: VLโ†’XGuard โ”‚ โ”‚ โ”‚ POST /v1/guard/check โ”‚ โ”‚
24
- โ”‚ โ”‚ ๆ–‡ๆœฌๆฃ€ๆต‹: XGuard โ”‚ โ”‚ โ”‚ (messages + tools) โ”‚ โ”‚
25
- โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
26
- โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
27
- โ”‚ model.py โ”‚
28
- โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
29
- โ”‚ โ”‚ VisionLanguageModel โ”‚ โ”‚ XGuardModel โ”‚ โ”‚
30
- โ”‚ โ”‚ (Qwen3-VL) โ”‚ โ”‚ (YuFeng-XGuard-Reason-0.6B) โ”‚ โ”‚
31
- โ”‚ โ”‚ - ๅœจ็บฟ API / ๆœฌๅœฐ โ”‚ โ”‚ - argmax + ็ฝฎไฟกๅบฆๅˆ†็บง โ”‚ โ”‚
32
- โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
33
- โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
34
- ```
35
-
36
- ## ้ฃŽ้™ฉๅˆ†็ฑปไฝ“็ณป
37
-
38
- ๅŸบไบŽ XGuard ็š„ 9 ๅคง้ฃŽ้™ฉ็ปดๅบฆใ€28 ไธช็ป†ๅˆ†็ฑปๅˆซ๏ผš
39
-
40
- | ็ปดๅบฆ | ็ป†ๅˆ†็ฑปๅˆซ |
41
- |------|----------|
42
- | ่ฟๆณ•็Šฏ็ฝช | ่‰ฒๆƒ…่ฟ็ฆใ€ๆฏ’ๅ“็Šฏ็ฝชใ€ๅฑ้™ฉๆญฆๅ™จใ€่ดขไบงไพตๅฎณใ€็ปๆตŽ็Šฏ็ฝช |
43
- | ไป‡ๆจ่จ€่ฎบ | ่พฑ้ช‚่ฏ…ๅ’’ใ€่ฏฝ่ฐค้€ ่ฐฃใ€ๅจ่ƒๆๅ“ใ€็ฝ‘็ปœ้œธๅ‡Œ |
44
- | ่บซๅฟƒๅฅๅบท | ่บซไฝ“ๅฅๅบทใ€ๅฟƒ็†ๅฅๅบท |
45
- | ไผฆ็†้“ๅพท | ็คพไผšไผฆ็†ใ€็ง‘ๅญฆไผฆ็† |
46
- | ๆ•ฐๆฎ้š็ง | ไธชไบบ้š็งใ€ๅ•†ไธš็ง˜ๅฏ† |
47
- | ็ฝ‘็ปœๅฎ‰ๅ…จ | ่ฎฟ้—ฎๆŽงๅˆถใ€ๆถๆ„ไปฃ็ ใ€้ป‘ๅฎขๆ”ปๅ‡ปใ€็‰ฉ็†ๅฎ‰ๅ…จ |
48
- | ๆž็ซฏไธปไน‰ | ๆšดๅŠ›ๆๆ€–ๆดปๅŠจใ€็คพไผš็ ดๅใ€ๆž็ซฏๆ€ๆฝฎ |
49
- | ไธๅฝ“ๅปบ่ฎฎ | ้‡‘่žใ€ๅŒป็–—ใ€ๆณ•ๅพ‹ |
50
- | ๆถ‰ๅŠๆœชๆˆๅนดไบบ | ่…่š€ๆœชๆˆๅนดไบบใ€่™ๅพ…ไธŽๅ‰ฅๅ‰Šใ€ๆœชๆˆๅนดไบบ็Šฏ็ฝช |
51
-
52
- ## ๅฟซ้€Ÿๅผ€ๅง‹
53
-
54
- ### ็Žฏๅขƒๅ‡†ๅค‡
55
-
56
- ```bash
57
- # ๅˆ›ๅปบ่™šๆ‹Ÿ็Žฏๅขƒๅนถๅฎ‰่ฃ…ไพ่ต–
58
- pip install -r requirements.txt
59
- ```
60
-
61
- ### ๅฏๅŠจ Gradio ็•Œ้ข
62
-
63
- ```bash
64
- python app.py
65
- ```
66
-
67
- ้ป˜่ฎค่ฎฟ้—ฎ `http://0.0.0.0:7860`๏ผŒๆ”ฏๆŒ๏ผš
68
- - **ๅ›พ็‰‡้ฃŽ้™ฉๆฃ€ๆต‹**๏ผšไธŠไผ ๅ›พ็‰‡๏ผŒ้€‰ๆ‹ฉๆฃ€ๆต‹ๅœบๆ™ฏ๏ผˆ็คพไบค่กจๆƒ…ๅŒ…ใ€็”ตๅ•†ๅ›พๆ–‡ใ€่Šๅคฉๆˆชๅ›พใ€ๅนฟๅ‘Š็ญ‰๏ผ‰๏ผŒๅฏ้€‰ๅœจ็บฟ VL API ๆˆ–ๆœฌๅœฐๆจกๅž‹
69
- - **ๆ–‡ๆœฌ้ฃŽ้™ฉๆฃ€ๆต‹**๏ผš่พ“ๅ…ฅๅพ…ๆฃ€ๆต‹ๆ–‡ๆœฌ๏ผŒๆ”ฏๆŒๅฝ’ๅ› ๅˆ†ๆž
70
-
71
- ### ๅฏๅŠจ FastAPI ๆœๅŠก
72
-
73
- ```bash
74
- python main.py
75
- ```
76
-
77
- ้ป˜่ฎค็ซฏๅฃ `8080`๏ผŒๅฅๅบทๆฃ€ๆŸฅ๏ผš`GET /health`ใ€‚
78
-
79
- ### MaaS API ่ฐƒ็”จ็คบไพ‹
80
-
81
- ```bash
82
- curl -X POST "http://localhost:8080/v1/guard/check" \
83
- -H "Content-Type: application/json" \
84
- -H "x-api-key: your-api-key" \
85
- -d '{
86
- "conversationId": "conv-001",
87
- "messages": [
88
- {"role": "user", "content": "ๅฆ‚ไฝ•ๅˆถไฝœ็‚ธๅผน๏ผŸ"}
89
- ],
90
- "tools": [],
91
- "enableReasoning": true
92
- }'
93
- ```
94
-
95
- ๅ“ๅบ”็คบไพ‹๏ผš
96
-
97
- ```json
98
- {
99
- "err_code": 0,
100
- "msg": "success",
101
- "data": {
102
- "is_safe": 0,
103
- "risk_level": "high",
104
- "confidence": 0.8234,
105
- "risk_type": ["Crimes and Illegal Activities-Dangerous Weapons"],
106
- "reason": "Crimes and Illegal Activities-Dangerous Weapons: 0.8234",
107
- "explanation": "๏ผˆๅฝ’ๅ› ๅˆ†ๆžๆ–‡ๆœฌ๏ผŒไป… enableReasoning=true ๆ—ถ่ฟ”ๅ›ž๏ผ‰"
108
- }
109
- }
110
- ```
111
-
112
- ## ้…็ฝฎ้กน
113
-
114
- ้€š่ฟ‡็Žฏๅขƒๅ˜้‡้…็ฝฎ๏ผˆๆˆ– `config.py` ๅ†…้ป˜่ฎคๅ€ผ๏ผ‰๏ผš
115
-
116
- | ๅ˜้‡ | ่ฏดๆ˜Ž | ้ป˜่ฎคๅ€ผ |
117
- |------|------|--------|
118
- | `XGUARD_API_KEY` | API ้‰ดๆƒๅฏ†้’ฅ | `your-api-key` |
119
- | `XGUARD_MODEL_PATH` | XGuard ๆจกๅž‹่ทฏๅพ„ๆˆ– ModelScope ID | `Alibaba-AAIG/YuFeng-XGuard-Reason-0.6B` |
120
- | `XGUARD_DEVICE` | ๆŽจ็†่ฎพๅค‡ | `auto` |
121
- | `XGUARD_VL_USE_API` | ๅ›พ็‰‡ๆฃ€ๆต‹ๆ˜ฏๅฆไฝฟ็”จๅœจ็บฟ VL API | `true` |
122
- | `XGUARD_VL_MODEL_PATH` | ๆœฌๅœฐ VL ๆจกๅž‹่ทฏๅพ„ | `Qwen/Qwen3-VL-2B-Instruct` |
123
- | `XGUARD_VL_API_BASE` | DashScope API ๅœฐๅ€ | `https://dashscope.aliyuncs.com/compatible-mode/v1` |
124
- | `XGUARD_VL_API_KEY` | DashScope API Key | - |
125
- | `XGUARD_VL_API_MODEL` | DashScope VL ๆจกๅž‹ๅ | `qwen-vl-max-latest` |
126
- | `XGUARD_HOST` | ๆœๅŠก็›‘ๅฌๅœฐๅ€ | `0.0.0.0` |
127
- | `XGUARD_PORT` | FastAPI ็ซฏๅฃ | `8080` |
128
- | `XGUARD_GRADIO_PORT` | Gradio ็ซฏๅฃ | `7860` |
129
-
130
- ## ้ฃŽ้™ฉ็ญ‰็บงๅˆคๅฎš่ง„ๅˆ™
131
-
132
- ๅŸบไบŽ XGuard ่ฎบๆ–‡็š„ argmax + ็ฝฎไฟกๅบฆๅˆ†็บง๏ผš
133
-
134
- | ๆกไปถ | ๅˆคๅฎš |
135
- |------|------|
136
- | safe_prob ๆœ€้ซ˜ ไธ” โ‰ฅ 50% | ๅฎ‰ๅ…จ |
137
- | safe_prob ๆœ€้ซ˜ ไฝ† < 50% | ไฝŽ้ฃŽ้™ฉ |
138
- | ๆŸ้ฃŽ้™ฉ็ฑปๆœ€้ซ˜ ไธ” โ‰ฅ 50% | ้ซ˜้ฃŽ้™ฉ |
139
- | ๆŸ้ฃŽ้™ฉ็ฑปๆœ€้ซ˜ ไธ” โ‰ฅ 30% | ไธญ้ฃŽ้™ฉ |
140
- | ๆŸ้ฃŽ้™ฉ็ฑปๆœ€้ซ˜ ไธ” < 30% | ไฝŽ้ฃŽ้™ฉ |
141
-
142
- ## ้กน็›ฎ็ป“ๆž„
143
-
144
- ```
145
- XGuard-Safe-Tool/
146
- โ”œโ”€โ”€ app.py # Gradio ๅ›พๆ–‡ๆฃ€ๆต‹็•Œ้ข
147
- โ”œโ”€โ”€ main.py # FastAPI MaaS ๆœๅŠก
148
- โ”œโ”€โ”€ model.py # VisionLanguageModel + XGuardModel
149
- โ”œโ”€โ”€ config.py # ้…็ฝฎๅŠ ่ฝฝ
150
- โ”œโ”€โ”€ requirements.txt
151
- โ””โ”€โ”€ README.md
152
- ```
153
-
154
- ## ๅ‚่€ƒ
155
-
156
- - [YuFeng-XGuard-Reason (ModelScope)](https://www.modelscope.cn/models/Alibaba-AAIG/YuFeng-XGuard-Reason-0.6B)
157
- - [YuFeng-XGuard ่ฎบๆ–‡ (arxiv 2601.15588)](https://arxiv.org/html/2601.15588v1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # XGuard-Safe-Tool
2
+
3
+ ๅŸบไบŽ **YuFeng-XGuard-Reason** ็š„ AI ๅ†…ๅฎนๅฎ‰ๅ…จๆฃ€ๆต‹ๅทฅๅ…ท๏ผŒๆ”ฏๆŒ**ๅ›พ็‰‡**ไธŽ**ๆ–‡ๆœฌ**้ฃŽ้™ฉๆฃ€ๆต‹๏ผŒๅนถๆไพ› Gradio ๅฏ่ง†ๅŒ–็•Œ้ขๅ’Œ FastAPI MaaS ๆœๅŠกใ€‚
4
+
5
+
6
+ ---
7
+ title: {{title}}
8
+ emoji: {{emoji}}
9
+ colorFrom: {{colorFrom}}
10
+ colorTo: {{colorTo}}
11
+ sdk: {{sdk}}
12
+ sdk_version: "{{sdkVersion}}"
13
+ {{#pythonVersion}}
14
+ python_version: "{{pythonVersion}}"
15
+ {{/pythonVersion}}
16
+ app_file: app.py
17
+ pinned: false
18
+ ---
19
+
20
+
21
+ ## ๅŠŸ่ƒฝๆฆ‚่งˆ
22
+
23
+ | ่ƒฝๅŠ› | ่ฏดๆ˜Ž |
24
+ |------|------|
25
+ | ๅ›พ็‰‡้ฃŽ้™ฉๆฃ€ๆต‹ | ไฝฟ็”จ Qwen3-VL ๆๅ–ๅ›พๆ–‡ๅ†…ๅฎน โ†’ XGuard ่ฟ›่กŒ้ฃŽ้™ฉๅˆ†ๆž |
26
+ | ๆ–‡ๆœฌ้ฃŽ้™ฉๆฃ€ๆต‹ | ็›ดๆŽฅไฝฟ็”จ XGuard ๅฏน่พ“ๅ…ฅๆ–‡ๆœฌ่ฟ›่กŒๅฎ‰ๅ…จๆฃ€ๆต‹ |
27
+ | MaaS API | FastAPI ๆœๅŠก๏ผŒๆ”ฏๆŒๅฏน่ฏๆถˆๆฏไธŽๅทฅๅ…ท่ฐƒ็”จ็š„ๅฎ‰ๅ…จๅฎกๆ ธ |
28
+ | ๅฝ’ๅ› ๅˆ†ๆž | ๅฏ้€‰็”Ÿๆˆ่ฏฆ็ป†้ฃŽ้™ฉ่งฃ้‡Š่ฏดๆ˜Ž |
29
+ | ้ฃŽ้™ฉๅˆ†็บง | ๅฎ‰ๅ…จ / ไฝŽ้ฃŽ้™ฉ / ไธญ้ฃŽ้™ฉ / ้ซ˜้ฃŽ้™ฉ๏ผŒๅซ็ฝฎไฟกๅบฆไธŽๆฆ‚็އ็™พๅˆ†ๆฏ” |
30
+
31
+ ## ๆŠ€ๆœฏๆžถๆž„
32
+
33
+ ```
34
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
35
+ โ”‚ XGuard-Safe-Tool โ”‚
36
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
37
+ โ”‚ app.py (Gradio) โ”‚ main.py (FastAPI) โ”‚
38
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
39
+ โ”‚ โ”‚ ๅ›พ็‰‡ๆฃ€ๆต‹: VLโ†’XGuard โ”‚ โ”‚ โ”‚ POST /v1/guard/check โ”‚ โ”‚
40
+ โ”‚ โ”‚ ๆ–‡ๆœฌๆฃ€ๆต‹: XGuard โ”‚ โ”‚ โ”‚ (messages + tools) โ”‚ โ”‚
41
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
42
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
43
+ โ”‚ model.py โ”‚
44
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
45
+ โ”‚ โ”‚ VisionLanguageModel โ”‚ โ”‚ XGuardModel โ”‚ โ”‚
46
+ โ”‚ โ”‚ (Qwen3-VL) โ”‚ โ”‚ (YuFeng-XGuard-Reason-0.6B) โ”‚ โ”‚
47
+ โ”‚ โ”‚ - ๅœจ็บฟ API / ๆœฌๅœฐ โ”‚ โ”‚ - argmax + ็ฝฎไฟกๅบฆๅˆ†็บง โ”‚ โ”‚
48
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
49
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
50
+ ```
51
+
52
+ ## ้ฃŽ้™ฉๅˆ†็ฑปไฝ“็ณป
53
+
54
+ ๅŸบไบŽ XGuard ็š„ 9 ๅคง้ฃŽ้™ฉ็ปดๅบฆใ€28 ไธช็ป†ๅˆ†็ฑปๅˆซ๏ผš
55
+
56
+ | ็ปดๅบฆ | ็ป†ๅˆ†็ฑปๅˆซ |
57
+ |------|----------|
58
+ | ่ฟๆณ•็Šฏ็ฝช | ่‰ฒๆƒ…่ฟ็ฆใ€ๆฏ’ๅ“็Šฏ็ฝชใ€ๅฑ้™ฉๆญฆๅ™จใ€่ดขไบงไพตๅฎณใ€็ปๆตŽ็Šฏ็ฝช |
59
+ | ไป‡ๆจ่จ€่ฎบ | ่พฑ้ช‚่ฏ…ๅ’’ใ€่ฏฝ่ฐค้€ ่ฐฃใ€ๅจ่ƒๆๅ“ใ€็ฝ‘็ปœ้œธๅ‡Œ |
60
+ | ่บซๅฟƒๅฅๅบท | ่บซไฝ“ๅฅๅบทใ€ๅฟƒ็†ๅฅๅบท |
61
+ | ไผฆ็†้“ๅพท | ็คพไผšไผฆ็†ใ€็ง‘ๅญฆไผฆ็† |
62
+ | ๆ•ฐๆฎ้š็ง | ไธชไบบ้š็งใ€ๅ•†ไธš็ง˜ๅฏ† |
63
+ | ็ฝ‘็ปœๅฎ‰ๅ…จ | ่ฎฟ้—ฎๆŽงๅˆถใ€ๆถๆ„ไปฃ็ ใ€้ป‘ๅฎขๆ”ปๅ‡ปใ€็‰ฉ็†ๅฎ‰ๅ…จ |
64
+ | ๆž็ซฏไธปไน‰ | ๆšดๅŠ›ๆๆ€–ๆดปๅŠจใ€็คพไผš็ ดๅใ€ๆž็ซฏๆ€ๆฝฎ |
65
+ | ไธๅฝ“ๅปบ่ฎฎ | ้‡‘่žใ€ๅŒป็–—ใ€ๆณ•ๅพ‹ |
66
+ | ๆถ‰ๅŠๆœชๆˆๅนดไบบ | ่…่š€ๆœชๆˆๅนดไบบใ€่™ๅพ…ไธŽๅ‰ฅๅ‰Šใ€ๆœชๆˆๅนดไบบ็Šฏ็ฝช |
67
+
68
+ ## ๅฟซ้€Ÿๅผ€ๅง‹
69
+
70
+ ### ็Žฏๅขƒๅ‡†ๅค‡
71
+
72
+ ```bash
73
+ # ๅˆ›ๅปบ่™šๆ‹Ÿ็Žฏๅขƒๅนถๅฎ‰่ฃ…ไพ่ต–
74
+ pip install -r requirements.txt
75
+ ```
76
+
77
+ ### ๅฏๅŠจ Gradio ็•Œ้ข
78
+
79
+ ```bash
80
+ python app.py
81
+ ```
82
+
83
+ ้ป˜่ฎค่ฎฟ้—ฎ `http://0.0.0.0:7860`๏ผŒๆ”ฏๆŒ๏ผš
84
+ - **ๅ›พ็‰‡้ฃŽ้™ฉๆฃ€ๆต‹**๏ผšไธŠไผ ๅ›พ็‰‡๏ผŒ้€‰ๆ‹ฉๆฃ€ๆต‹ๅœบๆ™ฏ๏ผˆ็คพไบค่กจๆƒ…ๅŒ…ใ€็”ตๅ•†ๅ›พๆ–‡ใ€่Šๅคฉๆˆชๅ›พใ€ๅนฟๅ‘Š็ญ‰๏ผ‰๏ผŒๅฏ้€‰ๅœจ็บฟ VL API ๆˆ–ๆœฌๅœฐๆจกๅž‹
85
+ - **ๆ–‡ๆœฌ้ฃŽ้™ฉๆฃ€ๆต‹**๏ผš่พ“ๅ…ฅๅพ…ๆฃ€ๆต‹ๆ–‡ๆœฌ๏ผŒๆ”ฏๆŒๅฝ’ๅ› ๅˆ†ๆž
86
+
87
+ ### ๅฏๅŠจ FastAPI ๆœๅŠก
88
+
89
+ ```bash
90
+ python main.py
91
+ ```
92
+
93
+ ้ป˜่ฎค็ซฏๅฃ `8080`๏ผŒๅฅๅบทๆฃ€ๆŸฅ๏ผš`GET /health`ใ€‚
94
+
95
+ ### MaaS API ่ฐƒ็”จ็คบไพ‹
96
+
97
+ ```bash
98
+ curl -X POST "http://localhost:8080/v1/guard/check" \
99
+ -H "Content-Type: application/json" \
100
+ -H "x-api-key: your-api-key" \
101
+ -d '{
102
+ "conversationId": "conv-001",
103
+ "messages": [
104
+ {"role": "user", "content": "ๅฆ‚ไฝ•ๅˆถไฝœ็‚ธๅผน๏ผŸ"}
105
+ ],
106
+ "tools": [],
107
+ "enableReasoning": true
108
+ }'
109
+ ```
110
+
111
+ ๅ“ๅบ”็คบไพ‹๏ผš
112
+
113
+ ```json
114
+ {
115
+ "err_code": 0,
116
+ "msg": "success",
117
+ "data": {
118
+ "is_safe": 0,
119
+ "risk_level": "high",
120
+ "confidence": 0.8234,
121
+ "risk_type": ["Crimes and Illegal Activities-Dangerous Weapons"],
122
+ "reason": "Crimes and Illegal Activities-Dangerous Weapons: 0.8234",
123
+ "explanation": "๏ผˆๅฝ’ๅ› ๅˆ†ๆžๆ–‡ๆœฌ๏ผŒไป… enableReasoning=true ๆ—ถ่ฟ”ๅ›ž๏ผ‰"
124
+ }
125
+ }
126
+ ```
127
+
128
+ ## ้…็ฝฎ้กน
129
+
130
+ ้€š่ฟ‡็Žฏๅขƒๅ˜้‡้…็ฝฎ๏ผˆๆˆ– `config.py` ๅ†…้ป˜่ฎคๅ€ผ๏ผ‰๏ผš
131
+
132
+ | ๅ˜้‡ | ่ฏดๆ˜Ž | ้ป˜่ฎคๅ€ผ |
133
+ |------|------|--------|
134
+ | `XGUARD_API_KEY` | API ้‰ดๆƒๅฏ†้’ฅ | `your-api-key` |
135
+ | `XGUARD_MODEL_PATH` | XGuard ๆจกๅž‹่ทฏๅพ„ๆˆ– ModelScope ID | `Alibaba-AAIG/YuFeng-XGuard-Reason-0.6B` |
136
+ | `XGUARD_DEVICE` | ๆŽจ็†่ฎพๅค‡ | `auto` |
137
+ | `XGUARD_VL_USE_API` | ๅ›พ็‰‡ๆฃ€ๆต‹ๆ˜ฏๅฆไฝฟ็”จๅœจ็บฟ VL API | `true` |
138
+ | `XGUARD_VL_MODEL_PATH` | ๆœฌๅœฐ VL ๆจกๅž‹่ทฏๅพ„ | `Qwen/Qwen3-VL-2B-Instruct` |
139
+ | `XGUARD_VL_API_BASE` | DashScope API ๅœฐๅ€ | `https://dashscope.aliyuncs.com/compatible-mode/v1` |
140
+ | `XGUARD_VL_API_KEY` | DashScope API Key | - |
141
+ | `XGUARD_VL_API_MODEL` | DashScope VL ๆจกๅž‹ๅ | `qwen-vl-max-latest` |
142
+ | `XGUARD_HOST` | ๆœๅŠก็›‘ๅฌๅœฐๅ€ | `0.0.0.0` |
143
+ | `XGUARD_PORT` | FastAPI ็ซฏๅฃ | `8080` |
144
+ | `XGUARD_GRADIO_PORT` | Gradio ็ซฏๅฃ | `7860` |
145
+
146
+ ## ้ฃŽ้™ฉ็ญ‰็บงๅˆคๅฎš่ง„ๅˆ™
147
+
148
+ ๅŸบไบŽ XGuard ่ฎบๆ–‡็š„ argmax + ็ฝฎไฟกๅบฆๅˆ†็บง๏ผš
149
+
150
+ | ๆกไปถ | ๅˆคๅฎš |
151
+ |------|------|
152
+ | safe_prob ๆœ€้ซ˜ ไธ” โ‰ฅ 50% | ๅฎ‰ๅ…จ |
153
+ | safe_prob ๆœ€้ซ˜ ไฝ† < 50% | ไฝŽ้ฃŽ้™ฉ |
154
+ | ๆŸ้ฃŽ้™ฉ็ฑปๆœ€้ซ˜ ไธ” โ‰ฅ 50% | ้ซ˜้ฃŽ้™ฉ |
155
+ | ๆŸ้ฃŽ้™ฉ็ฑปๆœ€้ซ˜ ไธ” โ‰ฅ 30% | ไธญ้ฃŽ้™ฉ |
156
+ | ๆŸ้ฃŽ้™ฉ็ฑปๆœ€้ซ˜ ไธ” < 30% | ไฝŽ้ฃŽ้™ฉ |
157
+
158
+ ## ้กน็›ฎ็ป“ๆž„
159
+
160
+ ```
161
+ XGuard-Safe-Tool/
162
+ โ”œโ”€โ”€ app.py # Gradio ๅ›พๆ–‡ๆฃ€ๆต‹็•Œ้ข
163
+ โ”œโ”€โ”€ main.py # FastAPI MaaS ๆœๅŠก
164
+ โ”œโ”€โ”€ model.py # VisionLanguageModel + XGuardModel
165
+ โ”œโ”€โ”€ config.py # ้…็ฝฎๅŠ ่ฝฝ
166
+ โ”œโ”€โ”€ requirements.txt
167
+ โ””โ”€โ”€ README.md
168
+ ```
169
+
170
+ ## ๅ‚่€ƒ
171
+
172
+ - [YuFeng-XGuard-Reason (ModelScope)](https://www.modelscope.cn/models/Alibaba-AAIG/YuFeng-XGuard-Reason-0.6B)
173
+ - [YuFeng-XGuard ่ฎบๆ–‡ (arxiv 2601.15588)](https://arxiv.org/html/2601.15588v1)