Este guia orienta você na ativação do serviço Text Moderation 2.0, na configuração das permissões de acesso e na integração de um SDK para chamar a operação da API TextModeration.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma conta Alibaba Cloud
Um usuário RAM com a política de sistema
AliyunYundunGreenWebFullAccess(consulte a Etapa 2 abaixo)AccessKey ID e AccessKey secret armazenados como variáveis de ambiente (consulte Configurar variáveis de ambiente)
Etapa 1: Ativar o serviço
Ative o serviço Text Moderation 2.0 na página Activate Service.
Após a ativação, o faturamento padrão é pagamento conforme o uso. A cobrança ocorre diariamente com base no uso real. O serviço gera faturas automaticamente conforme sua utilização da API. Se você não utilizar o serviço, nenhuma cobrança será aplicada.
Etapa 2: Conceder permissões a um usuário RAM
Para chamar a API do Content Moderation, o usuário RAM precisa ter as permissões necessárias.
Faça login no RAM console como administrador do RAM.
Crie um usuário RAM. Para mais detalhes, consulte Create a RAM user.
Conceda a política de sistema
AliyunYundunGreenWebFullAccessao usuário RAM. Para mais detalhes, consulte Grant permissions to a RAM user.
Configurar variáveis de ambiente
Armazene seu par de AccessKey como variáveis de ambiente para evitar codificar credenciais diretamente em sua aplicação.
Linux / macOS
export ALIBABA_CLOUD_ACCESS_KEY_ID="<your-access-key-id>"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="<your-access-key-secret>"
Windows (Prompt de Comando)
set ALIBABA_CLOUD_ACCESS_KEY_ID=<your-access-key-id>
set ALIBABA_CLOUD_ACCESS_KEY_SECRET=<your-access-key-secret>
Substitua <your-access-key-id> e <your-access-key-secret> pelo AccessKey ID e AccessKey secret do seu usuário RAM.
Nunca codifique seu par de AccessKey diretamente no código-fonte ou o envie para um repositório de código. Utilize variáveis de ambiente ou tokens do Security Token Service (STS) para transmitir credenciais. Para mais informações, consulte Configure credentials.
Etapa 3: Instalar e integrar o SDK
Regiões suportadas
|
Região |
Endpoint público |
Endpoint VPC |
|
Singapura |
green-cip.ap-southeast-1.aliyuncs.com |
green-cip-vpc.ap-southeast-1.aliyuncs.com |
|
EUA (Virgínia) |
green-cip.us-east-1.aliyuncs.com |
green-cip-vpc.us-east-1.aliyuncs.com |
|
EUA (Vale do Silício) |
green-cip.us-west-1.aliyuncs.com |
N/A |
|
Reino Unido (Londres) |
green-cip.eu-west-1.aliyuncs.com |
N/A |
Para exemplos de SDK em outras linguagens, utilize o OpenAPI Explorer para depurar operações da API e gerar código SDK automaticamente.
Todos os exemplos abaixo utilizam variáveis de ambiente para autenticação e chamam TextModerationWithOptions (ou seu equivalente na linguagem) para enviar uma solicitação de moderação síncrona. A resposta contém um campo labels (a categoria de conteúdo detectada) e um campo reason (a explicação).
Java SDK
Requisitos: Java 1.8 ou superior
Código-fonte: GitHub ou Maven Central
1. Adicione a dependência ao seu pom.xml.
Inclua o seguinte na seção <dependencies>:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>green20220302</artifactId>
<version>3.3.3</version>
</dependency>
2. Chame a API.
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();
// Exposing your source code can leak your AccessKey pair, compromising the security of all your resources. The following sample code is for reference only. For improved security, we recommend using a more secure method, such as a Security Token Service (STS) token, for authorization. For more information, see the relevant documentation.
// Ensure that the ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variables are set.
config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Modify the region and endpoint based on your requirements.
config.setRegionId("ap-southeast-1");
config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
// Set the read and connection timeout in milliseconds.
config.setReadTimeout(6000);
config.setConnectTimeout(3000);
// For better performance, we strongly recommend that you reuse the client instance to avoid establishing redundant connections.
Client client = new Client(config);
// Create a RuntimeOptions instance and set runtime parameters.
RuntimeOptions runtime = new RuntimeOptions();
runtime.readTimeout = 10000;
runtime.connectTimeout = 10000;
// Construct service parameters.
JSONObject serviceParameters = new JSONObject();
serviceParameters.put("content", "text to be detected");
if (serviceParameters.get("content") == null || serviceParameters.getString("content").trim().length() == 0) {
System.out.println("text moderation content is empty");
return;
}
TextModerationRequest textModerationRequest = new TextModerationRequest();
// Set the service based on your requirements.
textModerationRequest.setService("text_moderation_service");
textModerationRequest.setServiceParameters(serviceParameters.toJSONString());
try {
// Call the method to get the detection result.
TextModerationResponse response = client.textModerationWithOptions(textModerationRequest, runtime);
// Print the detection result.
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 failed. code:" + code);
}
} else {
System.out.println("request failed. status:" + response.getStatusCode());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Saída esperada (quando a solicitação é bem-sucedida e nenhuma violação é detectada):
{"code":200,"data":{"labels":"","reason":""},"requestId":"...","message":"OK"}
labels = []
reason = []
Python SDK
Requisitos: Python 3.6 ou superior
Código-fonte: PyPI
1. Instale o pacote.
pip install alibabacloud_green20220302==3.2.4
2. Chame a API.
# coding=utf-8
import os
import json
import uuid
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
class TextAutoRoute:
@staticmethod
def main() -> None:
service_parameters = {
'content': 'text to be detected',
'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(
# Set the service as needed.
service='text moderation service',
service_parameters=json.dumps(service_parameters)
)
# Read credentials from environment variables.
config = Config(
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
# Set the connection and read timeout periods (in milliseconds).
connect_timeout=3000,
read_timeout=6000,
# Modify the region and endpoint as needed.
region_id='ap-southeast-1',
endpoint='green-cip.ap-southeast-1.aliyuncs.com'
)
# Reuse the client instance to avoid creating multiple connections.
client = Client(config)
# Set runtime-level timeout periods (in milliseconds).
runtime = util_models.RuntimeOptions()
runtime.read_timeout = 10000
runtime.connect_timeout = 10000
try:
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:
result_data = result.data
print('labels:{}, reason:{}'.format(result_data.labels, result_data.reason))
else:
print('response not success. status:{} ,result:{}'.format(response.status_code, response))
except Exception as err:
print(err)
if __name__ == '__main__':
TextAutoRoute.main()
Saída esperada (quando a solicitação é bem-sucedida e nenhuma violação é detectada):
response success. result:...
labels:, reason:
PHP SDK
Requisitos: PHP 5.6 ou superior
Código-fonte: Packagist
1. Instale o pacote.
composer require alibabacloud/green-20220302 3.2.4
2. Chame a API.
<?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();
// Set the service based on your requirements.
$request->service = "text_moderation_service";
$arr = array('content' => 'text to be detected');
$request->serviceParameters = json_encode($arr);
if (empty($arr) || empty(trim($arr["content"]))) {
echo "text moderation content is empty";
return;
}
$config = new Config([
// Exposing your source code can leak your AccessKey pair, compromising the security of all your resources. The following sample code is for reference only. For improved security, we recommend using a more secure method, such as an STS token, for authorization. For more information, see the relevant documentation.
// Ensure that the ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variables are set.
"accessKeyId" => getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
"accessKeySecret" => getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
// Modify the region and endpoint based on your requirements.
"endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
"regionId" => "ap-southeast-1"
]);
// For better performance, we strongly recommend that you reuse the client instance to avoid establishing redundant connections.
$client = new Green($config);
// Create a RuntimeOptions instance and set runtime parameters.
$runtime = new RuntimeOptions([]);
$runtime->readTimeout = 10000;
$runtime->connectTimeout = 10000;
try {
// Call the method to get the detection result.
$response = $client->textModerationWithOptions($request, $runtime);
// Print the detection result.
print_r($response->body);
} catch (Exception $e) {
var_dump($e->getMessage());
var_dump($e->getErrorInfo());
var_dump($e->getLastException());
var_dump($e->getLastRequest());
}
Saída esperada (quando a solicitação é bem-sucedida e nenhuma violação é detectada):
AlibabaCloud\SDK\Green\V20220302\Models\TextModerationResponseBody Object
(
[code] => 200
[data] => AlibabaCloud\SDK\Green\V20220302\Models\TextModerationResponseBodyData Object
(
[labels] =>
[reason] =>
)
[message] => OK
[requestId] => ...
)
Go SDK
1. Clone o SDK.
go get github.com/alibabacloud-go/green-20220302/v3@v3.2.4
2. Chame a API.
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"
"net/http"
"os"
)
func main() {
config := &openapi.Config{
// Read credentials from environment variables.
AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
// Modify the endpoint as needed.
Endpoint: tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
/**
* The server-side end-to-end processing timeout is 10 seconds.
* If ReadTimeout is less than the server processing time, the client receives a ReadTimeout error.
*/
ConnectTimeout: tea.Int(3000),
ReadTimeout: tea.Int(6000),
}
client, _err := green.NewClient(config)
if _err != nil {
panic(_err)
}
serviceParameters, _ := json.Marshal(
map[string]interface{}{
"content": "text to be moderated",
},
)
request := green.TextModerationRequest{
Service: tea.String("text moderation service"),
ServiceParameters: tea.String(string(serviceParameters)),
}
result, _err := client.TextModeration(&request)
if _err != nil {
panic(_err)
}
statusCode := tea.IntValue(tea.ToInt(result.StatusCode))
if statusCode == http.StatusOK {
textModerationResponse := result.Body
fmt.Println("response success. response:" + textModerationResponse.String())
if tea.IntValue(tea.ToInt(textModerationResponse.Code)) == 200 {
textModerationResponseData := textModerationResponse.Data
fmt.Println("response reason:" + tea.StringValue(textModerationResponseData.Reason))
fmt.Println("response labels:" + tea.StringValue(textModerationResponseData.Labels))
}
} else {
fmt.Println("response not success. status:" + tea.ToString(statusCode))
}
}
Saída esperada (quando a solicitação é bem-sucedida e nenhuma violação é detectada):
response success. response:...
response reason:
response labels:
Node.js SDK
1. Instale o pacote.
npm install @alicloud/green20220302@3.2.4
2. Chame a API.
const RPCClient = require("@alicloud/pop-core");
async function main() {
// Reuse the client instance to avoid creating multiple connections.
var client = new RPCClient({
// Read credentials from environment variables.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
// Modify the endpoint as needed.
endpoint: "https://green-cip.ap-southeast-1.aliyuncs.com",
apiVersion: '2022-03-02'
});
var params = {
// Set the service as needed.
"Service": "text moderation service",
"ServiceParameters": JSON.stringify({
"content": "text to be detected",
})
};
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);
console.log(JSON.stringify(response));
} catch (err) {
console.log(err);
}
}
main().then(function (response) { });
Saída esperada (quando a solicitação é bem-sucedida e nenhuma violação é detectada):
{"Code":200,"Data":{"Labels":"","Reason":""},"Message":"OK","RequestId":"..."}
C# SDK
1. Adicione o pacote.
dotnet add package AlibabaCloud.SDK.Green20220302 --version 3.2.4
2. Chame a API.
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace AlibabaCloud.SDK.Green20220302
{
public class TextModerationAutoRoute
{
public static void Main(string[] args)
{
// Build the moderation request.
AlibabaCloud.SDK.Green20220302.Models.TextModerationRequest textModerationRequest =
new AlibabaCloud.SDK.Green20220302.Models.TextModerationRequest();
// Set the service as needed.
textModerationRequest.Service = "text moderation service";
Dictionary<string, object> task = new Dictionary<string, object>();
task.Add("content", "text to be detected");
if (!task.ContainsKey("content") || Convert.ToString(task["content"]).Trim() == string.Empty)
{
Console.WriteLine("text moderation content is empty");
return;
}
textModerationRequest.ServiceParameters = JsonConvert.SerializeObject(task);
// Read credentials from environment variables.
AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
{
AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
// Modify the endpoint as needed.
Endpoint = "green-cip.ap-southeast-1.aliyuncs.com",
};
// Reuse the client instance to avoid creating multiple connections.
AlibabaCloud.SDK.Green20220302.Client client = new AlibabaCloud.SDK.Green20220302.Client(config);
// Set runtime-level timeout periods (in milliseconds).
AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
runtime.ReadTimeout = 10000;
runtime.ConnectTimeout = 10000;
try
{
AlibabaCloud.SDK.Green20220302.Models.TextModerationResponse response =
client.TextModerationWithOptions(textModerationRequest, runtime);
Console.WriteLine(response.Body.RequestId);
Console.WriteLine(JsonConvert.SerializeObject(response.Body));
}
catch (Exception _err)
{
Console.WriteLine(_err);
}
}
}
}
Saída esperada (quando a solicitação é bem-sucedida e nenhuma violação é detectada):
<request-id>
{"Code":200,"Data":{"Labels":"","Reason":""},"Message":"OK","RequestId":"<request-id>"}
Próximos passos
API do serviço multilíngue do Text Moderation enhanced version 2.0 — referência completa da API para
TextModerationConfigure credentials — utilize tokens STS ou outros provedores de credenciais para cargas de trabalho em produção
OpenAPI Explorer — depure operações da API e gere código SDK online