多模态异步审核SDK参考

更新时间:
复制 MD 格式

本文介绍AI安全护栏SDK接入的方式。

步骤一:开通服务

前往AI安全护栏产品开通服务页面,开通AI安全护栏产品服务。默认付费方式是按量后付费,且按照实际用量结算当日费用,不调用服务不收费。接口接入使用后系统会按使用量自动出账。

步骤二:为RAM用户授权

在接入SDK或者API之前,您需要为RAM用户授权。您可以为阿里云账号和RAM用户创建一个访问密钥(AccessKey)。在调用阿里云API时您需要使用AccessKey完成身份验证。获取方式,请参见获取AccessKey

操作步骤

  1. 使用阿里云账号登录RAM控制台

  2. 创建RAM用户。

    具体操作,请参见创建RAM用户

  3. RAM用户授权系统策略权限:AliyunYundunGreenWebFullAccess

    具体操作,请参见管理RAM用户的权限

    完成以上配置后,您可以使用RAM用户调用内容安全API。

步骤三:安装并接入SDK

目前支持的接入地域如下:

地域

外网接入地址

内网接入地址

华东2(上海)

green-cip.cn-shanghai.aliyuncs.com

green-cip-vpc.cn-shanghai.aliyuncs.com

华北2(北京)

green-cip.cn-beijing.aliyuncs.com

green-cip-vpc.cn-beijing.aliyuncs.com

华东1(杭州)

green-cip.cn-hangzhou.aliyuncs.com

green-cip-vpc.cn-hangzhou.aliyuncs.com

华南1(深圳)

green-cip.cn-shenzhen.aliyuncs.com

green-cip-vpc.cn-shenzhen.aliyuncs.com

西南1(成都)

green-cip.cn-chengdu.aliyuncs.com

暂无

新加坡

green-cip.ap-southeast-1.aliyuncs.com

green-cip-vpc.ap-southeast-1.aliyuncs.com

说明

如果需要其他语言的SDK示例代码,您可以通过OpenAPI开发者门户OpenAPI开发者门户在线调试工具调试API接口,该工具会自动生成相应APISDK调用示例代码。

阿里云SDK代码通过定义ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET环境变量来创建默认的访问凭证。调用接口时,程序直接访问凭证,读取您的访问密钥(即AccessKey)并自动完成鉴权。您在接入SDK代码示例之前,请先配置环境变量。具体操作,请参见身份验证配置

示例代码

Java SDK

支持Java 1.8及以上版本。

原始代码,请参见Java SDK源码或者Java SDK源码(OSS路径)

pom.xml中加入相应依赖,就可以在Maven工程中使用SDK。

1、在dependencies中添加如下依赖。

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>green20220302</artifactId>
  <version>3.6.1</version>
</dependency>

2、接入Java SDK 代码示例。

  • 提交音视频任务代码示例

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import com.aliyun.green20220302.models.MultiModalGuardAsyncRequest;
import com.aliyun.green20220302.models.MultiModalGuardAsyncResponse;
import com.aliyun.green20220302.models.MultiModalGuardAsyncResponseBody;
import com.aliyun.teaopenapi.models.Config;

public class MultiModalGuardAsyncDemo {
  public static void main(String[] args) throws Exception {
    Config config = new Config();
    /**
         * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
         * 常见获取环境变量方式:
         * 方式一:
         *     获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * 方式二:
         *     获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
    config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID");
    config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret");
    //接入区域和地址请根据实际情况修改
    config.setRegionId("cn-shanghai");
    config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
    //读取时超时时间,单位毫秒(ms)。
    config.setReadTimeout(10000);
    //连接时超时时间,单位毫秒(ms)。
    config.setConnectTimeout(3000);
    //设置http代理。
    //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
    //设置https代理。
    //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
    com.aliyun.green20220302.Client client = new com.aliyun.green20220302.Client(config);

    JSONObject serviceParameters = new JSONObject();
    serviceParameters.put("url", "https://xxx.mp4");
    // 设置回调
    //serviceParameters.put("seed", "123");
    //serviceParameters.put("callback", "http://www.aliyunXXX.com/");
    MultiModalGuardAsyncRequest request = new MultiModalGuardAsyncRequest();
    request.setService("video_security_check");
    request.setServiceParameters(JSON.toJSONString(serviceParameters));

    try {
      MultiModalGuardAsyncResponse response = client.multiModalGuardAsync(request);
      if (200 == response.getStatusCode() ) {
        MultiModalGuardAsyncResponseBody result = response.getBody();
        System.out.println(JSON.toJSONString(result, true));
        Integer code = result.getCode();
        if (200 == code) {
          MultiModalGuardAsyncResponseBody.MultiModalGuardAsyncResponseBodyData data = result.getData();
          System.out.println("multi modal guard async task submit success, taskId = " + data.getTaskId());
        } else {
          System.out.println("multi modal guard async task not success. code:" + code + ", msg:" + result.getMessage());
        }
      } else {
        System.out.println("response not success. status:" + response.getStatusCode());
      }
    } catch (Exception e) {
      System.out.println("multi modal guard async task submit exception" + e.getMessage());
    }
  }
}
  • 获取音视频任务代码示例

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import com.aliyun.green20220302.models.MultiModalGuardAsyncResultRequest;
import com.aliyun.green20220302.models.MultiModalGuardAsyncResultResponse;
import com.aliyun.green20220302.models.MultiModalGuardAsyncResultResponseBody;
import com.aliyun.teaopenapi.models.Config;

public class MultiModalGuardAsyncResultDemo {
  public static void main(String[] args) throws Exception {
    Config config = new Config();
    /**
         * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
         * 常见获取环境变量方式:
         * 方式一:
         *     获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * 方式二:
         *     获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
    config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID");
    config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret");
    //接入区域和地址请根据实际情况修改
    config.setRegionId("cn-shanghai");
    config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
    //读取时超时时间,单位毫秒(ms)。
    config.setReadTimeout(10000);
    //连接时超时时间,单位毫秒(ms)。
    config.setConnectTimeout(3000);
    //设置http代理。
    //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
    //设置https代理。
    //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
    com.aliyun.green20220302.Client client = new com.aliyun.green20220302.Client(config);

    MultiModalGuardAsyncResultRequest request = new MultiModalGuardAsyncResultRequest();
    JSONObject serviceParameters = new JSONObject();
    // 提交任务时返回的taskId
    serviceParameters.put("taskId", "vi_f_XXX");
    request.setService("video_security_check");
    request.setServiceParameters(JSON.toJSONString(serviceParameters));

    try {
      MultiModalGuardAsyncResultResponse response = client.multiModalGuardAsyncResult(request);
      if (200 == response.getStatusCode() ) {
        MultiModalGuardAsyncResultResponseBody result = response.getBody();
        System.out.println(JSON.toJSONString(result, true));
        Integer code = result.getCode();
        if (200 == code) {
          MultiModalGuardAsyncResultResponseBody.MultiModalGuardAsyncResultResponseBodyData data = result.getData();
          System.out.println("get multi modal guard async result success");
          System.out.println("suggestion = " + data.getSuggestion());
          // 如果开启音频检测,音频结果会返回
          System.out.println("audioResult = " + JSON.toJSONString(data.getAudioResult()));
          // 如果开启画面检测,视频结果会返回
          System.out.println("frameResult = " + JSON.toJSONString(data.getFrameResult()));
        } else {
                    System.out.println("multi modal guard async result not success. code:" + code + ", msg:" + result.getMessage());
                }
            } else {
                System.out.println("response not success. status:" + response.getStatusCode());
            }
        } catch (Exception e) {
            System.out.println("multi modal guard async result exception" + e.getMessage());
        }
    }
}
  • 提交多图任务代码示例

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.green20220302.models.MultiModalGuardAsyncRequest;
import com.aliyun.green20220302.models.MultiModalGuardAsyncResponse;
import com.aliyun.green20220302.models.MultiModalGuardAsyncResponseBody;
import com.aliyun.teaopenapi.models.Config;
import java.util.ArrayList;
import java.util.List;
public class MultiImageGuardAsyncDemo {
  public static void main(String[] args) throws Exception {
    Config config = new Config();
    /**
         * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
         * 常见获取环境变量方式:
         * 方式一:
         *     获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * 方式二:
         *     获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
    config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID");
    config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret");
    //接入区域和地址请根据实际情况修改
    config.setRegionId("cn-shanghai");
    config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
    //读取时超时时间,单位毫秒(ms)。
    config.setReadTimeout(10000);
    //连接时超时时间,单位毫秒(ms)。
    config.setConnectTimeout(3000);
    //设置http代理。
    //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
    //设置https代理。
    //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
    com.aliyun.green20220302.Client client = new com.aliyun.green20220302.Client(config);
    JSONObject serviceParameters = new JSONObject();
    //待检测图片url
    List<String> imageUrls = new ArrayList<>();
    imageUrls.add("https://xxxxx/xxx1.jpg");
    imageUrls.add("https://xxxxx/xxx2.jpg");
    serviceParameters.put("imageUrls", imageUrls);
    // 设置回调
    //serviceParameters.put("seed", "123");
    //serviceParameters.put("callback", "http://www.aliyunXXX.com/");
    MultiModalGuardAsyncRequest request = new MultiModalGuardAsyncRequest();
    request.setService("img_query_security_check");
    request.setServiceParameters(JSON.toJSONString(serviceParameters));
    try {
      MultiModalGuardAsyncResponse response = client.multiModalGuardAsync(request);
      if (200 == response.getStatusCode()) {
        MultiModalGuardAsyncResponseBody result = response.getBody();
        System.out.println(JSON.toJSONString(result, true));
        Integer code = result.getCode();
        if (200 == code) {
          MultiModalGuardAsyncResponseBody.MultiModalGuardAsyncResponseBodyData data = result.getData();
          System.out.println("multi image guard async task submit success, taskId = " + data.getTaskId());
        } else {
          System.out.println("multi image guard async task not success. code:" + code + ", msg:" + result.getMessage());
                }
            } else {
                System.out.println("response not success. status:" + response.getStatusCode());
            }
        } catch (Exception e) {
            System.out.println("multi image guard async task submit exception" + e.getMessage());
        }
    }
}
  • 获取多图任务代码示例

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.green20220302.models.MultiModalGuardAsyncResultRequest;
import com.aliyun.green20220302.models.MultiModalGuardAsyncResultResponse;
import com.aliyun.green20220302.models.MultiModalGuardAsyncResultResponseBody;
import com.aliyun.teaopenapi.models.Config;
public class MultiImageGuardAsyncResultDemo {
  public static void main(String[] args) throws Exception {
    Config config = new Config();
    /**
         * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
         * 常见获取环境变量方式:
         * 方式一:
         *     获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * 方式二:
         *     获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
    config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID");
    config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret");
    //接入区域和地址请根据实际情况修改
    config.setRegionId("cn-shanghai");
    config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
    //读取时超时时间,单位毫秒(ms)。
    config.setReadTimeout(10000);
    //连接时超时时间,单位毫秒(ms)。
    config.setConnectTimeout(3000);
    //设置http代理。
    //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
    //设置https代理。
    //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
    com.aliyun.green20220302.Client client = new com.aliyun.green20220302.Client(config);
    MultiModalGuardAsyncResultRequest request = new MultiModalGuardAsyncResultRequest();
    JSONObject serviceParameters = new JSONObject();
    // 提交任务时返回的taskId
    serviceParameters.put("taskId", "vi_f_xxx");
    request.setService("img_query_security_check");
    request.setServiceParameters(JSON.toJSONString(serviceParameters));
    try {
      MultiModalGuardAsyncResultResponse response = client.multiModalGuardAsyncResult(request);
      if (200 == response.getStatusCode() ) {
        MultiModalGuardAsyncResultResponseBody result = response.getBody();
        System.out.println(JSON.toJSONString(result, true));
        Integer code = result.getCode();
        if (200 == code) {
          MultiModalGuardAsyncResultResponseBody.MultiModalGuardAsyncResultResponseBodyData data = result.getData();
          System.out.println("get multi image guard async result success");
          System.out.println("suggestion = " + data.getSuggestion());
          // 如果开启音频检测,音频结果会返回
          System.out.println("audioResult = " + JSON.toJSONString(data.getAudioResult()));
          // 如果开启画面检测,视频结果会返回
          System.out.println("frameResult = " + JSON.toJSONString(data.getFrameResult()));
        } else {
          System.out.println("multi image guard async result not success. code:" + code + ", msg:" + result.getMessage());
        }
      } else {
        System.out.println("response not success. status:" + response.getStatusCode());
            }
        } catch (Exception e) {
            System.out.println("multi image guard async result exception" + e.getMessage());
        }
    }
}

Python SDK

支持Python 3.6及以上版本。

原始代码,请参见Python SDK源码

1、执行如下命令引入相关依赖。

pip install alibabacloud_green20220302==3.4.1

2、接入Python SDK 代码示例。

  • 提交音视频任务代码示例

# coding=utf-8
# python version >= 3.6
from alibabacloud_green20220302.client import Client
from alibabacloud_green20220302 import models
from alibabacloud_tea_openapi.models import Config
import json

config = Config(
    # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    # 常见获取环境变量方式:
    # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
    # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
    access_key_id='建议从环境变量中获取RAM用户AccessKey ID',
    access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret',
    # 连接超时时间 单位毫秒(ms)
    connect_timeout=10000,
    # 读超时时间 单位毫秒(ms)
    read_timeout=3000,
    region_id='cn-shanghai',
    endpoint='green-cip.cn-shanghai.aliyuncs.com'
)

clt = Client(config)

serviceParameters = {
    'url': 'https://abc.alicdn.com/tfs/xxxxxxxxxx001.mp4'
}
multiModalGuardRequest = models.MultiModalGuardAsyncRequest(
    # 检测服务
    service='video_security_check',
    service_parameters=json.dumps(serviceParameters)
)

try:
    response = clt.multi_modal_guard_async(multiModalGuardRequest)
    if response.status_code == 200:
        # 调用成功
        result = response.body
        print('response success. result:{}'.format(result))
    else:
        print('response not success. status:{} ,result:{}'.format(response.status_code, response))
except Exception as err:
    print(err)
  • 获取音视频任务代码示例

# coding=utf-8
# python version >= 3.6
from alibabacloud_green20220302.client import Client
from alibabacloud_green20220302 import models
from alibabacloud_tea_openapi.models import Config
import json
config = Config(
    # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    # 常见获取环境变量方式:
    # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
    # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
    access_key_id='建议从环境变量中获取RAM用户AccessKey ID',
    access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret',
    # 连接超时时间 单位毫秒(ms)
    connect_timeout=10000,
    # 读超时时间 单位毫秒(ms)
    read_timeout=3000,
    region_id='cn-shanghai',
    endpoint='green-cip.cn-shanghai.aliyuncs.com'
)
clt = Client(config)
serviceParameters = {
    'taskId': 'vi_f_xxx'
}
multiModalGuardResultRequest = models.MultiModalGuardAsyncResultRequest(
    # 检测服务
    service='video_security_check',
    service_parameters=json.dumps(serviceParameters)
)
try:
    response = clt.multi_modal_guard_async_result(multiModalGuardResultRequest)
    if response.status_code == 200:
        # 调用成功
        result = response.body
        print('response success. result:{}'.format(result))
    else:
        print('response not success. status:{} ,result:{}'.format(response.status_code, response))
except Exception as err:
    print(err)
  • 提交多图任务代码示例

# coding=utf-8
# python version >= 3.6
from alibabacloud_green20220302.client import Client
from alibabacloud_green20220302 import models
from alibabacloud_tea_openapi.models import Config
import json
config = Config(
    # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    # 常见获取环境变量方式:
    # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
    # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
    access_key_id='建议从环境变量中获取RAM用户AccessKey ID',
    access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret',
    # 连接超时时间 单位毫秒(ms)
    connect_timeout=10000,
    # 读超时时间 单位毫秒(ms)
    read_timeout=3000,
    region_id='cn-shanghai',
    endpoint='green-cip.cn-shanghai.aliyuncs.com'
)
clt = Client(config)
serviceParameters = {
    'imageUrls': ['https://img.alicdn.com/tfs/xxxxxxxxxx001.jpg']
}
multiModalGuardRequest = models.MultiModalGuardAsyncRequest(
    # 检测服务
    service='img_query_security_check',
    service_parameters=json.dumps(serviceParameters)
)
try:
    response = clt.multi_modal_guard_async(multiModalGuardRequest)
    if response.status_code == 200:
        # 调用成功
        result = response.body
        print('response success. result:{}'.format(result))
    else:
        print('response not success. status:{} ,result:{}'.format(response.status_code, response))
except Exception as err:
    print(err)
  • 获取多图任务代码示例

# coding=utf-8
# python version >= 3.6
from alibabacloud_green20220302.client import Client
from alibabacloud_green20220302 import models
from alibabacloud_tea_openapi.models import Config
import json
config = Config(
    # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    # 常见获取环境变量方式:
    # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
    # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
    access_key_id='建议从环境变量中获取RAM用户AccessKey ID',
    access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret',
    # 连接超时时间 单位毫秒(ms)
    connect_timeout=10000,
    # 读超时时间 单位毫秒(ms)
    read_timeout=3000,
    region_id='cn-shanghai',
    endpoint='green-cip.cn-shanghai.aliyuncs.com'
)
clt = Client(config)
serviceParameters = {
    'taskId': 'vi_f_xxx'
}
multiModalGuardResultRequest = models.MultiModalGuardAsyncResultRequest(
    # 检测服务
    service='img_query_security_check',
    service_parameters=json.dumps(serviceParameters)
)
try:
    response = clt.multi_modal_guard_async_result(multiModalGuardResultRequest)
    if response.status_code == 200:
        # 调用成功
        result = response.body
        print('response success. result:{}'.format(result))
    else:
        print('response not success. status:{} ,result:{}'.format(response.status_code, response))
except Exception as err:
    print(err)