本文介紹AI安全護欄SDK接入的方式。
步驟一:開通服務
前往AI安全護欄產品開通服務頁面,開通AI安全護欄產品服務。預設付費方式是按量後付費,且按照實際用量結算當日費用,不調用服務不收費。介面接入使用後系統會按使用量自動出賬。
步驟二:為RAM使用者授權
在接入SDK或者API之前,您需要為RAM使用者授權。您可以為阿里雲帳號和RAM使用者建立一個存取金鑰(AccessKey)。在調用阿里雲API時您需要使用AccessKey完成身分識別驗證。擷取方式,請參見擷取AccessKey。
操作步驟
步驟三:安裝並接入SDK
目前支援的接入地區如下:
地區 | 外網接入地址 | 內網接入地址 |
如果需要其他語言的SDK範例程式碼,您可以通過OpenAPI開發人員門戶OpenAPI開發人員門戶線上調試工具調試API介面,該工具會自動產生相應API的SDK調用範例程式碼。
阿里雲SDK代碼通過定義ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET環境變數來建立預設的訪問憑證。調用介面時,程式直接存取憑證,讀取您的存取金鑰(即AccessKey)並自動完成鑒權。您在接入SDK程式碼範例之前,請先配置環境變數。具體操作,請參見身分識別驗證配置。
步驟三:安裝並接入SDK
目前支援的接入地區如下:
地區 | 外網接入地址 | 內網接入地址 |
新加坡 | green-cip.ap-southeast-1.aliyuncs.com | green-cip-vpc.ap-southeast-1.aliyuncs.com |
如果需要其他語言的SDK範例程式碼,您可以通過OpenAPI開發人員門戶OpenAPI開發人員門戶線上調試工具調試API介面,該工具會自動產生相應API的SDK調用範例程式碼。
阿里雲SDK代碼通過定義ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET環境變數來建立預設的訪問憑證。調用介面時,程式直接存取憑證,讀取您的存取金鑰(即AccessKey)並自動完成鑒權。您在接入SDK程式碼範例之前,請先配置環境變數。具體操作,請參見身分識別驗證配置。
範例程式碼
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.21.0</version>
</dependency>2、接入Java SDK 程式碼範例。
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.green20220302.models.MultiModalGuardRequest;
import com.aliyun.green20220302.models.MultiModalGuardResponse;
import com.aliyun.green20220302.models.MultiModalGuardResponseBody;
import com.aliyun.teaopenapi.models.Config;
import java.util.Collections;
public class MultiModalGuardDemo {
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(10000);
//串連時逾時時間,單位毫秒(ms)。
config.setConnectTimeout(3000);
//設定http代理。
//config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
//設定https代理。
//config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
com.aliyun.green20220302.Client client = new com.aliyun.green20220302.Client(config);
JSONObject serviceParameters = new JSONObject();
serviceParameters.put("content", "測試常值內容");
serviceParameters.put("imageUrls", Collections.singletonList("https://img.alicdn.com/tfs/xxxxxxxxxx001.png"));
MultiModalGuardRequest multiModalGuardRequest = new MultiModalGuardRequest();
// 檢測類型
multiModalGuardRequest.setService("text_img_security_check");
multiModalGuardRequest.setServiceParameters(serviceParameters.toJSONString());
try {
MultiModalGuardResponse response = client.multiModalGuard(multiModalGuardRequest);
if (response.getStatusCode() == 200) {
MultiModalGuardResponseBody 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) {
MultiModalGuardResponseBody.MultiModalGuardResponseBodyData data = result.getData();
System.out.println(JSON.toJSONString(data, true));
} else {
System.out.println("multi modal guard 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.21.22、接入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-shanghai',
endpoint='green-cip.cn-shanghai.aliyuncs.com'
)
clt = Client(config)
serviceParameters = {
'content': '測試常值內容',
'imageUrls': ['https://img.alicdn.com/tfs/xxxxxxxxxx001.png']
}
multiModalGuardRequest = models.MultiModalGuardRequest(
# 檢測類型
service='text_img_security_check',
service_parameters=json.dumps(serviceParameters)
)
try:
response = clt.multi_modal_guard(multiModalGuardRequest)
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-202203022、接入PHP SDK 程式碼範例。
<?php
require('vendor/autoload.php');
use AlibabaCloud\Dara\Models\RuntimeOptions;
use AlibabaCloud\SDK\Green\V20220302\Models\MultiModalGuardRequest;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
use Darabonba\OpenApi\Models\Config;
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 MultiModalGuardRequest();
$request->service = "text_img_security_check";
$serviceParameters = array("content" => "測試內容", "imageUrls" => ["https://img.alicdn.com/tfs/xxxxxxxxxx001.png"]);
$request->serviceParameters = json_encode($serviceParameters);
$runtime = new RuntimeOptions();
$runtime->readTimeout = 10000;
$runtime->connectTimeout = 3000;
try {
$response = $client->multiModalGuardWithOptions($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("multi modal guard 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-202203022、接入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(10000),
}
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": "測試內容",
"imageUrls": [1]string{"https://img.alicdn.com/tfs/xxxxxxxxxx001.png"},
},
)
request := green20220302.MultiModalGuardRequest{
Service: tea.String("text_img_security_check"),
ServiceParameters: tea.String(string(serviceParameters)),
}
result, _err := client.MultiModalGuardWithOptions(&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("multi modal guard not success. code:%d\n", *body.Code)
return
}
data := body.Data
fmt.Printf("multi modal guard data:%s\n", *data)
}