图文混合模态审核服务支持SDK方式调用和原生HTTPS方式调用。推荐您使用SDK接入,可免去签名验证以及Body格式构建等细节步骤。本文介绍图文混合模态审核API接入的方式。
步骤一:开通服务
访问开通内容审核增强版服务页面,开通图文混合模态审核增强版服务。接口接入使用后系统会按使用量自动出账,具体信息,请参见二、计费说明。您也可以购买按量抵扣资源包,资源包相较于后付费存在一定阶梯折扣,适合使用量级可预期和较大的用户。
开通图文混合模态审核增强版服务后,默认付费方式是按量后付费,且按照实际用量结算当日费用,不调用服务不收费。
步骤二:为RAM用户授权
在接入SDK或者API之前,您需要为RAM用户授权。您可以为RAM用户创建一个访问密钥(AccessKey)。在调用阿里云API时您需要使用AccessKey完成身份验证。获取方式,请参见获取AccessKey。
步骤三:安装并接入图文混合模态审核服务
目前支持的接入地域为:
地域 | 外网接入地址 | 内网接入地址 |
华东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 |
阿里云SDK代码通过定义ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
环境变量来创建默认的访问凭证。调用接口时,程序直接访问凭证,读取您的访问密钥(即AccessKey)并自动完成鉴权。您在接入SDK代码示例之前,请先配置环境变量。具体操作,请参见管理访问凭据。
Java SDK
支持Java 1.8及以上版本。
原始代码,请参见Java SDK源码或者Java SDK源码(OSS路径)。
支持以下两种类型的图片检测。
对公网可访问图片进行检测
使用场景
当需要审核的图片可通过公网链接访问时,图文混合模态审核增强版服务可通过图片URL获取文件后进行审核。
在pom.xml中添加如下依赖安装Java SDK,即可以在Maven工程中使用SDK。
<dependency> <groupId>com.aliyun</groupId> <artifactId>green20220302</artifactId> <version>2.21.1</version> </dependency>
接入Java SDK。
提交异步图文混合检测任务
import com.alibaba.fastjson.JSON; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.DescribeMultimodalModerationResultRequest; import com.aliyun.green20220302.models.DescribeMultimodalModerationResultResponse; import com.aliyun.green20220302.models.DescribeMultimodalModerationResultResponseBody; import com.aliyun.green20220302.models.MultimodalAsyncModerationRequest; import com.aliyun.green20220302.models.MultimodalAsyncModerationResponse; import com.aliyun.teaopenapi.models.Config; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MultimodalModerationDemo { public static void main(String[] args) throws Exception { String accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID"; String accessKeySecret = "建议从环境变量中获取RAM用户AccessKey Secret"; String endpoint = "green-cip.cn-shanghai.aliyuncs.com"; // 1. 创建client Client client = createClient(accessKeyId, accessKeySecret, endpoint); // 2. 请求检测 String reqId = multimodalAsyncModeration(client); System.out.println("reqId=" + reqId); } /** * 创建请求客户端 * * @param accessKeyId * @param accessKeySecret * @param endpoint * @return * @throws Exception */ public static Client createClient(String accessKeyId, String accessKeySecret, String endpoint) throws Exception { Config config = new Config(); config.setAccessKeyId(accessKeyId); config.setAccessKeySecret(accessKeySecret); // 设置http代理。 //config.setHttpProxy("http://10.10.xx.xx:xxxx"); // 设置https代理。 //config.setHttpsProxy("https://10.10.xx.xx:xxxx"); config.setEndpoint(endpoint); return new Client(config); } private static String multimodalAsyncModeration(Client client) throws Exception { // 检测参数构造。 Map<String, Object> serviceParameters = new HashMap<>(); // 帖子主体内容 serviceParameters.put("mainData", createMainData()); // 帖子评论列表 serviceParameters.put("commentDatas", createCommentDatas()); MultimodalAsyncModerationRequest request = new MultimodalAsyncModerationRequest(); request.setService("post_text_image_detection"); request.setServiceParameters(JSON.toJSONString(serviceParameters)); MultimodalAsyncModerationResponse response = client.multimodalAsyncModeration(request); return response.getBody().getData().getReqId(); } //**一级评论列表*/ private static List<Map<String, Object>> createCommentDatas() { Map<String, String> image = new HashMap<>(); //公网可访问的URL。 image.put("imageUrl", "https://img.alicdn.com/tfs/xxxxxxxxxx001.png"); // 一级评论图片 List<Map<String, String>> images = new ArrayList<>(); images.add(image); Map<String, Object> commentData = new HashMap<>(); // 一级评论文本 commentData.put("content", "一级评论文本"); // 一级评论图片 commentData.put("images", images); // 二级评论列表 commentData.put("commentDatas", createCommentDatas2()); List<Map<String, Object>> commentDatas = new ArrayList<>(); commentDatas.add(commentData); return commentDatas; } /**一级评论列表*/ private static List<Map<String, Object>> createCommentDatas2() { Map<String, String> image = new HashMap<>(); //公网可访问的URL。 image.put("imageUrl", "https://img.alicdn.com/tfs/xxxxxxxxxx001.png"); // 二级评论图片 List<Map<String, String>> images = new ArrayList<>(); images.add(image); Map<String, Object> commentData = new HashMap<>(); // 二级评论文本 commentData.put("content", "二级评论文本"); // 二级评论图片 commentData.put("images", images); List<Map<String, Object>> commentDatas = new ArrayList<>(); commentDatas.add(commentData); return commentDatas; } private static Map<String, Object> createMainData() { Map<String, String> mainImage = new HashMap<>(); //公网可访问的URL。 mainImage.put("imageUrl", "https://img.alicdn.com/tfs/xxxxxxxxxx001.png"); List<Map<String, String>> mainImages = new ArrayList<>(); mainImages.add(mainImage); Map<String, Object> mainData = new HashMap<>(); mainData.put("mainTitle", "帖子主题"); mainData.put("mainContent", "帖子内容"); mainData.put("mainImages", mainImages); return mainData; } }
获取异步检测结果
import com.alibaba.fastjson.JSON; import com.aliyun.green20220302.Client; import com.aliyun.green20220302.models.*; import com.aliyun.teaopenapi.models.Config; import com.aliyun.green20220302.models.DescribeMultimodalModerationResultRequest; import com.aliyun.green20220302.models.DescribeMultimodalModerationResultResponse; import com.aliyun.green20220302.models.DescribeMultimodalModerationResultResponseBody; public class DescribeMultimodalAsyncModerationResult { 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("推荐从环境变量获取AccessKey ID"); config.setAccessKeySecret("推荐从环境变量获取AccessKey Secret"); //接入区域和地址请根据实际情况修改 config.setRegionId("cn-shanghai"); config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com"); //连接时超时时间,单位毫秒(ms)。 config.setReadTimeout(6000); //读取时超时时间,单位毫秒(ms)。 config.setConnectTimeout(3000); Client client = new Client(config); DescribeMultimodalModerationResultRequest describeMultimodalModerationResultRequest = new DescribeMultimodalModerationResultRequest(); // 提交任务时返回的reqId describeMultimodalModerationResultRequest.setReqId("1C0A0C10-950D-544D-AE2E-2033E432E8D1"); try { DescribeMultimodalModerationResultResponse response = client.describeMultimodalModerationResult(describeMultimodalModerationResultRequest); if (response.getStatusCode() == 200) { DescribeMultimodalModerationResultResponseBody result = response.getBody(); System.out.println("requestId=" + result.getRequestId()); System.out.println("code=" + result.getCode()); if (200 == result.getCode()) { DescribeMultimodalModerationResultResponseBody.DescribeMultimodalModerationResultResponseBodyData data = result.getData(); System.out.println("data = " + JSON.toJSONString(data)); } else { System.out.println("response not success. code:" + result.getCode()); } } else { System.out.println("response not success. status:" + response.getStatusCode()); } } catch (Exception e) { e.printStackTrace(); } } }
对OSS图片进行检测
使用场景
如果您需要审核的图片文件已经存储在阿里云对象存储OSS中,你可授权创建服务角色,允许内容安全服务访问对象存储OSS。图文混合模态审核增强版服务会通过服务角色获取到对象存储OSS的文件后进行审核。访问云资源访问授权页面创建服务角色。
使用阿里云账号(即主账号)访问云资源访问授权页面进行授权。
在pom.xml中添加如下依赖安装Java SDK,即可以在Maven工程中使用SDK。
<dependency> <groupId>com.aliyun</groupId> <artifactId>green20220302</artifactId> <version>2.21.1</version> </dependency>
接入Java SDK。
提交异步图文混合检测任务
import com.alibaba.fastjson.JSON;
import com.aliyun.green20220302.Client;
import com.aliyun.green20220302.models.DescribeMultimodalModerationResultRequest;
import com.aliyun.green20220302.models.DescribeMultimodalModerationResultResponse;
import com.aliyun.green20220302.models.DescribeMultimodalModerationResultResponseBody;
import com.aliyun.green20220302.models.MultimodalAsyncModerationRequest;
import com.aliyun.green20220302.models.MultimodalAsyncModerationResponse;
import com.aliyun.teaopenapi.models.Config;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MultimodalAsyncModeration {
public static void main(String[] args) throws Exception {
String accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID";
String accessKeySecret = "建议从环境变量中获取RAM用户AccessKey Secret";
String endpoint = "green-cip.cn-shanghai.aliyuncs.com";
// 1. 创建client
Client client = createClient(accessKeyId, accessKeySecret, endpoint);
// 2. 请求检测
String reqId = multimodalAsyncModeration(client);
System.out.println("reqId=" + reqId);
}
/**
* 创建请求客户端
*
* @param accessKeyId
* @param accessKeySecret
* @param endpoint
* @return
* @throws Exception
*/
public static Client createClient(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
Config config = new Config();
config.setAccessKeyId(accessKeyId);
config.setAccessKeySecret(accessKeySecret);
// 设置http代理。
//config.setHttpProxy("http://10.10.xx.xx:xxxx");
// 设置https代理。
//config.setHttpsProxy("https://10.10.xx.xx:xxxx");
config.setEndpoint(endpoint);
return new Client(config);
}
private static String multimodalAsyncModeration(Client client) throws Exception {
// 检测参数构造。
Map<String, Object> serviceParameters = new HashMap<>();
// 帖子主体内容
serviceParameters.put("mainData", createMainData());
// 帖子评论列表
serviceParameters.put("commentDatas", createCommentDatas());
MultimodalAsyncModerationRequest request = new MultimodalAsyncModerationRequest();
request.setService("post_text_image_detection");
request.setServiceParameters(JSON.toJSONString(serviceParameters));
MultimodalAsyncModerationResponse response = client.multimodalAsyncModeration(request);
return response.getBody().getData().getReqId();
}
// 一级评论列表
private static List<Map<String, Object>> createCommentDatas() {
Map<String, String> image = new HashMap<>();
// 待检测文件所在bucket的区域。 示例:cn-shanghai
image.put("ossRegionId", "cn-shanghai");
// 待检测文件所在bucket名称。示例:bucket001
image.put("ossBucketName", "bucket001");
// 待检测文件。 示例:image/001.jpg
image.put("ossObjectName", "image/001.jpg");
// 一级评论图片
List<Map<String, String>> images = new ArrayList<>();
images.add(image);
Map<String, Object> commentData = new HashMap<>();
// 一级评论文本
commentData.put("content", "一级评论文本");
// 一级评论图片
commentData.put("images", images);
// 二级评论列表
commentData.put("commentDatas", createCommentDatas2());
List<Map<String, Object>> commentDatas = new ArrayList<>();
commentDatas.add(commentData);
return commentDatas;
}
// 一级评论列表
private static List<Map<String, Object>> createCommentDatas2() {
Map<String, String> image = new HashMap<>();
// 待检测文件所在bucket的区域。 示例:cn-shanghai
image.put("ossRegionId", "cn-shanghai");
// 待检测文件所在bucket名称。示例:bucket001
image.put("ossBucketName", "bucket001");
// 待检测文件。 示例:image/001.jpg
image.put("ossObjectName", "image/001.jpg");
// 二级评论图片
List<Map<String, String>> images = new ArrayList<>();
images.add(image);
Map<String, Object> commentData = new HashMap<>();
// 二级评论文本
commentData.put("content", "二级评论文本");
// 二级评论图片
commentData.put("images", images);
List<Map<String, Object>> commentDatas = new ArrayList<>();
commentDatas.add(commentData);
return commentDatas;
}
private static Map<String, Object> createMainData() {
Map<String, String> mainImage = new HashMap<>();
// 待检测文件所在bucket的区域。 示例:cn-shanghai
mainImage.put("ossRegionId", "cn-shanghai");
// 待检测文件所在bucket名称。示例:bucket001
mainImage.put("ossBucketName", "bucket001");
// 待检测文件。 示例:image/001.jpg
mainImage.put("ossObjectName", "image/001.jpg");
List<Map<String, String>> mainImages = new ArrayList<>();
mainImages.add(mainImage);
Map<String, Object> mainData = new HashMap<>();
mainData.put("mainTitle", "帖子主题");
mainData.put("mainContent", "帖子内容");
mainData.put("mainImages", mainImages);
return mainData;
}
}
获取异步检测结果
import com.alibaba.fastjson.JSON;
import com.aliyun.green20220302.Client;
import com.aliyun.green20220302.models.*;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.green20220302.models.DescribeMultimodalModerationResultRequest;
import com.aliyun.green20220302.models.DescribeMultimodalModerationResultResponse;
import com.aliyun.green20220302.models.DescribeMultimodalModerationResultResponseBody;
public class DescribeMultimodalAsyncModerationResult {
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("推荐从环境变量获取AccessKey ID");
config.setAccessKeySecret("推荐从环境变量获取AccessKey Secret");
//接入区域和地址请根据实际情况修改
config.setRegionId("cn-shanghai");
config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
//连接时超时时间,单位毫秒(ms)。
config.setReadTimeout(6000);
//读取时超时时间,单位毫秒(ms)。
config.setConnectTimeout(3000);
Client client = new Client(config);
DescribeMultimodalModerationResultRequest describeMultimodalModerationResultRequest = new DescribeMultimodalModerationResultRequest();
// 提交任务时返回的reqId
describeMultimodalModerationResultRequest.setReqId("1C0A0C10-950D-544D-AE2E-2033E432E8D1");
try {
DescribeMultimodalModerationResultResponse response = client.describeMultimodalModerationResult(describeMultimodalModerationResultRequest);
if (response.getStatusCode() == 200) {
DescribeMultimodalModerationResultResponseBody result = response.getBody();
System.out.println("requestId=" + result.getRequestId());
System.out.println("code=" + result.getCode());
if (200 == result.getCode()) {
DescribeMultimodalModerationResultResponseBody.DescribeMultimodalModerationResultResponseBodyData data = result.getData();
System.out.println("data = " + JSON.toJSONString(data));
} else {
System.out.println("response not success. code:" + result.getCode());
}
} else {
System.out.println("response not success. status:" + response.getStatusCode());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Python SDK
支持Python 3.6及以上版本。
原始代码,请参见Python SDK源码。
支持以下两种类型的图片检测。
对公网可访问图片进行检测
使用场景
当需要审核的图片可通过公网链接访问时,图文混合模态审核增强版服务可通过图片URL获取文件后进行审核。
执行如下命令引入相关依赖。
pip install alibabacloud_green20220302==2.22.0
接入Python SDK。
提交异步图文混合检测任务
# coding=utf-8 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=3000, # 读取时超时时间,单位毫秒(ms)。 read_timeout=6000, # 接入区域和地址请根据实际情况修改。 region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) clt = Client(Config) # 如果是文本审核,请将url参数换为content serviceParameters = { "dataId": "Multimodal0424***", "mainData": { "mainTitle": "主标题", "mainContent": "主文本内容", "mainImages": [ { "imageUrl": "https://aliyun.com/240308/test001.jpg" }, { "imageUrl": "https://aliyun.com/240308/test002.jpg" } ], "mainPostTime": "2025-06-18 20:20:20" }, "commentDatas": [ { "images": [ { "imageUrl": "https://aliyun.com/240308/test003.jpg" }, { "imageUrl": "https://aliyun.com/240308/test004.jpg" } ], "content": "评论内容1", "postTime": "", "commentDatas": [ { "content": "评论内容1回复1", "images": [ { "imageUrl": "https://aliyun.com/240308/test005.jpg" } ], "postTime": "" }, { "content": "评论内容1回复2", "images": [ { "imageUrl": "https://aliyun.com/240308/test006.jpg" } ], "postTime": "" } ] }, { "content": "评论内容2", "images": [], "postTime": "", "commentDatas": [] }, { "content": "评论内容3", "images": [], "postTime": "", "commentDatas": [] } ] } MultimodalAsyncModerationRequest = models.MultimodalAsyncModerationRequest( service='post_text_image_detection', service_parameters=json.dumps(serviceParameters) ) try: response = clt.multimodal_async_moderation(MultimodalAsyncModerationRequest) 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)
获取异步检测结果
from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config 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=3000, # 读取时超时时间,单位毫秒(ms)。 read_timeout=6000, # 接入区域和地址请根据实际情况修改。 region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) clt = Client(Config) DescribeMultimodalModerationResultRequest = models.DescribeMultimodalModerationResultRequest( req_id='99BE120A-8123-17AB-8F8D-51993761XXXX' ) try: response = clt.describe_multimodal_moderation_result(DescribeMultimodalModerationResultRequest) 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)
使用OSS图片进行检测
使用场景
如果您需要审核的图片文件已经存储在阿里云对象存储OSS中,你可授权创建服务角色,允许内容安全服务访问对象存储OSS。图文混合模态审核增强版服务会通过服务角色获取到对象存储OSS的文件后进行审核。访问云资源访问授权页面创建服务角色。
使用阿里云账号(即主账号)访问云资源访问授权页面进行授权。
执行如下命令安装Python SDK。
pip install alibabacloud_green20220302==2.22.0
接入Python SDK。
提交异步图文混合检测任务
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=3000, # 读取时超时时间,单位毫秒(ms)。 read_timeout=6000, # 接入区域和地址请根据实际情况修改。 region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) clt = Client(Config) # 如果是文本审核,请将url参数换为content serviceParameters = { "dataId": "Multimodal0424***", "mainData": { "mainTitle": "主标题", "mainContent": "主文本内容", "mainImages": [ { "ossRegionId": "cn-shanghai", "ossBucketName": "cip-test-01", "ossObjectName": "cf02.jpg" }, { "ossRegionId": "cn-shanghai", "ossBucketName": "cip-test-01", "ossObjectName": "cf02.jpg" } ], "mainPostTime": "2025-06-18 20:20:20" }, "commentDatas": [ { "images": [ { "ossRegionId": "cn-shanghai", "ossBucketName": "cip-test-01", "ossObjectName": "cf02.jpg" }, { "ossRegionId": "cn-shanghai", "ossBucketName": "cip-test-01", "ossObjectName": "cf02.jpg" } ], "content": "评论内容1", "postTime": "", "commentDatas": [ { "content": "评论内容1回复1", "images": [ { "ossRegionId": "cn-shanghai", "ossBucketName": "cip-test-01", "ossObjectName": "cf02.jpg" } ], "postTime": "" }, { "content": "评论内容1回复2", "images": [ { "ossRegionId": "cn-shanghai", "ossBucketName": "cip-test-01", "ossObjectName": "cf02.jpg" } ], "postTime": "" } ] }, { "content": "评论内容2", "images": [], "postTime": "", "commentDatas": [] }, { "content": "评论内容3", "images": [], "postTime": "", "commentDatas": [] }, { "content": "评论内容4", "images": [], "postTime": "", "commentDatas": [] } ] } MultimodalAsyncModerationRequest = models.MultimodalAsyncModerationRequest( service='post_text_image_detection', service_parameters=json.dumps(serviceParameters) ) try: response = clt.multimodal_async_moderation(MultimodalAsyncModerationRequest) 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)
获取异步检测结果
from alibabacloud_green20220302.client import Client from alibabacloud_green20220302 import models from alibabacloud_tea_openapi.models import Config 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=3000, # 读取时超时时间,单位毫秒(ms)。 read_timeout=6000, # 接入区域和地址请根据实际情况修改。 region_id='cn-shanghai', endpoint='green-cip.cn-shanghai.aliyuncs.com' ) clt = Client(Config) DescribeMultimodalModerationResultRequest = models.DescribeMultimodalModerationResultRequest( req_id='99BE120A-8123-17AB-8F8D-51993761XXXX' ) try: response = clt.describe_multimodal_moderation_result(DescribeMultimodalModerationResultRequest) 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)
PHP SDK
支持PHP 5.6及以上版本。
原始代码,请参见PHP SDK源码。
支持以下两种类型的图片检测。
对公网可访问图片进行检测
使用场景
当需要审核的图片可通过公网链接访问时,图文混合模态审核增强版服务可通过图片URL获取文件后进行审核。
安装PHP SDK。
执行如下命令引入相关依赖。
composer require alibabacloud/green-20220302 2.22.0
接入PHP SDK。
提交异步图文混合检测任务
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\MultimodalAsyncModerationRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID', "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret', // 设置HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 设置HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => "green-cip.cn-shanghai.aliyuncs.com", "regionId" => "cn-shanghai" ]); // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 $client = new Green($config); $request = new MultimodalAsyncModerationRequest(); $request->service = "post_text_image_detection"; // 构造主数据 $mainData = [ 'mainTitle' => '主标题', 'mainContent' => '主文本内容', 'mainImages' => [ ['imageUrl' => 'https://aliyun.com/240308/test001.jpg'], ['imageUrl' => 'https://aliyun.com/240308/test002.jpg'] ], 'mainPostTime' => '2025-06-18 20:20:20' ]; // 构造评论数据 $commentDatas = [ [ 'images' => [ ['imageUrl' => 'https://aliyun.com/240308/test003.jpg'], ['imageUrl' => 'https://aliyun.com/240308/test004.jpg'] ], 'content' => '评论内容1', 'postTime' => '', 'commentDatas' => [ [ 'content' => '评论内容1回复1', 'images' => [ ['imageUrl' => 'https://aliyun.com/240308/test005.jpg'] ], 'postTime' => '' ], [ 'content' => '评论内容1回复2', 'images' => [ ['imageUrl' => 'https://aliyun.com/240308/test006.jpg'] ], 'postTime' => '' ] ] ], [ 'content' => '评论内容2', 'images' => [], 'postTime' => '', 'commentDatas' => [] ], // 其他评论数据... [ 'content' => '评论内容7', 'images' => [], 'postTime' => '', 'commentDatas' => [] ] ]; $serviceParameters = [ 'dataId' => uniqid(), 'mainData' => $mainData, 'commentDatas' => $commentDatas ]; $request->serviceParameters = json_encode($serviceParameters, JSON_UNESCAPED_UNICODE); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->MultimodalAsyncModerationWithOptions($request, $runtime); print_r($response->body); if (200 != $response->statusCode) { print_r("response not success. code:" . $response->statusCode); return; } $body = $response->body; print_r("requestId = " . $body->requestId . "\n"); print_r("code = " . $body->code . "\n"); if (200 != $body->code) { print_r("request not success. code:" . $body->code); } } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
获取异步检测结果
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\DescribeMultimodalModerationResultRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID', "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret', // 设置HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 设置HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => "green-cip.cn-shanghai.aliyuncs.com", "regionId" => "cn-shanghai" ]); // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 $client = new Green($config); $request = new DescribeMultimodalModerationResultRequest(); $request->reqId = "31248665-B47E-528E-886F-EAF73910XXXX"; $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->DescribeMultimodalModerationResultWithOptions($request, $runtime); print_r($response->body); if (200 != $response->statusCode) { print_r("response not success. code:" . $response->statusCode); return; } $body = $response->body; print_r("requestId = " . $body->requestId . "\n"); print_r("code = " . $body->code . "\n"); if (200 != $body->code) { print_r("request not success. code:" . $body->code); } } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
对OSS图片进行检测
使用场景
如果您需要审核的图片文件已经存储在阿里云对象存储OSS中,你可授权创建服务角色,允许内容安全服务访问对象存储OSS。图文混合模态审核增强版服务会通过服务角色获取到对象存储OSS的文件后进行审核。访问云资源访问授权页面创建服务角色。
使用阿里云账号(即主账号)访问云资源访问授权页面进行授权。
安装PHP SDK。
composer require alibabacloud/green-20220302 2.22.0
接入PHP SDK。
提交异步图文混合检测任务
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\MultimodalAsyncModerationRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID', "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret', // 设置HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 设置HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => "green-cip.cn-shanghai.aliyuncs.com", "regionId" => "cn-shanghai" ]); // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 $client = new Green($config); $request = new MultimodalAsyncModerationRequest(); $request->service = "post_text_image_detection"; $mainData = [ 'mainTitle' => '主标题', 'mainContent' => '主文本内容', 'mainImages' => [ [ 'ossRegionId' => 'cn-shanghai', 'ossBucketName' => 'cip-test', 'ossObjectName' => '123.jpg' ], [ 'ossRegionId' => 'cn-shanghai', 'ossBucketName' => 'cip-test', 'ossObjectName' => '123.jpg' ] ], 'mainPostTime' => '2025-06-18 20:20:20' ]; $commentDatas = [ [ 'images' => [ [ 'ossRegionId' => 'cn-shanghai', 'ossBucketName' => 'cip-test', 'ossObjectName' => '123.jpg' ], [ 'ossRegionId' => 'cn-shanghai', 'ossBucketName' => 'cip-test', 'ossObjectName' => '123.jpg' ] ], 'content' => '评论内容1', 'postTime' => '', 'commentDatas' => [ [ 'images' => [ [ 'ossRegionId' => 'cn-shanghai', 'ossBucketName' => 'cip-test', 'ossObjectName' => '123.jpg' ] ], 'content' => '评论内容1回复1', 'postTime' => '', 'commentDatas' => [] ], [ 'images' => [ [ 'ossRegionId' => 'cn-shanghai', 'ossBucketName' => 'cip-test', 'ossObjectName' => '123.jpg' ] ], 'content' => '评论内容1回复2', 'postTime' => '', 'commentDatas' => [] ] ] ], [ 'images' => [], 'content' => '评论内容2', 'postTime' => '', 'commentDatas' => [] ] ]; $serviceParameters = [ 'dataId' => uniqid(), 'mainData' => $mainData, 'commentDatas' => $commentDatas ]; $request->serviceParameters = json_encode($serviceParameters, JSON_UNESCAPED_UNICODE); $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->MultimodalAsyncModerationWithOptions($request, $runtime); print_r($response->body); if (200 != $response->statusCode) { print_r("response not success. code:" . $response->statusCode); return; } $body = $response->body; print_r("requestId = " . $body->requestId . "\n"); print_r("code = " . $body->code . "\n"); if (200 != $body->code) { print_r("request not success. code:" . $body->code); } } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
获取异步检测结果
<?php require('vendor/autoload.php'); use AlibabaCloud\SDK\Green\V20220302\Models\DescribeMultimodalModerationResultRequest; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; use Darabonba\OpenApi\Models\Config; use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions; use AlibabaCloud\SDK\Green\V20220302\Green; $config = new Config([ /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID', "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret', // 设置HTTP代理。 // "httpProxy" => "http://10.10.xx.xx:xxxx", // 设置HTTPS代理。 // "httpsProxy" => "https://10.10.xx.xx:xxxx", "endpoint" => "green-cip.cn-shanghai.aliyuncs.com", "regionId" => "cn-shanghai" ]); // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 $client = new Green($config); $request = new DescribeMultimodalModerationResultRequest(); $request->reqId = "31248665-B47E-528E-886F-EAF73910XXXX"; $runtime = new RuntimeOptions(); $runtime->readTimeout = 6000; $runtime->connectTimeout = 3000; try { $response = $client->DescribeMultimodalModerationResultWithOptions($request, $runtime); print_r($response->body); if (200 != $response->statusCode) { print_r("response not success. code:" . $response->statusCode); return; } $body = $response->body; print_r("requestId = " . $body->requestId . "\n"); print_r("code = " . $body->code . "\n"); if (200 != $body->code) { print_r("request not success. code:" . $body->code); } } catch (TeaUnableRetryError $e) { var_dump($e->getMessage()); var_dump($e->getErrorInfo()); var_dump($e->getLastException()); var_dump($e->getLastRequest()); }
Go SDK
原始代码,请参考Go SDK源码。
支持以下两种类型的图片检测。
对公网可访问图片进行检测
使用场景
当需要审核的图片可通过公网链接访问时,图文混合模态审核增强版服务可通过图片URL获取文件后进行审核。
安装Go SDK。
go get github.com/alibabacloud-go/green-20220302/v2
接入Go SDK。
提交异步图文混合检测任务
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green "github.com/alibabacloud-go/green-20220302/v2/client" "github.com/alibabacloud-go/tea/tea" ) func main() { config := &openapi.Config{ // 您的AccessKey ID AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), // 您的AccessKey Secret AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 访问的 Endpoint Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } client, _err := green.NewClient(config) if _err != nil { fmt.Println(_err) } type Image struct { ImageUrl string `json:"imageUrl"` } type CommentData struct { Images []Image `json:"images"` Content string `json:"content"` PostTime string `json:"postTime"` CommentDatas []*CommentData `json:"commentDatas"` } type MainData struct { MainTitle string `json:"mainTitle"` MainContent string `json:"mainContent"` MainImages []Image `json:"mainImages"` MainPostTime string `json:"mainPostTime"` } type RequestBody struct { DataId string `json:"dataId"` MainData MainData `json:"mainData"` CommentDatas []CommentData `json:"commentDatas"` } payload := RequestBody{ DataId: "123456", MainData: MainData{ MainTitle: "主标题", MainContent: "主文本内容", MainImages: []Image{ {ImageUrl: "https://aliyun.com/240308/test001.jpg"}, {ImageUrl: "https://aliyun.com/240308/test002.jpg"}, }, MainPostTime: "2025-06-18 20:20:20", }, CommentDatas: []CommentData{ { Images: []Image{ {ImageUrl: "https://aliyun.com/240308/test003.jpg"}, {ImageUrl: "https://aliyun.com/240308/test004.jpg"}, }, Content: "评论内容1", PostTime: "", CommentDatas: []*CommentData{ { Content: "评论内容1回复1", Images: []Image{ {ImageUrl: "https://aliyun.com/240308/test005.jpg"}, }, PostTime: "", }, { Content: "评论内容1回复2", Images: []Image{ {ImageUrl: "https://aliyun.com/240308/test006.jpg"}, }, PostTime: "", }, }, }, { Content: "评论内容2", Images: []Image{}, PostTime: "", }, // 其他评论项... { Content: "评论内容7", Images: []Image{}, PostTime: "", }, }, } serviceParameters, err := json.Marshal(payload) if err != nil { fmt.Println("JSON 序列化失败:", err) return } multimodalAsyncModerationRequest := &green.MultimodalAsyncModerationRequest{ Service: tea.String("post_text_image_detection"), ServiceParameters: tea.String(string(serviceParameters)), } result, err := client.MultimodalAsyncModeration(multimodalAsyncModerationRequest) if err != nil { fmt.Print(err.Error()) } if result != nil { statusCode := tea.IntValue(tea.ToInt(result.StatusCode)) body := result.Body if body != nil { fmt.Println("response body:" + body.String()) }else { fmt.Print("response not success. status:" + tea.ToString(statusCode)) } } }
获取异步检测结果
package main import ( "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green "github.com/alibabacloud-go/green-20220302/v2/client" "github.com/alibabacloud-go/tea/tea" ) func main() { config := &openapi.Config{ // 您的AccessKey ID AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), // 您的AccessKey Secret AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 访问的 Endpoint Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } client, _err := green.NewClient(config) if _err != nil { fmt.Println(_err) } describeMultimodalModerationResultRequest := &green.DescribeMultimodalModerationResultRequest{ ReqId: tea.String("AB7384F1-D738-5B2D-B89A-334669B7XXXX"), } result, err := client.DescribeMultimodalModerationResult(describeMultimodalModerationResultRequest) if err != nil { fmt.Print(err.Error()) } if result != nil { statusCode := tea.IntValue(tea.ToInt(result.StatusCode)) body := result.Body if body != nil { fmt.Println("response body:" + body.String()) }else { fmt.Print("response not success. status:" + tea.ToString(statusCode)) } } }
对OSS图片进行检测
使用场景
如果您需要审核的图片文件已经存储在阿里云对象存储OSS中,你可授权创建服务角色,允许内容安全服务访问对象存储OSS。图文混合模态审核增强版服务会通过服务角色获取到对象存储OSS的文件后进行审核。访问云资源访问授权页面创建服务角色。
使用阿里云账号(即主账号)访问云资源访问授权页面进行授权。
执行如下命令安装Go SDK。
go get github.com/alibabacloud-go/green-20220302/v2
接入Go SDK。
提交异步图文混合检测任务
package main import ( "encoding/json" "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green "github.com/alibabacloud-go/green-20220302/v2/client" "github.com/alibabacloud-go/tea/tea" ) func main() { config := &openapi.Config{ // 您的AccessKey ID AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), // 您的AccessKey Secret AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 访问的 Endpoint Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } client, _err := green.NewClient(config) if _err != nil { fmt.Println(_err) } type Image struct { OssRegionId string `json:"ossRegionId"` OssBucketName string `json:"ossBucketName"` OssObjectName string `json:"ossObjectName"` } type CommentData struct { Images []Image `json:"images"` Content string `json:"content"` PostTime string `json:"postTime"` CommentDatas []*CommentData `json:"commentDatas"` } type MainData struct { MainTitle string `json:"mainTitle"` MainContent string `json:"mainContent"` MainImages []Image `json:"mainImages"` MainPostTime string `json:"mainPostTime"` } type RequestBody struct { DataId string `json:"dataId"` MainData MainData `json:"mainData"` CommentDatas []CommentData `json:"commentDatas"` } payload := RequestBody{ DataId: "123456", MainData: MainData{ MainTitle: "主标题", MainContent: "主文本内容", MainImages: []Image{ {OssRegionId: "cn-shanghai" ,OssBucketName:"cip-test",OssObjectName:"123.jpg"}, {OssRegionId: "cn-shanghai" ,OssBucketName:"cip-test",OssObjectName:"123.jpg"}, }, MainPostTime: "2025-06-18 20:20:20", }, CommentDatas: []CommentData{ { Images: []Image{ {OssRegionId: "cn-shanghai" ,OssBucketName:"cip-test",OssObjectName:"123.jpg"}, }, Content: "评论内容1", PostTime: "", CommentDatas: []*CommentData{ { Content: "评论内容1回复1", Images: []Image{ {OssRegionId: "cn-shanghai" ,OssBucketName:"cip-test",OssObjectName:"123.jpg"}, }, PostTime: "", }, { Content: "评论内容1回复2", Images: []Image{ {OssRegionId: "cn-shanghai" ,OssBucketName:"cip-test",OssObjectName:"123.jpg"}, }, PostTime: "", }, }, }, { Content: "评论内容2", Images: []Image{}, PostTime: "", }, // 其他评论项... { Content: "评论内容3", Images: []Image{}, PostTime: "", }, }, } serviceParameters, err := json.Marshal(payload) if err != nil { fmt.Println("JSON 序列化失败:", err) return } multimodalAsyncModerationRequest := &green.MultimodalAsyncModerationRequest{ Service: tea.String("post_text_image_detection"), ServiceParameters: tea.String(string(serviceParameters)), } result, err := client.MultimodalAsyncModeration(multimodalAsyncModerationRequest) if err != nil { fmt.Print(err.Error()) } if result != nil { statusCode := tea.IntValue(tea.ToInt(result.StatusCode)) body := result.Body if body != nil { fmt.Println("response body:" + body.String()) }else { fmt.Print("response not success. status:" + tea.ToString(statusCode)) } } }
获取异步检测结果
package main import ( "fmt" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green "github.com/alibabacloud-go/green-20220302/v2/client" "github.com/alibabacloud-go/tea/tea" ) func main() { config := &openapi.Config{ // 您的AccessKey ID AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"), // 您的AccessKey Secret AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey Secret"), // 访问的 Endpoint Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"), /** * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。 * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。 */ // 设置HTTP代理。 // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"), // 设置HTTPS代理。 // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"), ConnectTimeout: tea.Int(3000), ReadTimeout: tea.Int(6000), } client, _err := green.NewClient(config) if _err != nil { fmt.Println(_err) } describeMultimodalModerationResultRequest := &green.DescribeMultimodalModerationResultRequest{ ReqId: tea.String("AB7384F1-D738-5B2D-B89A-334669B7XXXX"), } result, err := client.DescribeMultimodalModerationResult(describeMultimodalModerationResultRequest) if err != nil { fmt.Print(err.Error()) } if result != nil { statusCode := tea.IntValue(tea.ToInt(result.StatusCode)) body := result.Body if body != nil { fmt.Println("response body:" + body.String()) }else { fmt.Print("response not success. status:" + tea.ToString(statusCode)) } } }
Node.js SDK
原始代码,请参见Node.js SDK源码。
支持以下两种类型的图片检测。
对公网可访问图片进行检测
使用场景
当需要审核的图片可通过公网链接访问时,图文混合模态审核增强版服务可通过图片URL获取文件后进行审核。
安装Node.js SDK。
执行如下命令引入相关依赖。
npm install @alicloud/green20220302@2.22.0
接入Node.js SDK。
提交异步图文混合检测任务
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: '建议从环境变量中获取RAM用户AccessKey ID', // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 accessKeySecret: '建议从环境变量中获取RAM用户AccessKey Secret', endpoint: `green-cip.cn-shanghai.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // 构造请求对象 const MultimodalAsyncModerationRequest = new Green20220302.MultimodalAsyncModerationRequest({ "service": "post_text_image_detection", "serviceParameters": JSON.stringify({"dataId":"Multimodal0424***","mainData":{"mainTitle":"主标题","mainContent":"主文本内容","mainImages":[{"imageUrl":"https://aliyun.com/240308/test001.jpg"},{"imageUrl":"https://aliyun.com/240308/test002.jpg"}],"mainPostTime":"2025-06-18 20:20:20"},"commentDatas":[{"images":[{"imageUrl":"https://aliyun.com/240308/test003.jpg"},{"imageUrl":"https://aliyun.com/240308/test004.jpg"}],"content":"评论内容1","postTime":"","commentDatas":[{"content":"评论内容1回复1","images":[{"imageUrl":"https://aliyun.com/240308/test005.jpg"}],"postTime":""},{"content":"评论内容1回复2","images":[{"imageUrl":"https://aliyun.com/240308/test006.jpg"}],"postTime":""}]},{"content":"评论内容2","images":[],"postTime":"","commentDatas":[]},{"content":"评论内容3","images":[],"postTime":"","commentDatas":[]},{"content":"评论内容4","images":[],"postTime":"","commentDatas":[]},{"content":"评论内容5","images":[],"postTime":"","commentDatas":[]},{"content":"评论内容6","images":[],"postTime":"","commentDatas":[]},{"content":"评论内容7","images":[],"postTime":"","commentDatas":[]}]}) }); // 创建运行时配置对象 const runtime = new Util.RuntimeOptions(); try { // 发起请求并获取响应 const response = await client.multimodalAsyncModerationWithOptions(MultimodalAsyncModerationRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message console.log('Error occurred:', error.message); } } } Client.main();
获取异步检测结果
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: '建议从环境变量中获取RAM用户AccessKey ID', // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 accessKeySecret: '建议从环境变量中获取RAM用户AccessKey Secret', endpoint: `green-cip.cn-shanghai.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // 构造请求对象 const DescribeMultimodalModerationResultRequest = new Green20220302.DescribeMultimodalModerationResultRequest({ "reqId": "7A0095D2-865E-5FDC-B7B3-EFB5EA4CXXXX" }); // 创建运行时配置对象 const runtime = new Util.RuntimeOptions(); try { // 发起请求并获取响应 const response = await client.describeMultimodalModerationResultWithOptions(DescribeMultimodalModerationResultRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message console.log('Error occurred:', error.message); } } } Client.main();
对OSS图片进行检测
使用场景
如果您需要审核的图片文件已经存储在阿里云对象存储OSS中,你可授权创建服务角色,允许内容安全服务访问对象存储OSS。图文混合模态审核增强版服务会通过服务角色获取到对象存储OSS的文件后进行审核。访问云资源访问授权页面创建服务角色。
使用阿里云账号(即主账号)访问云资源访问授权页面进行授权。
安装Node.js SDK。
npm install @alicloud/green20220302@2.22.0
接入Node.js SDK。
提交异步图文混合检测任务
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: '建议从环境变量中获取RAM用户AccessKey ID', // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 accessKeySecret: '建议从环境变量中获取RAM用户AccessKey Secret', endpoint: `green-cip.cn-shanghai.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // 构造请求对象 const MultimodalAsyncModerationRequest = new Green20220302.MultimodalAsyncModerationRequest({"dataId":"Multimodal0424***","mainData":{"mainTitle":"主标题","mainContent":"主文本内容","mainImages":[{"ossRegionId":"cn-shanghai","ossBucketName":"cip-test","ossObjectName":"123.jpg"},{"ossRegionId":"cn-shanghai","ossBucketName":"cip-test","ossObjectName":"123.jpg"}],"mainPostTime":"2025-06-18 20:20:20"},"commentDatas":[{"images":[{"ossRegionId":"cn-shanghai","ossBucketName":"cip-test","ossObjectName":"123.jpg"},{"ossRegionId":"cn-shanghai","ossBucketName":"cip-test","ossObjectName":"123.jpg"}],"content":"评论内容1","postTime":"","commentDatas":[{"images":[{"ossRegionId":"cn-shanghai","ossBucketName":"cip-test","ossObjectName":"123.jpg"}],"content":"评论内容1回复1","postTime":"","commentDatas":[]},{"images":[{"ossRegionId":"cn-shanghai","ossBucketName":"cip-test","ossObjectName":"123.jpg"}],"content":"评论内容1回复2","postTime":"","commentDatas":[]}]},{"images":[],"content":"评论内容2","postTime":"","commentDatas":[]},{"images":[],"content":"评论内容3","postTime":"","commentDatas":[]},{"images":[],"content":"评论内容4","postTime":"","commentDatas":[]},{"images":[],"content":"评论内容5","postTime":"","commentDatas":[]},{"images":[],"content":"评论内容6","postTime":"","commentDatas":[]},{"images":[],"content":"评论内容7","postTime":"","commentDatas":[]}]}); // 创建运行时配置对象 const runtime = new Util.RuntimeOptions(); try { // 发起请求并获取响应 const response = await client.multimodalAsyncModerationWithOptions(MultimodalAsyncModerationRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message console.log('Error occurred:', error.message); } } } Client.main();
获取异步检测结果
const Green20220302 = require('@alicloud/green20220302'); const OpenApi = require('@alicloud/openapi-client'); const Util = require('@alicloud/tea-util'); // 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 class Client { static createClient() { const config = new OpenApi.Config({ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 accessKeyId: '建议从环境变量中获取RAM用户AccessKey ID', // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 accessKeySecret: '建议从环境变量中获取RAM用户AccessKey Secret', endpoint: `green-cip.cn-shanghai.aliyuncs.com`, }); return new Green20220302.default(config); } static async main() { const client = Client.createClient(); // 构造请求对象 const DescribeMultimodalModerationResultRequest = new Green20220302.DescribeMultimodalModerationResultRequest({ "reqId": "7A0095D2-865E-5FDC-B7B3-EFB5EA4CXXXX" }); // 创建运行时配置对象 const runtime = new Util.RuntimeOptions(); try { // 发起请求并获取响应 const response = await client.describeMultimodalModerationResultWithOptions(DescribeMultimodalModerationResultRequest, runtime); console.log(JSON.stringify(response.body)); } catch (error) { // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message console.log('Error occurred:', error.message); } } } Client.main();
C# SDK
原始代码,请参见C# SDK源码。
支持以下两种类型的图片检测。
对公网可访问图片进行检测
使用场景
当需要审核的图片可通过公网链接访问时,图文混合模态审核增强版服务可通过图片URL获取文件后进行审核。
安装C# SDK。
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.22.0
接入C# SDK。
提交异步图文混合检测任务
// This file is auto-generated, don't edit it. Thanks. using Newtonsoft.Json; namespace AlibabaCloud.SDK.Green20220302 { public class MultimodalAsyncModerationAutoRoute { public class ImageData { public string imageUrl { get; set; } } public class CommentData { public List<ImageData> images { get; set; } public string content { get; set; } public string postTime { get; set; } public List<CommentData> commentDatas { get; set; } = new List<CommentData>(); } public class MainData { public string mainTitle { get; set; } public string mainContent { get; set; } public List<ImageData> mainImages { get; set; } public string mainPostTime { get; set; } } public class ServiceParameters { public string dataId { get; set; } public MainData mainData { get; set; } public List<CommentData> commentDatas { get; set; } } public static void Main(string[] args) { /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ String accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID"; String accessKeySecret = "建议从环境变量中获取RAM用户AccessKey Secret"; // 接入区域和地址请根据实际情况修改 String endpoint = "green-cip.cn-shanghai.aliyuncs.com"; //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 Client client = createClient(accessKeyId, accessKeySecret, endpoint); // 运行时参数设置,仅对使用了该运行时参数实例的请求有效 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtimeOptions = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); Models.MultimodalAsyncModerationRequest multimodalAsyncModerationRequest = new Models.MultimodalAsyncModerationRequest(); multimodalAsyncModerationRequest.Service = "post_text_image_detection"; // 构造请求参数 var serviceParameters = new ServiceParameters { dataId = "Multimodal0424***", mainData = new MainData { mainTitle = "主标题", mainContent = "主文本内容", mainImages = new List<ImageData> { new ImageData { imageUrl = "https://aliyun.com/240308/test001.jpg" }, new ImageData { imageUrl = "https://aliyun.com/240308/test002.jpg" } }, mainPostTime = "2025-06-18 20:20:20" }, commentDatas = new List<CommentData> { new CommentData { images = new List<ImageData> { new ImageData { imageUrl = "https://aliyun.com/240308/test003.jpg" }, new ImageData { imageUrl = "https://aliyun.com/240308/test004.jpg" } }, content = "评论内容1", postTime = "", commentDatas = new List<CommentData> { new CommentData { content = "评论内容1回复1", images = new List<ImageData> { new ImageData { imageUrl = "https://aliyun.com/240308/test005.jpg" } }, postTime = "" }, new CommentData { content = "评论内容1回复2", images = new List<ImageData> { new ImageData { imageUrl = "https://aliyun.com/240308/test006.jpg" } }, postTime = "" } } }, new CommentData { content = "评论内容2", images = new List<ImageData>(), postTime = "" }, new CommentData { content = "评论内容3", images = new List<ImageData>(), postTime = "" }, new CommentData { content = "评论内容4", images = new List<ImageData>(), postTime = "" }, new CommentData { content = "评论内容5", images = new List<ImageData>(), postTime = "" }, new CommentData { content = "评论内容6", images = new List<ImageData>(), postTime = "" }, new CommentData { content = "评论内容7", images = new List<ImageData>(), postTime = "" } } }; multimodalAsyncModerationRequest.ServiceParameters = JsonConvert.SerializeObject(serviceParameters); try { //调用API获取检测结果。 Models.MultimodalAsyncModerationResponse response = client.MultimodalAsyncModerationWithOptions( multimodalAsyncModerationRequest, runtimeOptions ); Console.WriteLine(response.Body.RequestId); Console.WriteLine(JsonConvert.SerializeObject(response.Body)); } catch (Exception _err) { Console.WriteLine(_err); } } //创建请求客户端 public static Client createClient( String accessKeyId, String accessKeySecret, String endpoint ) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, //设置HTTP代理。 //HttpProxy = "http://10.10.xx.xx:xxxx", //设置HTTPS代理。 //HttpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999", //访问的域名。 Endpoint = endpoint, }; return new Client(config); } } }
获取异步检测结果
// This file is auto-generated, don't edit it. Thanks. using Newtonsoft.Json; namespace AlibabaCloud.SDK.Green20220302 { public class DescribeMultimodalModerationResultAutoRoute { public static void Main(string[] args) { /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ String accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID"; String accessKeySecret = "建议从环境变量中获取RAM用户AccessKey Secret"; // 接入区域和地址请根据实际情况修改 String endpoint = "green-cip.cn-shanghai.aliyuncs.com"; //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 Client client = createClient(accessKeyId, accessKeySecret, endpoint); // 运行时参数设置,仅对使用了该运行时参数实例的请求有效 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtimeOptions = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); Models.DescribeMultimodalModerationResultRequest describeMultimodalModerationResultRequest = new Models.DescribeMultimodalModerationResultRequest(); describeMultimodalModerationResultRequest.ReqId = "55BBCC2F-0382-57B3-B001-CA4DB491XXXX"; try { //调用API获取检测结果。 Models.DescribeMultimodalModerationResultResponse response = client.DescribeMultimodalModerationResultWithOptions( describeMultimodalModerationResultRequest, runtimeOptions ); Console.WriteLine(response.Body.RequestId); Console.WriteLine(JsonConvert.SerializeObject(response.Body)); } catch (Exception _err) { Console.WriteLine(_err); } } //创建请求客户端 public static Client createClient( String accessKeyId, String accessKeySecret, String endpoint ) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, //设置HTTP代理。 //HttpProxy = "http://10.10.xx.xx:xxxx", //设置HTTPS代理。 //HttpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999", //访问的域名。 Endpoint = endpoint, }; return new Client(config); } } }
对OSS图片进行检测
使用场景
如果您需要审核的图片文件已经存储在阿里云对象存储OSS中,你可授权创建服务角色,允许内容安全服务访问对象存储OSS。图文混合模态审核增强版服务会通过服务角色获取到对象存储OSS的文件后进行审核。访问云资源访问授权页面创建服务角色。
使用阿里云账号(即主账号)访问云资源访问授权页面进行授权。
安装C# SDK。
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.22.0
接入C# SDK。
提交异步图文混合检测任务
// This file is auto-generated, don't edit it. Thanks. using Newtonsoft.Json; namespace AlibabaCloud.SDK.Green20220302 { public class MultimodalAsyncModerationAutoRoute { public class ImageData { public string ossRegionId { get; set; } public string ossBucketName { get; set; } public string ossObjectName { get; set; } } public class CommentData { public List<ImageData> images { get; set; } public string content { get; set; } public string postTime { get; set; } public List<CommentData> commentDatas { get; set; } = new List<CommentData>(); } public class MainData { public string mainTitle { get; set; } public string mainContent { get; set; } public List<ImageData> mainImages { get; set; } public string mainPostTime { get; set; } } public class ServiceParameters { public string dataId { get; set; } public MainData mainData { get; set; } public List<CommentData> commentDatas { get; set; } } public static void Main(string[] args) { /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ String accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID"; String accessKeySecret = "建议从环境变量中获取RAM用户AccessKey Secret"; // 接入区域和地址请根据实际情况修改 String endpoint = "green-cip.cn-shanghai.aliyuncs.com"; //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 Client client = createClient(accessKeyId, accessKeySecret, endpoint); // 运行时参数设置,仅对使用了该运行时参数实例的请求有效 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtimeOptions = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); Models.MultimodalAsyncModerationRequest multimodalAsyncModerationRequest = new Models.MultimodalAsyncModerationRequest(); multimodalAsyncModerationRequest.Service = "post_text_image_detection"; // 构造请求参数 var serviceParameters = new ServiceParameters { dataId = "Multimodal0424***", mainData = new MainData { mainTitle = "主标题", mainContent = "主文本内容", mainImages = new List<ImageData> { new ImageData { ossRegionId = "cn-shanghai", ossBucketName = "cip-test", ossObjectName = "123.jpg" }, new ImageData { ossRegionId = "cn-shanghai", ossBucketName = "cip-test", ossObjectName = "123.jpg" } }, mainPostTime = "2025-06-18 20:20:20" }, commentDatas = new List<CommentData> { new CommentData { images = new List<ImageData> { new ImageData { ossRegionId = "cn-shanghai", ossBucketName = "cip-test", ossObjectName = "123.jpg" }, new ImageData { ossRegionId = "cn-shanghai", ossBucketName = "cip-test", ossObjectName = "123.jpg" } }, content = "评论内容1", postTime = "", commentDatas = new List<CommentData> { new CommentData { content = "评论内容1回复1", images = new List<ImageData> { new ImageData { ossRegionId = "cn-shanghai", ossBucketName = "cip-test", ossObjectName = "123.jpg" } }, postTime = "" }, new CommentData { content = "评论内容1回复2", images = new List<ImageData> { new ImageData { ossRegionId = "cn-shanghai", ossBucketName = "cip-test", ossObjectName = "123.jpg" } }, postTime = "" } } }, new CommentData { content = "评论内容2", images = new List<ImageData>(), postTime = "" }, new CommentData { content = "评论内容3", images = new List<ImageData>(), postTime = "" }, new CommentData { content = "评论内容4", images = new List<ImageData>(), postTime = "" }, new CommentData { content = "评论内容5", images = new List<ImageData>(), postTime = "" }, new CommentData { content = "评论内容6", images = new List<ImageData>(), postTime = "" }, new CommentData { content = "评论内容7", images = new List<ImageData>(), postTime = "" } } }; multimodalAsyncModerationRequest.ServiceParameters = JsonConvert.SerializeObject(serviceParameters); try { //调用API获取检测结果。 Models.MultimodalAsyncModerationResponse response = client.MultimodalAsyncModerationWithOptions( multimodalAsyncModerationRequest, runtimeOptions ); Console.WriteLine(response.Body.RequestId); Console.WriteLine(JsonConvert.SerializeObject(response.Body)); } catch (Exception _err) { Console.WriteLine(_err); } } //创建请求客户端 public static Client createClient( String accessKeyId, String accessKeySecret, String endpoint ) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, //设置HTTP代理。 //HttpProxy = "http://10.10.xx.xx:xxxx", //设置HTTPS代理。 //HttpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999", //访问的域名。 Endpoint = endpoint, }; return new Client(config); } } }
获取异步检测结果
// This file is auto-generated, don't edit it. Thanks. using Newtonsoft.Json; namespace AlibabaCloud.SDK.Green20220302 { public class DescribeMultimodalModerationResultAutoRoute { public static void Main(string[] args) { /** * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID") * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET") */ String accessKeyId = "建议从环境变量中获取RAM用户AccessKey ID"; String accessKeySecret = "建议从环境变量中获取RAM用户AccessKey Secret"; // 接入区域和地址请根据实际情况修改 String endpoint = "green-cip.cn-shanghai.aliyuncs.com"; //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。 Client client = createClient(accessKeyId, accessKeySecret, endpoint); // 运行时参数设置,仅对使用了该运行时参数实例的请求有效 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtimeOptions = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); Models.DescribeMultimodalModerationResultRequest describeMultimodalModerationResultRequest = new Models.DescribeMultimodalModerationResultRequest(); describeMultimodalModerationResultRequest.ReqId = "55BBCC2F-0382-57B3-B001-CA4DB491XXXX"; try { //调用API获取检测结果。 Models.DescribeMultimodalModerationResultResponse response = client.DescribeMultimodalModerationResultWithOptions( describeMultimodalModerationResultRequest, runtimeOptions ); Console.WriteLine(response.Body.RequestId); Console.WriteLine(JsonConvert.SerializeObject(response.Body)); } catch (Exception _err) { Console.WriteLine(_err); } } //创建请求客户端 public static Client createClient( String accessKeyId, String accessKeySecret, String endpoint ) { AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = accessKeyId, AccessKeySecret = accessKeySecret, //设置HTTP代理。 //HttpProxy = "http://10.10.xx.xx:xxxx", //设置HTTPS代理。 //HttpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999", //访问的域名。 Endpoint = endpoint, }; return new Client(config); } } }
HTTPS原生调用
内容安全增强版API服务也支持HTTPS原生调用,原生方式需要用户自行封装加解签、拼装请求(URL、Body、header、parameters)。通常必须使用HTTPS原生方式调用的仅有两种情形,如非下述两种特殊场景,建议使用SDK方式调用。
直接在App中使用,对客户端大小有高要求。
对个别的依赖lib包有指定,不方便升级。
调用方式
服务请求地址:https://green-cip.{region}.aliyuncs.com
协议:HTTPS
方式:POST
公共请求参数
图文混合模态审核增强版API接口的入参包含公共请求参数和具体接口请求参数,公共请求参数是指每一个接口都需要使用到的参数,以下表格是公共请求参数的详细介绍。
名称
类型
是否必须
描述
Format
String
是
返回消息的格式。取值:
JSON (默认值)
XML
Version
String
是
API版本号,使用YYYY-MM-DD日期格式,本版本对应为2022-03-02。
AccessKeyId
String
是
阿里云颁发给用户的访问服务所用的密钥ID。
Signature
String
是
签名结果串,关于签名的计算方法,请参见下方签名方式。
SignatureMethod
String
是
签名方式,目前支持HMAC-SHA1。
Timestamp
String
是
请求的时间戳。日期格式按照ISO8601标准表示,并需要使用UTC时间。格式为:yyyy-MM-ddTHH:mm:ssZ。例如,北京时间2022年12月12日09点13分14秒表示为2022-12-12T01:13:14Z。
SignatureVersion
String
是
签名算法版本,取值为1.0。
SignatureNonce
String
是
唯一随机数,用于防止网络重放攻击。不同请求要使用不同的随机数值。
Action
String
是
图文混合模态审核异步接口:MultimodalAsyncModeration
获取图文混合模态审核结果接口:DescribeMultimodalModerationResult
公共返回参数
您发送的每次接口调用请求,无论成功与否,系统都会返回唯一识别码RequestId。其他返回参数包含label(标签)、confidence(置信分值),服务不同返回的参数不同,详见具体服务对应的文档。
代码示例
以下返回示例为了便于阅读,做了格式化处理,实际返回结果没有进行换行、缩进等格式化处理。
以下是图文混合模态审核增强版-接口的请求示例,其他接口请参考具体接口文档获取业务入参:
https://green-cip.cn-shanghai.aliyuncs.com/ ?Format=JSON &Version=2022-03-02 &Signature=vpEEL0zFHfxXYzSFV0n7%2FZiFL9o%3D &SignatureMethod=Hmac-SHA1 &SignatureNonce=15215528852396 &SignatureVersion=1.0 &Action=MultimodalAsyncModeration &AccessKeyId=123****cip &Timestamp=2022-12-12T12:00:00Z &Service=baselineCheck &ServiceParameters={"mainData": {"":""},"commentDatas": [{"":""}]}
以下是图文混合模态审核增强版-接口返回参数的JSON代码示例:
{ 'Code': 200, 'Data': { 'ReqId': '60BC35C9-293F-1335-8220-F1215A94XXXX' }, 'Msg': 'success', 'RequestId': '60BC35C9-293F-1335-8220-F1215A94XXXX' }
签名方式
图文混合模态审核增强版服务会对每个访问的请求进行身份验证,因此,需要在请求中包含签名(Signature)信息。图文混合模态审核增强版服务通过使用AccessKey ID和AccessKey Secret进行对称加密的方法来验证请求的发送者身份。
AccessKey ID和AccessKey Secret由阿里云官方颁发给访问者(可以通过阿里云官方网站申请和管理),其中AccessKey ID用于标识访问者身份;AccessKey Secret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密,只有阿里云和用户知道。
用户在访问时,按照下面的方法对请求进行签名处理:
使用请求参数构造规范化的请求字符串(Canonicalized Query String)。
按照参数名称的字典顺序对请求中所有的请求参数(包括公共请求参数和给定了的请求接口的自定义参数,但不能包括公共请求参数中提到的Signature参数本身)进行排序。
对相关请求参数的名称和值进行编码。名称和值要使用UTF-8字符集进行URL编码。
说明一般支持URL编码的库(比如Java中的java.net.URLEncoder)都是按照application/x-www-form-urlencoded的MIME类型的规则进行编码的。实现时可以直接使用这类方式进行编码,把编码后的字符串中加号(+)替换成%20、星号(*)替换成%2A、%7E替换回波浪号(~),即可得到上述规则描述的编码字符串。
URL编码的编码规则如下:
对于字符A-Z、a-z、0-9以及字符中划线(-)、下划线(_)、半角句号(.)、波浪线(~)不编码。
对于其它字符编码成
%XY
的格式,其中XY是字符对应ASCII码的16进制表示。比如英文的双引号(")对应的编码就是%22
。对于扩展的UTF-8字符,编码成
%XY%ZA…
的格式。需要说明的是英文空格( )要被编码是
%20
,而不是加号(+)。
对编码后的参数名称和值使用英文等号(=)进行连接。
将英文等号连接得到字符串按参数名称的字典顺序依次使用&符号连接,即得到规范化请求字符串。
使用a.i构造的规范化字符串按照下面的规则构造用于计算签名的字符串。
StringToSign= HTTPMethod + "&" + percentEncode("/") + "&" + percentEncode(CanonicalizedQueryString)
说明其中HTTPMethod是提交请求用的HTTP方法,比如POST。percentEncode(/)是按照a.ii中描述的URL编码规则对字符(/)进行编码得到的值,即
%2F
。percentEncode(CanonicalizedQueryString)是对a.i中构造的规范化请求字符串按a.ii中描述的URL编码规则编码后得到的字符串。按照RFC2104的定义,使用上面的用于签名的字符串计算签名HMAC值。
说明注意计算签名时使用的Key就是用户持有的AccessKey Secret并加上一个
&
字符(ASCII:38),使用的哈希算法是SHA1。按照Base64编码规则把上面的HMAC值编码成字符串,即得到签名值(Signature)。
将得到的签名值作为Signature参数添加到请求参数中,即完成对请求签名的过程。
说明得到的签名值在作为最后的请求参数值提交给内容安全服务器时,要和其他参数一样,按照RFC3986的规则进行URL编码。