如何在 AI 网关开启使用 AI 安全护栏

更新时间:
复制 MD 格式

本文所介绍 AI 网关(AI Gateway)是指阿里云 API 网关的子产品 AI 网关。作为企业级 AI 流量中枢, AI 网关提供多模型统一代理并高效管理 MCP 与 Agent,让 LLM 调用更可控、更安全、更经济。在 AI 网关中接入 AI 安全护栏,可在不改造业务架构的前提下,自动对经过网关的 AI 请求和响应进行内容安全检测与风险拦截。本文介绍从创建护栏配置到关联网关实例的完整操作流程。

接入前提

  1. 开通 AI 网关:点击 开通 AI 网关。

  2. 开通 AI 安全护栏:点击 开通 AI 安全护栏。

  3. 完成 SLR 授权:需要在 AI 网关控制台完成 AI 网关调用 AI 安全护栏的授权,具体可在下述步骤二中进行。

接入流程概览

整体流程分为两步:先在 AI 安全护栏控制台创建防护配置,再到 AI 网关控制台将配置关联到目标实例。

步骤

操作位置

说明

步骤一

创建防护配置

在 AI 安全护栏控制台配置检测规则和防护处置策略,仅保存新建的配置不生效,配置需成功在 AI 网关关联才生效。

步骤二

关联配置

在 AI 网关控制台将护栏配置关联到网关实例,即刻生效。

说明

与旧版的区别:旧版在 AI 网关控制台完成全部配置,新版将检测配置和防护处置统一迁移到 AI 安全护栏控制台,并优化了旧版本的部分已知问题。

步骤一:在 AI 安全护栏控制台创建配置

1.1 进入配置页面

  1. 登录 AI 安全护栏控制台。

  2. 在总览页面,找到 AI 网关图标,在鼠标触碰图标后弹出的弹窗内,单击 接入管理 > 新增配置。

1.2 选择模型协议

在「协议配置」区域,选择需要的模型协议:

选项

说明

OpenAI

兼容 OpenAI Chat Completions 协议的模型。

Anthropic

兼容 Anthropic Messages 协议的模型。

Vertex AI

Google Vertex AI 协议。

1.3 配置请求检测(输入)

开启 检测请求 开关后,配置输入侧的检测参数:

参数

说明

默认值

模态

检测的内容模态,例如「文本」。

文本

映射 Service

对应的检测服务。

query_security_check_pro,可下拉选择

送审方式

文本切片方式,例如「按字符切片」。

按字符切片

最大字符长度

单次请求允许的最大字符数。

100000,超出部分会被丢弃。

说明

超长文本排队送审会对耗时有较大影响。超出丢弃的设计可以让用户可以自己决策性能和效果的平衡。

分片大小

每个检测分片的字符数。

2000,最大值2000

说明

更小的切片对应更多的审核次数,带来更多的审核费用。输入场景为非流式,一般建议分片大小2000即可,无须更小。

最大并发

分片送审的并发数。

2,最大值5

如需检测多种模态(例如文本和图片),单击 + 添加模态 新增行。

1.4 配置输出检测(响应)

开启 检测输出 开关后,首先需要选择 审查模式:

审查模式

说明

可选响应命中动作

适用场景

先审后发

每个输出分片先送检,审核通过后再返回给用户。

拦截 / 观察 / 脱敏

对安全要求极高,不允许任何违规内容展示。

先发后审

输出分片先返回给用户,异步送检;若检测到违规,中断后续输出,并返回撤回事件(业务需要收到撤回事件后增加处理)。

撤回 / 观察

追求低延迟,允许短暂的违规内容展示后撤回。

输出检测参数默认值:

参数

说明

默认值

模态

检测的内容模态,例如「文本」。

文本

映射 Service

对应的检测服务。

response_security_check_pro,可下拉选择

送审方式

文本切片方式,例如「按字符切片」。

按字符切片

最大字符长度

单次请求允许的最大字符数。

100000,超出部分会被丢弃。

说明

超长文本排队送审会对耗时有较大影响。超出丢弃的设计可以让用户可以自己决策性能和效果的平衡

分片大小

每个检测分片的字符数。

300,最大值2000

说明

输出场景一般为流式,分片大小影响用户体验和风险露出时间,一般建议切片大小在200~500之间,能比较平衡语义和用户体验。

最大并发

分片送审的并发数。

先审后发下,默认2,最大值5

先发后审下,默认1,最大值1

1.5 配置防护处置

单击 + 添加规则,创建防护处置规则。

防护维度(多选):

防护维度

说明

内容合规

涉政、色情、暴恐等违规内容。

敏感数据

个人隐私、商业机密等敏感信息。

自定义脱敏

基于自定义规则的敏感数据脱敏。

提示词攻击

Prompt Injection 等攻击检测。

恶意URL

恶意链接、钓鱼网站检测。

模型幻觉

模型生成不实信息检测。

自定义检测Agent

基于自定义大模型的检测。

IP检测Agent

知名IP相关检测。

重要
  • 检测策略配置:AI 安全护栏控制台->防护配置页面可调整对应service的防护规则及阈值。

  • 防护处置配置:此页面配置的是针对具体的防护维度进行的处置配置,若检测策略中开启了某防护维度,但在防护处置页面未进行配置,则默认不处置,即放行。

风险等级与动作:

参数

可选值

说明

风险等级

高风险 / 中风险 / 低风险

触发该等级风险时执行处置。

请求命中动作

拦截 / 观察 / 脱敏

请求中检测到风险时,阻断请求不发送给模型。

响应命中动作

拦截 / 撤回 / 观察 / 脱敏

响应中检测到风险时的处理方式,不同送审方式可选值不同。

拦截文案

自定义文本

拦截时返回给用户的替代文本。

说明

撤回与拦截的区别:「拦截」直接阻断响应,不返回给用户;「撤回」先将响应返回,再异步通知客户端撤回,后续输出不返回给用户。撤回模式需要客户端配合处理撤回事件,具体说明请参见下文「先发后审详解」。

一般来说,非流式输出场景建议选择先审后发,流式输出场景建议选择先发后审。

配置完成后单击 保存。

步骤二:在 AI 网关控制台关联配置

  1. 登录 AI 网关控制台,打开 实例页面在顶部菜单栏选择目标实例所在地域,并单击目标实例ID。

    重要
    • AI 网关根据自身所在的 Region 会自动就近选择对应的 AI 安全护栏 Region,具体映射逻辑如下表。同时 AI 安全护栏的美国(弗吉尼亚)不支持AI 网关接入,因此 AI 网关位于美国的节点时会路由到护栏的德国(法兰克福)。

      网关控制台 Region

      护栏控制台 Region

      亚太 - 中国

      华东 2(上海)

      亚太 - 其他

      新加坡

      中国香港

      中国香港

      欧洲与美洲

      德国(法兰克福)

      其他地域

      华东 2(上海)

  2. 找到待配置的实例,确认引擎版本为 2.1.26 及以上。若版本低于此要求,需先在实例页面手动升级。

  3. 在左侧导航栏,单击Model API,然后单击目标API名称进入API详情页面。

  4. 进入 API 详情页面,单击 AI 安全护栏 编辑区域可展开配置。若未完成SLR授权,需根据页面提示完成授权,允许 AI 网关访问 AI 安全护栏服务。

  5. 选择上一步在 AI 安全护栏控制台创建的配置,关联至当前网关实例。若从旧配置切换,需要手动切换为新版本。

  6. 保存后即刻生效,无需重启或重新部署。

重要
  • AI 网关实例的引擎版本必须为 2.1.26 及以上,否则无法关联护栏配置。

  • 若引擎版本升级前,已存在旧配置,则需要手动切换为新版本。若没有切换需求,旧配置同样生效不影响。

  • AI 网关支持按照消费者配置 AI 安全护栏防护策略。可根据以下规则匹配消费者,并下拉关联不同的AI 安全护栏配置ID。

    • 任意消费者:对所有消费者生效。

    • 精确匹配:对指定消费者生效。

    • 正则匹配:对满足正则表达式匹配的消费者生效。

    • 前缀匹配:对指定前缀开头的消费者生效。

先发后审详解

工作原理

「先发后审」模式下,模型生成的响应内容会立即流式返回给用户,同时异步送交 AI 安全护栏检测。若检测到违规内容,AI 安全护栏会返回一条撤回事件(recall event),客户端收到后执行撤回动作,将已展示的违规内容替换为拦截文案。

撤回事件格式

当响应命中防护规则时,AI 安全护栏会在 SSE 流中追加以下事件:

data: {"id":"chatcmpl-xxxx","object":"chat.completion.chunk","created":1793104383,"model":"qwen-max","choices":[{"index":0,"delta":{"content":"内容不合法,响应被撤回。"},"finish_reason":"content_filter","x_guardrail":{"action":"recall","scope":"all","replace_text":"内容不合法,响应被撤回。"}}]}

data: [DONE]
          

关键字段说明:

字段

说明

finish_reason

值为 content_filter,表示内容被安全过滤。

x_guardrail.action

值为 recall,表示需要客户端执行撤回。

x_guardrail.scope

值为 all,表示撤回全部已输出内容。

x_guardrail.replace_text

撤回后替换展示的文本。

客户端处理逻辑

客户端在解析 SSE 流时,需增加对撤回事件的处理:

  1. 检测 choices[].finish_reason 是否为 content_filter。

  2. 若为 content_filter 且 x_guardrail.action 为 recall,清除已展示的流式内容。

  3. 将 x_guardrail.replace_text 的内容展示给用户。

前端伪代码参考:

// 在 SSE 流式处理循环中
for await (const chunk of stream) {
  const choice = chunk.choices?.[0];

  // 检测撤回事件
  if (choice?.finish_reason === 'content_filter'
      && choice?.delta?.x_guardrail?.action === 'recall') {
    // 清除已展示的内容
    clearDisplayedContent();
    // 展示替换文本
    displayText(choice.delta.x_guardrail.replace_text);
    break;
  }

  // 正常流式展示
  appendText(choice?.delta?.content);
}
          

AI 安全护栏审核耗时对比:先发后审与先审后发

假设切片配置均为:输入分片 2000,并发 2,输出分片 300。

先发后审(撤回模式):

指标

输入 1000 字符

输出 1000 字符

输入 5000 字符

输出 5000 字符

输入 10000 字符

输出 10000 字符

TTFT 增加

1 次审核耗时

1 次审核耗时

1 次审核耗时

响应耗时增加

1 次审核耗时

1 次审核耗时

1 次审核耗时

先审后发(拦截模式):切片配置为:输入分片 2000,并发 20,输出分片 300。

指标

输入 1000 字符

输出 1000 字符

输入 5000 字符

输出 5000 字符

输入 10000 字符

输出 10000 字符

TTFT 增加

2 次审核耗时

4 次审核耗时

6 次审核耗时

响应耗时增加

4 次审核耗时

17 次审核耗时

34 次审核耗时

说明

结论:先发后审模式在 TTFT 和大模型响应耗时上均有显著优势,尤其在长文本场景下差距更大。若业务允许短暂的违规内容展示后撤回,推荐优先选择先发后审模式。

注意事项

  • 配置生效范围:一个护栏配置可关联到多个网关实例;修改护栏配置后,所有关联实例同步生效。

  • 审查模式切换:在 AI 安全护栏控制台修改审查模式(先审后发与先发后审之间切换)即可,无需在网关侧做任何改动。

  • 自定义检测Agent耗时:开启自定义检测Agent后,检测耗时会从约 200ms 增加到 200ms~2s 不等(与所选模型相关),请根据业务延迟要求合理选择。

  • 撤回事件依赖客户端:先发后审模式下,撤回动作需要客户端配合处理。若客户端未实现撤回逻辑,违规内容将停留在用户界面。

  • AI 网关引擎版本要求:AI 网关实例的引擎版本必须为 2.1.26 及以上,否则无法关联护栏配置。

  • 旧版本切换:若您已使用低于 2.1.26 的引擎版本并开启了护栏,需要先手动升级引擎版本,再执行上述两个步骤完成配置,同时在 AI 网关的护栏配置页面手动切换为新版本。版本切换不可回退,请谨慎操作,同时建议新增实例并完成配置验证后再切换流量。