本文介绍文本审核增强版SDK接入的方式。

步骤一:开通服务

访问开通服务页面,开通文本审核增强版服务。

开通文本增强版服务后,默认付费方式是按量后付费,且按照实际用量结算当日费用,不调用服务不收费。接口接入使用后系统会按使用量自动出账。您也可以购买按量抵扣资源包,资源包相较于后付费存在一定阶梯折扣,适合使用量级可预期和较大的用户。

步骤二:为RAM用户授权

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

  1. 使用阿里云账号登录RAM控制台
  2. 创建RAM用户。

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

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

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

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

步骤三:安装并接入SDK

目前支持的接入地域如下:
地域外网接入地址内网接入地址
华东2(上海)green-cip.cn-shanghai.aliyuncs.comgreen-cip-vpc.cn-shanghai.aliyuncs.com
华北2(北京)green-cip.cn-beijing.aliyuncs.comgreen-cip-vpc.cn-beijing.aliyuncs.com
华南1(深圳)green-cip.cn-shenzhen.aliyuncs.com暂无
新加坡green-cip.ap-southeast-1.aliyuncs.comgreen-cip-vpc.ap-southeast-1.aliyuncs.com
说明 如果需要其他语言的SDK示例代码,您可以通过OpenAPI开发者门户在线调试工具调试API接口,该工具会自动生成相应API的SDK调用示例代码。

Java SDK

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

  1. dependencies中添加如下依赖:
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>1.0.3</version>
    </dependency>
  2. 接入Java SDK。
    代码示例
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import com.aliyun.green20220302.Client;
    import com.aliyun.green20220302.models.TextModerationRequest;
    import com.aliyun.green20220302.models.TextModerationResponse;
    import com.aliyun.green20220302.models.TextModerationResponseBody;
    import com.aliyun.teaopenapi.models.Config;
    import com.aliyun.teautil.models.RuntimeOptions;
    
    public class TextAutoRoute {
        public static void main(String[] args) throws Exception {
            Config config = new Config();
            config.setAccessKeyId("< Your Access ID>");
            config.setAccessKeySecret("< Your Access Secret>");
            //接入区域和地址请根据实际情况修改
            config.setRegionId("cn-shanghai");
            config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
            //连接时超时时间,单位毫秒(ms)。
            config.setReadTimeout(6000);
            //读取时超时时间,单位毫秒(ms)。
            config.setConnectTimeout(3000);
            //设置http代理。
            //config.setHttpProxy("http://10.10.xx.xx:xxxx");
            //设置https代理。
            //config.setHttpsProxy("https://10.10.xx.xx:xxxx");
            // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能
            Client client = new Client(config);
    
            // 创建RuntimeObject实例并设置运行参数。
            RuntimeOptions runtime = new RuntimeOptions();
            runtime.readTimeout = 10000;
            runtime.connectTimeout = 10000;
    
            //检测参数构造
            JSONObject serviceParameters = new JSONObject();
            serviceParameters.put("content", "< input text >");
    
            if (serviceParameters.get("content") == null || serviceParameters.getString("content").trim().length() == 0) {
                System.out.println("text moderation content is empty");
                return;
            }
    
            TextModerationRequest textModerationRequest = new TextModerationRequest();
            /*
            文本检测服务 service code
            */
            textModerationRequest.setService("<service code>");
            textModerationRequest.setServiceParameters(serviceParameters.toJSONString());
            try {
                // 调用方法获取检测结果。
                TextModerationResponse response = client.textModerationWithOptions(textModerationRequest, runtime);
    
                // 自动路由。
                if (response != null) {
                    // 服务端错误,区域切换到cn-beijing。
                    if (500 == response.getStatusCode() || (response.getBody() != null && 500 == (response.getBody().getCode()))) {
                        // 接入区域和地址请根据实际情况修改。
                        config.setRegionId("cn-beijing");
                        config.setEndpoint("green-cip.cn-beijing.aliyuncs.com");
                        client = new Client(config);
                        response = client.textModerationWithOptions(textModerationRequest, runtime);
                    }
    
                }
                // 打印检测结果。
                if (response != null) {
                    if (response.getStatusCode() == 200) {
                        TextModerationResponseBody result = response.getBody();
                        System.out.println(JSON.toJSONString(result));
                        Integer code = result.getCode();
                        if (code != null && code == 200) {
                            TextModerationResponseBody.TextModerationResponseBodyData data = result.getData();
                            System.out.println("labels = [" + data.getLabels() + "]");
                            System.out.println("reason = [" + data.getReason() + "]");
                        } else {
                            System.out.println("text moderation not success. code:" + code);
                        }
                    } else {
                        System.out.println("response not success. status:" + response.getStatusCode());
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

Python SDK

支持Python 3.6及以上版本。

  1. 执行如下命令引入相关依赖。
    sudo pip3 install -v alibabacloud_green20220302==1.0.3
  2. 接入Python SDK。
    代码示例
    # coding=utf-8
    
    from alibabacloud_green20220302.client import Client
    from alibabacloud_green20220302 import models
    from alibabacloud_tea_openapi.models import Config
    from alibabacloud_tea_util.client import Client as UtilClient
    from alibabacloud_tea_util import models as util_models
    import json
    import uuid
    
    
    class TextAutoRoute:
    
        @staticmethod
        def main() -> None:
            service_parameters = {
                'content': '<input text>',
                'dataId': str(uuid.uuid1())
            }
            if service_parameters.get("content") is None or len(service_parameters.get("content").strip()) == 0:
                print("text moderation content is empty")
                return
            text_moderation_request = models.TextModerationRequest(
                # 文本检服务 service code
                service = '<service code>',
                service_parameters = json.dumps(service_parameters)
            )
    
            config = Config(
                access_key_id='< Your Access ID>',
                access_key_secret='< Your Access Secret>',
                # 连接时超时时间,单位毫秒(ms)。
                connect_timeout=3000,
                # 读取时超时时间,单位毫秒(ms)。
                read_timeout=6000,
                # 接入区域和地址请根据实际情况修改。
                region_id='cn-shanghai',
                endpoint='green-cip.cn-shanghai.aliyuncs.com'
            )
            # 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
            client = Client(config)
    
            # 创建RuntimeObject实例并设置运行参数。
            runtime = util_models.RuntimeOptions()
            runtime.read_timeout = 10000
            runtime.connect_timeout = 10000
            try:
                response = client.text_moderation_with_options(text_moderation_request, runtime)
                # 自动路由
                if UtilClient.equal_number(500, response.status_code) or not response or not response.body or 200 != response.body.code:
                    # 服务端错误,区域切换到cn-beijing
                    config.region_id = 'cn-beijing'
                    config.endpoint = 'green-cip.cn-beijing.aliyuncs.com'
                    client = Client(config)
                    response = client.text_moderation_with_options(text_moderation_request, runtime)
    
                if response.status_code == 200:
                    # 调用成功。
                    # 获取审核结果。
                    result = response.body
                    print('response success. result:{}'.format(result))
                    if result.code == 200:
                        resultData = result.data
                        print('labels:{}, reason:{}'.format(resultData.labels, resultData.reason))
                else:
                    print('response not success. status:{} ,result:{}'.format(response.status_code, response))
            except Exception as err:
                print(err)
    
    
    if __name__ == '__main__':
        TextAutoRoute.main()

Go SDK

  1. 执行如下命令引入相关依赖。
    go get github.com/alibabacloud-go/green-20220302
  2. 接入Go SDK。
    代码示例
    // This file is auto-generated, don't edit it. Thanks.
    package main
    
    import (
        "encoding/json"
        "fmt"
        openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
        green20220302 "github.com/alibabacloud-go/green-20220302/client"
        util "github.com/alibabacloud-go/tea-utils/v2/service"
        "github.com/alibabacloud-go/tea/tea"
        "net/http"
        "strings"
    )
    
    func _main() (_err error) {
        // 检测数据。
        serviceParameters, _ := json.Marshal(
            map[string]interface{}{
                "content": "<input text>",
            },
        )
    
        var contentMap map[string]interface{}
    
        _err = json.Unmarshal(serviceParameters, &contentMap)
        if contentMap["content"] == "" || len(strings.TrimSpace(fmt.Sprint(contentMap["content"]))) == 0 {
            fmt.Println("text moderation content is empty")
            return
        }
        textModerationRequest := &green20220302.TextModerationRequest{
            /*
               文本检服务 service code
            */
            Service:           tea.String("<service code>"),
            ServiceParameters: tea.String(string(serviceParameters)),
        }
    
        // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。
        config := &openapi.Config{
            // 您的AccessKey ID。
            AccessKeyId: tea.String("<Your Access ID>"),
            // 您的AccessKey Secret。
            AccessKeySecret: tea.String("<Your Access Secret>"),
            // 设置HTTP代理。
            // HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
            // 设置HTTPS代理。
            // HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
            RegionId: tea.String("cn-shanghai"),
            Endpoint: tea.String("green-cip.cn-shanghai.aliyuncs.com"),
            /**
             * 请设置超时时间。服务端全链路处理超时时间为10秒,请做相应设置。
             * 如果您设置的ReadTimeout小于服务端处理的时间,程序中会获得一个ReadTimeout异常。
             */
            ConnectTimeout: tea.Int(3000),
            ReadTimeout:    tea.Int(6000),
        }
        // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
        client, _err := green20220302.NewClient(config)
        if _err != nil {
            return _err
        }
        // 创建RuntimeObject实例并设置运行参数。
        runtime := &util.RuntimeOptions{}
        runtime.ReadTimeout = tea.Int(10000)
        runtime.ConnectTimeout = tea.Int(10000)
    
        // 复制代码运行请自行打印API的返回值。
        response, _err := client.TextModerationWithOptions(textModerationRequest,runtime)
    
        // 自动路由,服务端错误,区域切换至cn-beijing
        flag := false
        if _err != nil {
            var err = &tea.SDKError{}
            if _t, ok := _err.(*tea.SDKError); ok {
                err = _t
                // 系统异常,切换到下个地域调用。
                if *err.StatusCode == 500 {
                    flag = true
                }
            }
        }
        if response == nil || *response.StatusCode == 500 || *response.Body.Code == 500 {
            flag = true
        }
        if flag {
            config.SetRegionId("cn-beijing")
            config.SetEndpoint("green-cip.cn-beijing.aliyuncs.com")
            client, _err := green20220302.NewClient(config)
            if _err != nil {
                return _err
            }
            response, _err = client.TextModerationWithOptions(textModerationRequest, runtime)
            if _err !=nil{
                return _err
            }
        }
        if response != nil{
            statusCode := tea.IntValue(tea.ToInt(response.StatusCode))
            body := response.Body
            textModerationResponseData := body.Data
            fmt.Println("requestId:" + tea.StringValue(body.RequestId))
            if statusCode == http.StatusOK {
                fmt.Println("response success. response:" + body.String())
                if tea.IntValue(tea.ToInt(body.Code)) == 200 {
                    fmt.Println("response reason:" + tea.StringValue(textModerationResponseData.Reason))
                    fmt.Println("response labels:" + tea.StringValue(textModerationResponseData.Labels))
                } else {
                    fmt.Println("text moderation not success. status" + tea.ToString(body.Code))
                }
            } else {
                fmt.Print("response not success. status:" + tea.ToString(statusCode))
            }
        }
        return nil
    }
    
    
    func main() {
        err := _main()
        if err != nil {
            panic(err)
        }
    }
                            

PHP SDK

  1. 执行如下命令引入相关依赖。
    composer require alibabacloud/green-20220302
  2. 接入PHP SDK。
    代码示例
    <?php
    
    require('vendor/autoload.php');
    
    use AlibabaCloud\Tea\Utils\Utils;
    use Darabonba\OpenApi\Models\Config;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    use AlibabaCloud\SDK\Green\V20220302\Green;
    use AlibabaCloud\SDK\Green\V20220302\Models\TextModerationRequest;
    
    
    $request = new TextModerationRequest();
    /*
    文本检服务 service code
    */
    $request->service = "<service code>";
    // 待检测数据。
    $arr = array('content' => '<input text>');
    $request->serviceParameters = json_encode($arr);
    if (empty($arr) || empty(trim($arr["content"]))) {
        echo "text moderation content is empty";
        return;
    }
    $config = new Config([
        // 您的AccessKey ID。
        "accessKeyId" => "< Your Access ID>",
        // 您的AccessKey Secret。
        "accessKeySecret" => "< Your Access 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);
    
    // 创建RuntimeObject实例并设置运行参数。
    $runtime = new RuntimeOptions([]);
    $runtime->readTimeout = 10000;
    $runtime->connectTimeout = 10000;
    
    try {
        // 调用接口,获取检测结果。
        $response = $client->textModerationWithOptions($request, $runtime);
        // 自动路由。
        if (Utils::equalNumber(500, $response->statusCode) || Utils::equalNumber(500, $response->body->code)) {
            //服务端错误,区域切换到cn-beijing
            $config->endpoint = "green-cip.cn-beijing.aliyuncs.com";
            $config->regionId = "cn-beijing";
            $client = new Green($config);
            $response = $client->textModerationWithOptions($request, $runtime);
        }
        print_r($response->body);
    } catch (Exception $e) {
        var_dump($e->getMessage());
        var_dump($e->getErrorInfo());
        var_dump($e->getLastException());
        var_dump($e->getLastRequest());
    }

Node.js SDK

  1. 执行如下命令引入相关依赖。
    npm install @alicloud/pop-core
  2. 接入Node.js SDK。
    代码示例
    const RPCClient = require("@alicloud/pop-core");
    
    async function main() {
        // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
        var client = new RPCClient({
            accessKeyId: '< Your Access ID>',
            accessKeySecret: '< Your Access Secret>',
            endpoint: "https://green-cip.cn-shanghai.aliyuncs.com",
            apiVersion: '2022-03-02'
        });
        // 通过以下代码创建API请求并设置参数。
        var params = {
            /*
            文本检服务 service code
            */
            "Service": "<service code>",
            // 待检测文本内容。
            "ServiceParameters": JSON.stringify({
                "content": "<inpout text>",
            })
        }
    
        var serviceParameters = JSON.parse(params.ServiceParameters);
        if (!serviceParameters.hasOwnProperty("content") || serviceParameters.content.trim().length === 0) {
            console.log("text moderation content is empty")
            return;
        }
    
        var requestOption = {
            method: 'POST',
            formatParams: false,
        };
    
        try {
            // 调用接口获取检测结果。
            var response = await client.request('TextModeration', params, requestOption)
            // 自动路由。
            if (response.Code === 500) {
                // 服务端错误,区域切换到cn-beijing。
                client = new RPCClient({
                    accessKeyId: '<Your Access ID>',
                    accessKeySecret: '<Your Access Secret>',
                    endpoint: "https://green-cip.cn-beijing.aliyuncs.com",
                    apiVersion: '2022-03-02'
                });
                response = await client.request('TextModeration', params, requestOption)
            }
            console.log(JSON.stringify(response))
        } catch (err) {
            console.log(err);
        }
    }
    
    main().then(function (response) { });

C# SDK

  1. 执行如下命令引入相关依赖。
    dotnet add package AlibabaCloud.SDK.Green20220302 --version 1.0.2
  2. 接入C# SDK。
    代码示例
    // This file is auto-generated, don't edit it. Thanks.
    
    using Newtonsoft.Json;
    
    namespace AlibabaCloud.SDK.Green20220302
    {
        public class TextModerationAutoRoute
        {
            public static void Main(string[] args)
            {
                // 构建文本检测请求。
                AlibabaCloud.SDK.Green20220302.Models.TextModerationRequest textModerationRequest = new AlibabaCloud.SDK.Green20220302.Models.TextModerationRequest();
                /*
                文本检测服务 service code
                */
                textModerationRequest.Service = "<service code>";
                Dictionary<string, object> task = new Dictionary<string, object>();
                // 待检测文本内容。
                task.Add("content", "<input text>");
                if (!task.ContainsKey("content") || Convert.ToString(task["content"]).Trim() == string.Empty)
                {
                    Console.WriteLine("text moderation content is empty");
                    return;
                }
                textModerationRequest.ServiceParameters = JsonConvert.SerializeObject(task);
    
    
                // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。
                AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
                {
                    // 您的AccessKey ID。
                    AccessKeyId = "<Your Access ID>",
                    // 您的AccessKey Secret。
                    AccessKeySecret = "<Your Access Secret>",
                    // 设置HTTP代理。
                    // HttpProxy = "http://xx.xx.xx.xx:xxxx",
                    // 设置HTTPS代理。
                    // HttpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999",
                    // 访问的域名。
                    Endpoint = "green-cip.cn-shanghai.aliyuncs.com",
                };
                // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
                AlibabaCloud.SDK.Green20220302.Client client = new AlibabaCloud.SDK.Green20220302.Client(config);
    
                // 创建RuntimeObject实例并设置运行参数。
                AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                runtime.ReadTimeout = 10000;
                runtime.ConnectTimeout = 10000;
                try
                {
                    // 调用API获取检测结果。
                    AlibabaCloud.SDK.Green20220302.Models.TextModerationResponse response =
                    client.TextModerationWithOptions(textModerationRequest, runtime);
                    // 自动路由,服务端错误,区域切换至cn-beijing。
                    if (response is null || response.Body is null || AlibabaCloud.TeaUtil.Common.EqualNumber(500, AlibabaCloud.TeaUtil.Common.AssertAsNumber(response.StatusCode)) || AlibabaCloud.TeaUtil.Common.EqualString("500", Convert.ToString(response.Body.Code)))
                    {
                        config.Endpoint = "green-cip.cn-beijing.aliyuncs.com";
                        client = new AlibabaCloud.SDK.Green20220302.Client(config);
                        response = client.TextModerationWithOptions(textModerationRequest, runtime);
                    }
    
                    Console.WriteLine(response.Body.RequestId);
                    Console.WriteLine(JsonConvert.SerializeObject(response.Body));
                }
                catch (Exception _err)
                {
                    Console.WriteLine(_err);
                }
    
            }
        }
    }
                            

如果您在使用过程中出现问题,可以请加入钉群(钉群号:35573806),联系产品技术专家进行咨询。