文本审核增强版SDK及接入指南

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

步骤一:开通服务

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

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

步骤二:为RAM用户授权

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

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

  2. 创建RAM用户。

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

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

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

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

步骤三:安装并接入SDK

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

地域

外网接入地址

内网接入地址

支持服务

华东2(上海)

green-cip.cn-shanghai.aliyuncs.com

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

文本审核增强版PULS服务

文本审核增强版通用服务

华北2(北京)

green-cip.cn-beijing.aliyuncs.com

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

华东1(杭州)

green-cip.cn-hangzhou.aliyuncs.com

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

华南1(深圳)

green-cip.cn-shenzhen.aliyuncs.com

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

西南1(成都)

green-cip.cn-chengdu.aliyuncs.com

暂无

新加坡

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

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

文本审核增强版通用服务

说明

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

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

SDK分为两个版本服务,请选择正确的服务接入:

文本审核增强版PLUS服务

该SDK对应接口为文本审核增强版PLUS服务面向大语言模型的文本审核PLUS服务

Java SDK

支持Java 1.8及以上版本。

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

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

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

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>green20220302</artifactId>
  <version>2.2.8</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.TextModerationPlusRequest;
import com.aliyun.green20220302.models.TextModerationPlusResponse;
import com.aliyun.green20220302.models.TextModerationPlusResponseBody;
import com.aliyun.teaopenapi.models.Config;


public class TextModerationPlusDemo {

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

        JSONObject serviceParameters = new JSONObject();
        serviceParameters.put("content", "测试文本内容");

        TextModerationPlusRequest textModerationPlusRequest = new TextModerationPlusRequest();
        // 检测类型
        textModerationPlusRequest.setService("llm_query_moderation");
        textModerationPlusRequest.setServiceParameters(serviceParameters.toJSONString());

        try {
            TextModerationPlusResponse response = client.textModerationPlus(textModerationPlusRequest);
            if (response.getStatusCode() == 200) {
                TextModerationPlusResponseBody result = response.getBody();
                System.out.println(JSON.toJSONString(result));
                System.out.println("requestId = " + result.getRequestId());
                System.out.println("code = " + result.getCode());
                System.out.println("msg = " + result.getMessage());
                Integer code = result.getCode();
                if (200 == code) {
                    TextModerationPlusResponseBody.TextModerationPlusResponseBodyData data = result.getData();
                    System.out.println(JSON.toJSONString(data, true));
                } 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及以上版本。

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

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

pip install alibabacloud_green20220302==2.2.8

2、接入Python SDK 代码示例。

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

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

clt = Client(config)

serviceParameters = {
    'content': '测试文本内容'
}
textModerationPlusRequest = models.TextModerationPlusRequest(
    # 检测类型
    service='llm_query_moderation',
    service_parameters=json.dumps(serviceParameters)
)

try:
    response = clt.text_moderation_plus(textModerationPlusRequest)
    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源码

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

composer require alibabacloud/green-20220302

2、接入PHP SDK 代码示例。

<?php
require('vendor/autoload.php');

use AlibabaCloud\SDK\Green\V20220302\Models\TextModerationPlusRequest;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Green\V20220302\Green;

$config = new Config([
    /**
     * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
     * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
     * 常见获取环境变量方式:
     * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
     * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
     */
    "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID',
    "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret',
    // 设置HTTP代理。
    // "httpProxy" => "http://10.10.xx.xx:xxxx",
    // 设置HTTPS代理。
    // "httpsProxy" => "https://10.10.xx.xx:xxxx",
    "endpoint" => "green-cip.cn-shanghai.aliyuncs.com",
    "regionId" => "cn-shanghai"

]);
// 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
$client = new Green($config);

$request = new TextModerationPlusRequest();
$request->service = "llm_query_moderation";
$serviceParameters = array("content" => "测试内容");

$request->serviceParameters = json_encode($serviceParameters);

$runtime = new RuntimeOptions();
$runtime->readTimeout = 6000;
$runtime->connectTimeout = 3000;

try {
    $response = $client->textModerationPlusWithOptions($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");
    print_r("message = " . $body->message . "\n");
    if (200 != $body->code) {
        print_r("text moderation not success. code:" . $body->code);
    }
    $data = $body->data;
    print_r("data = " . json_encode($data));
} catch (TeaUnableRetryError $e) {
    var_dump($e->getMessage());
    var_dump($e->getErrorInfo());
    var_dump($e->getLastException());
    var_dump($e->getLastRequest());
}

Go SDK

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

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

2、接入Go SDK 代码示例。

package main

import (
	"encoding/json"
	"fmt"
	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
	green20220302 "github.com/alibabacloud-go/green-20220302/v2/client"
	util "github.com/alibabacloud-go/tea-utils/v2/service"
	"github.com/alibabacloud-go/tea/tea"
	"net/http"
)

func main() {
	// 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。
	config := &openapi.Config{
		/**
		 * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
		 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
		 * 常见获取环境变量方式:
		 * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
		 * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
		 */
		AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"),
		AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey 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, _err := green20220302.NewClient(config)
	if _err != nil {
		panic(_err)
	}

	// 创建RuntimeObject实例并设置运行参数。
	runtime := &util.RuntimeOptions{}
	runtime.ReadTimeout = tea.Int(10000)
	runtime.ConnectTimeout = tea.Int(10000)

	serviceParameters, _ := json.Marshal(
		map[string]interface{}{
			"content": "测试内容",
		},
	)
	request := green20220302.TextModerationPlusRequest{
		Service: tea.String("llm_query_moderation"),
		ServiceParameters: tea.String(string(serviceParameters)),
	}

	result, _err := client.TextModerationPlusWithOptions(&request, runtime)
	if _err != nil {
		panic(_err)
	}

	if *result.StatusCode != http.StatusOK {
		fmt.Printf("response not success. status:%d\n", *result.StatusCode)
		return
	}
	body := result.Body
	fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
	if *body.Code != http.StatusOK {
		fmt.Printf("text moderation not success. code:%d\n", *body.Code)
		return
	}

	data := body.Data
	fmt.Printf("text moderation data:%s\n", *data)
}

文本审核增强版通用服务

该SDK对应接口为文本审核增强版API文本审核增强版多语言服务

Java SDK

支持Java 1.8及以上版本。

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

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

  1. dependencies中添加如下依赖:

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>2.2.8</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();
            /**
             * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
             * 常见获取环境变量方式:
             * 方式一:
             *     获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
             *     获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             * 方式二:
             *     获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
             *     获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
             */
            config.setAccessKeyId("建议从环境变量中获取RAM用户AccessKey ID");
            config.setAccessKeySecret("建议从环境变量中获取RAM用户AccessKey Secret");
            //接入区域和地址请根据实际情况修改
            config.setRegionId("cn-shanghai");
            config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
            //连接时超时时间,单位毫秒(ms)。
            config.setReadTimeout(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:内容安全控制台文本增强版规则配置的serviceCode,示例:chat_detection
            */
            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及以上版本。

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

支持Python 3.6及以上版本。

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

    pip install alibabacloud_green20220302==2.2.8
  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:内容安全控制台文本增强版规则配置的serviceCode,示例:chat_detection
                service = 'service code',
                service_parameters = json.dumps(service_parameters)
            )
            config = Config(
                # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
                # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
                # 常见获取环境变量方式:
                # 获取RAM用户AccessKey ID:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
                # 获取RAM用户AccessKey Secret:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
                access_key_id='建议从环境变量中获取RAM用户AccessKey ID',
                access_key_secret='建议从环境变量中获取RAM用户AccessKey Secret',
                # 连接时超时时间,单位毫秒(ms)。
                connect_timeout=3000,
                # 读取时超时时间,单位毫秒(ms)。
                read_timeout=6000,
                # 接入区域和地址请根据实际情况修改。
                region_id='cn-shanghai',
                endpoint='green-cip.cn-shanghai.aliyuncs.com'
            )
            # 注意,此处实例化的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()
    

PHP SDK

支持PHP 5.6及以上版本。

原始代码,请参见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:内容安全控制台文本增强版规则配置的serviceCode,示例:chat_detection
    */
    $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拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
         * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
         * 常见获取环境变量方式:
         * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        "accessKeyId" => '建议从环境变量中获取RAM用户AccessKey ID',
        "accessKeySecret" => '建议从环境变量中获取RAM用户AccessKey Secret',
        // 设置HTTP代理。
        // "httpProxy" => "http://10.10.xx.xx:xxxx",
        // 设置HTTPS代理。
        // "httpsProxy" => "https://10.10.xx.xx:xxxx",
        "endpoint" => "green-cip.cn-shanghai.aliyuncs.com",
        "regionId" => "cn-shanghai"
    
    ]);
    // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
    $client = new Green($config);
    
    // 创建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());
    }

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:内容安全控制台文本增强版规则配置的serviceCode,示例:chat_detection
            */
            Service:           tea.String("service code"),
            ServiceParameters: tea.String(string(serviceParameters)),
        }
    
        // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式。
        config := &openapi.Config{
            /**
             * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
             * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
             * 常见获取环境变量方式:
             * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
             * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
             */
            AccessKeyId: tea.String("建议从环境变量中获取RAM用户AccessKey ID"),
            AccessKeySecret: tea.String("建议从环境变量中获取RAM用户AccessKey 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)
        }
    }
                            

Node.js SDK

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

    npm install @alicloud/pop-core
  2. 接入Node.js SDK。

    代码示例

    const RPCClient = require("@alicloud/pop-core");
    
    async function main() {
      // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
      let client = new RPCClient({
        /**
    * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    * 常见获取环境变量方式:
    * 获取RAM用户AccessKey ID:process.env['ALIBABA_CLOUD_ACCESS_KEY_ID']
    * 获取RAM用户AccessKey Secret:process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
    */
        accessKeyId: '建议从环境变量中获取RAM用户AccessKey ID',
        accessKeySecret: '建议从环境变量中获取RAM用户AccessKey Secret',
        // 接入区域和地址请根据实际情况修改
        endpoint: "https://green-cip.cn-shanghai.aliyuncs.com",
        apiVersion: '2022-03-02',
        // 设置http代理
        // httpProxy: "http://xx.xx.xx.xx:xxxx",
        // 设置https代理
        // httpsProxy: "https://username:password@xxx.xxx.xxx.xxx:9999",
      });
      // 通过以下代码创建API请求并设置参数。
      const params = {
        // 文本检测service:内容安全控制台文本增强版规则配置的serviceCode,示例:chat_detection
        "Service": "chat_detection",
        "ServiceParameters": JSON.stringify({
          //待检测文本内容。
          "content": "你好。"
        }),
      };
    
      const requestOption = {
        method: 'POST',
        formatParams: false,
      };
    
      try {
        // 调用接口获取检测结果。
        let response = await client.request('TextModeration', params, requestOption);
        // 自动路由。
        if (response.Code === 500) {
          // 区域切换到cn-beijing。
          client.endpoint = "https://green-cip.cn-beijing.aliyuncs.com";
          response = await client.request('TextModeration', params, requestOption);
        }
      } catch (err) {
        console.log(err);
      }
      return response;
    }
    
    main().then(function (response) {
      console.log(JSON.stringify(response));
    });
    

C# SDK

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

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.8
  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:内容安全控制台文本增强版规则配置的serviceCode,示例:chat_detection
                */
                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拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
                     * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
                     * 常见获取环境变量方式:
                     * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
                     * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                     */
                     AccessKeyId = "建议从环境变量中获取RAM用户AccessKey ID",
                     AccessKeySecret = "建议从环境变量中获取RAM用户AccessKey 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),联系产品技术专家进行咨询。