Skip to content

Commit 2cb8558

Browse files
rinfxCH3CHO
andauthored
Optimize AI security guard plugin (#1473)
Co-authored-by: Kent Dong <[email protected]>
1 parent 4d1a037 commit 2cb8558

File tree

4 files changed

+244
-203
lines changed

4 files changed

+244
-203
lines changed

plugins/wasm-go/extensions/ai-security-guard/README.md

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,23 @@ description: 阿里云内容安全检测
3030
| `denyCode` | int | optional | 200 | 指定内容非法时的响应状态码 |
3131
| `denyMessage` | string | optional | openai格式的流式/非流式响应 | 指定内容非法时的响应内容 |
3232
| `protocol` | string | optional | openai | 协议格式,非openai协议填`original` |
33-
34-
补充说明一下 `denyMessage`,对于openai格式的请求,对非法请求的处理逻辑为:
35-
- 如果配置了 `denyMessage`
36-
- 优先返回阿里云内容安全的建议回答,格式为openai格式的流式/非流式响应
37-
- 如果阿里云内容安全未返回建议的回答,返回内容为 `denyMessage` 配置内容,格式为openai格式的流式/非流式响应
38-
- 如果没有配置 `denyMessage`
39-
- 优先返回阿里云内容安全的建议回答,格式为openai格式的流式/非流式响应
40-
- 如果阿里云内容安全未返回建议的回答,返回内容为内置的兜底回答,内容为`"很抱歉,我无法回答您的问题"`,格式为openai格式的流式/非流式响应
41-
42-
如果用户使用了非openai格式的协议,应当配置 `denyMessage`,此时对非法请求的处理逻辑为:
43-
- 返回用户配置的 `denyMessage` 内容,用户可以配置其为序列化后的json字符串,以保持与正常请求接口返回格式的一致性
44-
- 如果 `denyMessage` 为空,优先返回阿里云内容安全的建议回答,格式为纯文本
45-
- 如果阿里云内容安全未返回建议回答,返回内置的兜底回答,内容为`"很抱歉,我无法回答您的问题"`,格式为纯文本
33+
| `riskLevelBar` | string | optional | high | 拦截风险等级,取值为 max, high, medium, low |
34+
35+
补充说明一下 `denyMessage`,对非法请求的处理逻辑为:
36+
- 如果配置了 `denyMessage`,返回内容为 `denyMessage` 配置内容,格式为openai格式的流式/非流式响应
37+
- 如果没有配置 `denyMessage`,优先返回阿里云内容安全的建议回答,格式为openai格式的流式/非流式响应
38+
- 如果阿里云内容安全未返回建议的回答,返回内容为内置的兜底回答,内容为`"很抱歉,我无法回答您的问题"`,格式为openai格式的流式/非流式响应
39+
40+
如果用户使用了非openai格式的协议,此时对非法请求的处理逻辑为:
41+
- 如果配置了 `denyMessage`,返回用户配置的 `denyMessage` 内容,非流式响应
42+
- 如果没有配置 `denyMessage`,优先返回阿里云内容安全的建议回答,非流式响应
43+
- 如果阿里云内容安全未返回建议回答,返回内置的兜底回答,内容为`"很抱歉,我无法回答您的问题"`,非流式响应
44+
45+
补充说明一下 `riskLevelBar` 的四个等级:
46+
- `max`: 检测请求/响应内容,但是不会产生拦截行为
47+
- `high`: 内容安全检测结果中风险等级为 `high` 时产生拦截
48+
- `medium`: 内容安全检测结果中风险等级 >= `medium` 时产生拦截
49+
- `low`: 内容安全检测结果中风险等级 >= `low` 时产生拦截
4650

4751
## 配置示例
4852
### 前提条件

plugins/wasm-go/extensions/ai-security-guard/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ replace github.com/alibaba/higress/plugins/wasm-go => ../..
77
require (
88
github.com/alibaba/higress/plugins/wasm-go v1.3.6-0.20240522012622-fc6a6aad8906
99
github.com/higress-group/proxy-wasm-go-sdk v0.0.0-20240711023527-ba358c48772f
10-
github.com/tidwall/gjson v1.14.3
10+
github.com/tidwall/gjson v1.17.3
1111
)
1212

1313
require (

plugins/wasm-go/extensions/ai-security-guard/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ github.com/magefile/mage v1.14.0 h1:6QDX3g6z1YvJ4olPhT1wksUcSa/V0a1B+pJb73fBjyo=
99
github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
1010
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
1111
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
12-
github.com/tidwall/gjson v1.14.3 h1:9jvXn7olKEHU1S9vwoMGliaT8jq1vJ7IH/n9zD9Dnlw=
13-
github.com/tidwall/gjson v1.14.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
12+
github.com/tidwall/gjson v1.17.3 h1:bwWLZU7icoKRG+C+0PNwIKC6FCJO/Q3p2pZvuP0jN94=
13+
github.com/tidwall/gjson v1.17.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
1414
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
1515
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
1616
github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=

0 commit comments

Comments
 (0)