本文介绍AI安全护栏SDK接入的方式。
步骤一:开通服务
前往AI安全护栏产品开通服务页面,开通AI安全护栏产品服务。默认付费方式是按量后付费,且按照实际用量结算当日费用,不调用服务不收费。接口接入使用后系统会按使用量自动出账。
步骤二:为RAM用户授权
在接入SDK或者API之前,您需要为RAM用户授权。您可以为阿里云账号和RAM用户创建一个访问密钥(AccessKey)。在调用阿里云API时您需要使用AccessKey完成身份验证。获取方式,请参见获取AccessKey。
操作步骤
使用阿里云账号登录RAM控制台。
创建RAM用户。
具体操作,请参见创建RAM用户。
向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接口,该工具会自动生成相应API的SDK调用示例代码。
阿里云SDK代码通过定义ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_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.12、接入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)