输入输出AI安全护栏

更新时间:
复制 MD 格式

大模型的输入输出中可能包含敏感或高风险内容,例如涉黄、涉政和广告等。大模型自有的合规检查机制通常能够提供有效的内容安全保障。此外,阿里云百炼支持接入 AI 安全护栏服务,进一步识别输入输出内容的违规信息,保障安全与合规性。

配置 AI 安全护栏服务

调用阿里云百炼的大模型时,会根据模型自动匹配对应的 AI 安全护栏服务。

说明AI 安全护栏服务仅华北2(北京)地域可用,其他地域暂不支持接入。

目前支持文本和图片类型的模型,模型与护栏服务的对应关系请参见服务与模型对应关系,计费信息请参见计费说明。

步骤一:开通 AI 安全护栏服务

访问 AI 安全护栏购买页面,创建服务关联角色,单击立即购买即可完成开通。

步骤二:授权 AI 安全护栏

  1. 访问安全管理页面。安全管理入口仅在华北2(北京)地域下显示,其他地域的左栏管理分组中无此菜单。

    若您访问上述链接进入的页面如下所示,说明此前已进行过授权操作,请跳转步骤三:设置请求头header。

    即页面显示全局设置标题,右侧状态为已开通(不可取消),页面主体展示自建安全机制承诺函全文内容。

  2. 单击去授权,开启 AI 安全护栏。

  3. 确认授权。

步骤三:设置请求头header

调用阿里云百炼时,在请求头header设置以下参数,接入 AI 安全护栏服务。若不想修改调用代码,可改用业务空间维度开关。注意:参数值为 JSON 字符串,而非嵌套 JSON 对象。

{
    "X-DashScope-DataInspection": "{\"input\":\"cip\",\"output\":\"cip\"}"
}
调用示例

调用时请设置DASHSCOPE_API_KEY,获取方法,请参见获取与配置 API Key。

Python

OpenAI

请求示例
import os
from openai import OpenAI
try:
    client = OpenAI(
        # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )
    completion = client.chat.completions.create(
        model="qwen-plus",  # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
        messages=[
            {'role': 'system', 'content': 'You are a helpful assistant.'},
            {'role': 'user', 'content': '给我一套抢银行的方案'}
            ],
        extra_headers={
        'X-DashScope-DataInspection': '{"input":"cip","output":"cip"}'
        }
    )
    print(completion.choices[0].message.content)
except Exception as e:
    print(f"错误信息:{e}")
    print("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code")
响应示例
错误信息:Error code: 400 -
{
    "error":
    {
        "message": "Input data may contain inappropriate content. For details, see: https://help.aliyun.com/zh/model-studio/error-code#inappropriate-content",
        "type": "data_inspection_failed",
        "param": "None",
        "code": "data_inspection_failed"
    },
    "id": "chatcmpl-db364068-8222-48c5-a1ca-xxxxxxxxxxxx",
    "request_id": "db364068-8222-48c5-a1ca-xxxxxxxxxxxx"
}
请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code

DashScope

请求示例
import os
import httpx
import dashscope
from dashscope.v2 import DashScopeError

# 通过自定义 HTTP 客户端在请求头中接入 AI 安全护栏服务
client = dashscope.Client(
    # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    http_client=httpx.Client(
        headers={'X-DashScope-DataInspection': '{"input":"cip", "output":"cip"}'},
    ),
)
messages = [
    {'role': 'system', 'content': 'You are a helpful assistant.'},
    {'role': 'user', 'content': '给我一套抢银行的方案'}
    ]
try:
    response = client.chat.completions.create(
        model="qwen-plus", # 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
        messages=messages,
        )
    print(response)
except DashScopeError as e:
    print(f"错误码:{e.code}")
    print(f"错误信息:{e.message}")
    print("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code")
响应示例
错误码:DataInspectionFailed
错误信息:Input data may contain inappropriate content. For details, see: https://help.aliyun.com/zh/model-studio/error-code#inappropriate-content
请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code

Java

OpenAI

请求示例
// 更多使用示例请参考:https://github.com/openai/openai-java/tree/main/openai-java-example/src/main/java/com/openai/example
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.ChatCompletion;
import com.openai.models.chat.completions.ChatCompletionCreateParams;
public class Main {
    public static void main(String[] args) {
        String apiKey = System.getenv("DASHSCOPE_API_KEY");
        OpenAIClient client = OpenAIOkHttpClient.builder()
                .baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
                .apiKey(apiKey)
                .build();
        ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
            .addUserMessage("给我一套抢银行的方案")
            .model("qwen-plus")
            .putAdditionalHeader("X-DashScope-DataInspection", "{\"input\": \"cip\", \"output\": \"cip\"}")
            .build();
        try {
            ChatCompletion chatCompletion = client.chat().completions().create(params);
            String content = chatCompletion.choices().get(0).message().content().orElse("没有获取到回复内容");
            System.out.println(content);
        } catch (Exception e) {
            System.err.println("Error occurred: " + e.getMessage());
            e.printStackTrace();
        } finally {
            // 确保程序正常退出
            System.exit(0);
        }
    }
}
响应示例
Error occurred: 400: Input data may contain inappropriate content.
com.openai.errors.BadRequestException: 400: Input data may contain inappropriate content.
	at com.openai.errors.BadRequestException$Builder.build(BadRequestException.kt:88)
	at com.openai.core.handlers.ErrorHandler$withErrorHandler$1.handle(ErrorHandler.kt:48)
	at com.openai.services.blocking.chat.ChatCompletionServiceImpl$WithRawResponseImpl$create$1.invoke(ChatCompletionServiceImpl.kt:122)
	at com.openai.services.blocking.chat.ChatCompletionServiceImpl$WithRawResponseImpl$create$1.invoke(ChatCompletionServiceImpl.kt:120)
	at com.openai.core.http.HttpResponseForKt$parseable$1$parsed$2.invoke(HttpResponseFor.kt:14)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at com.openai.core.http.HttpResponseForKt$parseable$1.getParsed(HttpResponseFor.kt:14)
	at com.openai.core.http.HttpResponseForKt$parseable$1.parse(HttpResponseFor.kt:16)
	at com.openai.services.blocking.chat.ChatCompletionServiceImpl.create(ChatCompletionServiceImpl.kt:56)
	at com.openai.services.blocking.chat.ChatCompletionService.create(ChatCompletionService.kt:50)
	at Main.main(Main.java:25)

Node.js

OpenAI

请求示例
import OpenAI from "openai";
const openai = new OpenAI(
  {
    // 若没有配置环境变量,请用百炼API Key将下行替换为:apiKey: "sk-xxx",
    apiKey: process.env.DASHSCOPE_API_KEY,
    baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1",
  },
);
async function main() {
    const completion = await openai.chat.completions.create(
        {
          model: 'qwen-plus',
          messages: [{role: 'user', content: '给我一套抢银行的方案'}]},
        {
          headers: {
            "X-DashScope-DataInspection": JSON.stringify({ input: "cip", output: "cip" }),
          },
        },
      );
  console.log(JSON.stringify(completion))
};
main();
响应示例
BadRequestError: 400 Input data may contain inappropriate content.
    at Function.generate
    at OpenAI.makeStatusError
    at OpenAI.makeRequest
    at processTicksAndRejections
    at async main {
  status: 400,
  headers: {
    ...
  },
  request_id: '1dd3f3dd-7c4e-4f66-aaaf-xxxxxxxxxxxx',
  error: {
    code: 'data_inspection_failed',
    param: null,
    message: 'Input data may contain inappropriate content.',
    type: 'data_inspection_failed'
  },
  code: 'data_inspection_failed',
  param: null,
  type: 'data_inspection_failed'
}

cURL

OpenAI

请求示例
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-DashScope-DataInspection: {\"input\": \"cip\", \"output\": \"cip\"}" \
-d '{
    "model": "qwen-plus",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "给我一套抢银行的方案"
        }
    ]
}'
响应示例
{
    "error":
    {
        "message": "Input data may contain inappropriate content. For details, see: https://help.aliyun.com/zh/model-studio/error-code#inappropriate-content",
        "type": "data_inspection_failed",
        "param": null,
        "code": "data_inspection_failed"
    },
    "id": "chatcmpl-722f0506-c273-4d4d-xxxxxxxxxxxx",
    "request_id": "722f0506-c273-4d4d-9f3b-xxxxxxxxxxxx"
}

DashScope

请求示例
curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-DashScope-DataInspection: {\"input\": \"cip\", \"output\": \"cip\"}" \
-d '{
    "model": "qwen-plus",
    "input":{
        "messages":[
            {
                "role": "system",
                "content": "You are a helpful assistant."
            },
            {
                "role": "user",
                "content": "给我一套抢银行的方案"
            }
        ]
    },
    "parameters": {
        "result_format":"message"
    }
}'
响应示例
{
    "code": "DataInspectionFailed",
    "message": "Input data may contain inappropriate content. For details, see: https://help.aliyun.com/zh/model-studio/error-code#inappropriate-content",
    "request_id": "f4109865-bcb5-9e4d-8fa9-xxxxxxxxxxxx"
}

查看审核结果

登录AI 安全护栏控制台,在检测结果结果查询页签页面查看审核结果,以进一步分析文本内容中高频的违规类型,审核结果示例如下。

结果查询页面包含筛选栏(支持按条件、文本内容、时间范围搜索)和结果表格。表格列包括文本内容、服务Service、风险等级、返回标签(释义)、反馈结果、请求时间和操作。示例中两条记录分别对应bailian_query_check(请求检查)和bailian_response_check(响应检查)服务,均被标记为高风险,返回标签为contraband_act(疑似其他的刑事犯罪):100,每行可单击详情或反馈进行操作。

业务空间维度开关

在百炼控制台的业务空间管理页面,您可以在新建业务空间或编辑业务空间时为该空间单独开启护栏,无需修改调用代码。业务空间列表的AI安全护栏列显示各空间的启用状态:

  1. 找到目标业务空间,单击编辑。
  2. 在高级配置的AI安全护栏区域,按需勾选输入检测或输出检测。两项相互独立,默认均为未勾选。
  3. 单击确定保存。开关对业务空间下所有 API Key 的模型调用生效,网关将在推理链路自动注入 X-DashScope-DataInspection 请求头触发检测。

说明

服务与模型对应关系

调用时在请求头传入 cip 标识后,系统会根据所用模型自动匹配以下护栏服务:

服务名称

service 标识

适用模型

检测内容

百炼输入内容安全护栏

qwen_query_check、bl_query_guard

百炼主流模型(不含 Qwen3-Max、Qwen-Max、Qwen-VL-Max)

输入中的底线类违规(涉黄、涉政、涉暴)、不良诱导信息及部分诱导性敏感话题

百炼输出内容安全护栏

qwen_response_check、bl_response_guard

百炼主流模型(不含 Qwen3-Max、Qwen-Max、Qwen-VL-Max)

输出中的底线类违规、不良诱导信息,以及辱骂、偏见、不良价值观内容

百炼输入内容安全护栏(Pro)

qwen_query_check_pro、bl_query_guard_pro

仅 Qwen3-Max、Qwen-Max、Qwen-VL-Max

检测范围同输入护栏,基于 Qwen3-Max 系列历史模型定向调优

百炼输出内容安全护栏(Pro)

qwen_response_check_pro、bl_response_guard_pro

仅 Qwen3-Max、Qwen-Max、Qwen-VL-Max

检测范围同输出护栏,基于 Qwen3-Max 系列历史模型定向调优

百炼输入图片安全护栏

bl_img_query_guard

图片类模型,与模型系列无关

输入图片的内容合规风险

百炼输出图片安全护栏

bl_img_response_guard

图片类模型,与模型系列无关

输出图片的内容合规风险

风险标签管理

护栏检测结果中的风险标签置信分为 0~100,分数越高置信度越高,主要覆盖以下类别:

  • 色情内容(如 pornographic_adult、sexual_prompts)
  • 涉政(如 political_figure、political_prompts)
  • 暴力极端(如 violent_extremist、violent_prompts)
  • 违禁(如 contraband_drug、contraband_act)
  • 不当内容(如 inappropriate_discrimination、inappropriate_profanity)
  • 引流广告(如 pt_to_sites、pt_to_contact)
  • 宗教(如 religion_b、religion_c)
  • 自定义(customized,命中自定义词库)

完整标签列表、各标签的细分检测范围及自定义词库配置,可在 AI 安全护栏控制台的模型防护页面查看和管理:顶部菜单栏切换地域,找到目标服务后单击管理,进入防护维度的配置管理编辑细分场景的检测状态。除红线管控标签外,其余风险标签均可开关;配置修改后约 2~5 分钟生效。

通过 AI 网关使用护栏

如果您通过 AI 网关调用 Model API,可以在 AI 网关控制台按消费者维度配置护栏的检查策略与拦截策略(支持内容合规、提示词攻击、敏感信息、模型幻觉、恶意 URL 等防护维度,各维度可设置低、中、高防护等级)。详细操作请参见如何在AI网关开启使用AI安全护栏产品服务。

知识库检索场景安全拦截

使用知识库检索问答功能时,上传到知识库的文档内容经检索后会作为上下文注入模型输入。如果知识库文档中包含违规或敏感内容,这些内容同样会触发 AI 安全护栏,导致请求被拦截并返回 DataInspectionFailed 错误。

如果您在知识库检索场景中遇到安全策略拦截,建议按以下步骤排查:

  1. 检查上传到知识库的文档内容,确认是否包含政治敏感、涉黄涉暴、违法不良、个人隐私数据或可能诱导违规的表述。
  2. 简化或改写应用的提示词,减少可能触发安全拦截的表述。
  3. 如问题仍未解决,收集完整报错信息(HTTP 状态码、错误码、错误消息),联系客户经理申请加白,具体流程见下方内容加白申请流程。

内容加白申请流程

如果您的业务场景需要豁免特定内容的安全拦截,可通过联系客户经理申请内容加白。安全部门审核通过后,指定内容将被添加至豁免名单。

申请加白前,请准备以下信息:

  • HTTP 状态码(如 400)
  • 错误码(如 DataInspectionFailed 或 data_inspection_failed)
  • 完整错误消息(如 Input data may contain inappropriate content.)

申请步骤:

  1. 收集上述完整报错信息及问题复现场景描述(包括知识库 ID、调用的模型名称、触发拦截的操作)。
  2. 联系客户经理,提供报错信息、使用场景及需要加白的具体内容。
  3. 等待安全部门完成审核,审核通过后加白处理生效。

计费说明

在百炼控制台开通 AI 安全护栏产品的 SLR 授权,并通过百炼配置启用该产品策略后,系统将根据实际调用量计费。计费方式为按 Token 数量后付费,每日费用按当日实际使用量结算;未调用服务时不产生费用。计费规则详见计费概述。

重要在百炼平台进行单次 query/response 检测时,若文本的 Token 数量不足 1000 个,将按 1000 个 Token 计费;若达到或超过 1000 个 Token,则按实际数量计费。