图文混合模态审核SDK及接入指南

图文混合模态审核服务支持SDK方式调用和原生HTTPS方式调用。推荐您使用SDK接入,可免去签名验证以及Body格式构建等细节步骤。本文介绍图文混合模态审核API接入的方式。

步骤一:开通服务

访问开通内容审核增强版服务页面,开通图文混合模态审核增强版服务。接口接入使用后系统会按使用量自动出账,具体信息,请参见二、计费说明您也可以购买按量抵扣资源包,资源包相较于后付费存在一定阶梯折扣,适合使用量级可预期和较大的用户。

开通图文混合模态审核增强版服务后,默认付费方式是按量后付费,且按照实际用量结算当日费用,不调用服务不收费。

步骤二:为RAM用户授权

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

  1. 使用RAM管理员登录RAM控制台

  2. 创建RAM用户。

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

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

    具体操作,请参见RAM用户授权

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

步骤三:安装并接入图文混合模态审核服务

目前支持的接入地域为:

地域

外网接入地址

内网接入地址

华东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_IDALIBABA_CLOUD_ACCESS_KEY_SECRET环境变量来创建默认的访问凭证。调用接口时,程序直接访问凭证,读取您的访问密钥(即AccessKey)并自动完成鉴权。您在接入SDK代码示例之前,请先配置环境变量。具体操作,请参见管理访问凭据

Java SDK

支持Java 1.8及以上版本。

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

支持以下两种类型的图片检测。

对公网可访问图片进行检测

使用场景

当需要审核的图片可通过公网链接访问时,图文混合模态审核增强版服务可通过图片URL获取文件后进行审核。

  1. pom.xml中添加如下依赖安装Java SDK,即可以在Maven工程中使用SDK。

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

  2. 接入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的文件后进行审核。访问云资源访问授权页面创建服务角色。

  1. 使用阿里云账号(即主账号)访问云资源访问授权页面进行授权。

  2. pom.xml中添加如下依赖安装Java SDK,即可以在Maven工程中使用SDK。

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

  3. 接入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获取文件后进行审核。

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

    pip install alibabacloud_green20220302==2.22.0

  2. 接入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 IDAccessKey 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 IDAccessKey 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的文件后进行审核。访问云资源访问授权页面创建服务角色。

  1. 使用阿里云账号(即主账号)访问云资源访问授权页面进行授权。

  2. 执行如下命令安装Python SDK。

    pip install alibabacloud_green20220302==2.22.0

  3. 接入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 IDAccessKey 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 IDAccessKey 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获取文件后进行审核。

  1. 安装PHP SDK。

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

    composer require alibabacloud/green-20220302 2.22.0

  2. 接入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 IDAccessKey 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 IDAccessKey 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的文件后进行审核。访问云资源访问授权页面创建服务角色。

  1. 使用阿里云账号(即主账号)访问云资源访问授权页面进行授权。

  2. 安装PHP SDK。

    composer require alibabacloud/green-20220302 2.22.0

  3. 接入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 IDAccessKey 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 IDAccessKey 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获取文件后进行审核。

  1. 安装Go SDK。

    go get github.com/alibabacloud-go/green-20220302/v2

  2. 接入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的文件后进行审核。访问云资源访问授权页面创建服务角色。

  1. 使用阿里云账号(即主账号)访问云资源访问授权页面进行授权。

  2. 执行如下命令安装Go SDK。

    go get github.com/alibabacloud-go/green-20220302/v2

  3. 接入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获取文件后进行审核。

  1. 安装Node.js SDK。

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

    npm install @alicloud/green20220302@2.22.0

  2. 接入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的文件后进行审核。访问云资源访问授权页面创建服务角色。

  1. 使用阿里云账号(即主账号)访问云资源访问授权页面进行授权。

  2. 安装Node.js SDK。

    npm install @alicloud/green20220302@2.22.0

  3. 接入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获取文件后进行审核。

  1. 安装C# SDK。

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.22.0

  2. 接入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 IDAccessKey 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 IDAccessKey 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的文件后进行审核。访问云资源访问授权页面创建服务角色。

  1. 使用阿里云账号(即主账号)访问云资源访问授权页面进行授权。

  2. 安装C# SDK。

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.22.0

  3. 接入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 IDAccessKey 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 IDAccessKey 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方式调用。

  1. 直接在App中使用,对客户端大小有高要求。

  2. 对个别的依赖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。例如,北京时间20221212091314秒表示为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 IDAccessKey Secret进行对称加密的方法来验证请求的发送者身份。

    AccessKey IDAccessKey Secret由阿里云官方颁发给访问者(可以通过阿里云官方网站申请和管理),其中AccessKey ID用于标识访问者身份;AccessKey Secret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密,只有阿里云和用户知道。

    用户在访问时,按照下面的方法对请求进行签名处理:

    1. 使用请求参数构造规范化的请求字符串(Canonicalized Query String)。

      1. 按照参数名称的字典顺序对请求中所有的请求参数(包括公共请求参数和给定了的请求接口的自定义参数,但不能包括公共请求参数中提到的Signature参数本身)进行排序。

      2. 对相关请求参数的名称和值进行编码。名称和值要使用UTF-8字符集进行URL编码。

        说明

        一般支持URL编码的库(比如Java中的java.net.URLEncoder)都是按照application/x-www-form-urlencodedMIME类型的规则进行编码的。实现时可以直接使用这类方式进行编码,把编码后的字符串中加号(+)替换成%20、星号(*)替换成%2A、%7E替换回波浪号(~),即可得到上述规则描述的编码字符串。

        URL编码的编码规则如下:

        • 对于字符A-Z、a-z、0-9以及字符中划线(-)、下划线(_)、半角句号(.)、波浪线(~)不编码。

        • 对于其它字符编码成%XY的格式,其中XY是字符对应ASCII码的16进制表示。比如英文的双引号(")对应的编码就是%22

        • 对于扩展的UTF-8字符,编码成%XY%ZA…的格式。

        • 需要说明的是英文空格( )要被编码是%20,而不是加号(+)。

      3. 对编码后的参数名称和值使用英文等号(=)进行连接。

      4. 将英文等号连接得到字符串按参数名称的字典顺序依次使用&符号连接,即得到规范化请求字符串。

    2. 使用a.i构造的规范化字符串按照下面的规则构造用于计算签名的字符串。

      StringToSign=
      HTTPMethod + "&" +
      percentEncode("/") + "&" +
      percentEncode(CanonicalizedQueryString)
      说明

      其中HTTPMethod是提交请求用的HTTP方法,比如POST。percentEncode(/)是按照a.ii中描述的URL编码规则对字符(/)进行编码得到的值,即%2F。percentEncode(CanonicalizedQueryString)是对a.i中构造的规范化请求字符串按a.ii中描述的URL编码规则编码后得到的字符串。

    3. 按照RFC2104的定义,使用上面的用于签名的字符串计算签名HMAC值。

      说明

      注意计算签名时使用的Key就是用户持有的AccessKey Secret并加上一个&字符(ASCII:38),使用的哈希算法是SHA1。

    4. 按照Base64编码规则把上面的HMAC值编码成字符串,即得到签名值(Signature)。

    5. 将得到的签名值作为Signature参数添加到请求参数中,即完成对请求签名的过程。

      说明

      得到的签名值在作为最后的请求参数值提交给内容安全服务器时,要和其他参数一样,按照RFC3986的规则进行URL编码。