This topic describes how to use the .NET SDK to manage custom image libraries.
Feature description
You can customize image samples for intelligent pornography detection, terrorist and political content detection, and image or video ad detection to meet personalized content moderation requirements. For more information about parameters, see Create image library API documentation.
You must use the AI Guardrails endpoint to call the service using the SDK. For more information about API endpoints, see Endpoints.
Prerequisites
Before you begin, make sure you have:
Installed the .NET dependencies. See Install .NET dependencies and use the exact .NET version specified — otherwise operation calls will fail.
An AccessKey ID and AccessKey secret for a RAM user, stored as environment variables
ALIBABA_CLOUD_ACCESS_KEY_IDandALIBABA_CLOUD_ACCESS_KEY_SECRET.
Query custom image library list
You can use the following code to query the list of image libraries associated with your account, including custom image libraries (source: MANUAL) and feedback-based image libraries (source: FEEDBACK):
using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20170823;
using System.Collections.Generic;
namespace csharp_sdk_sample
{
class Program
{
static void Main(string[] args)
{
// Load credentials from environment variables.
// To set these variables: ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET.
DefaultProfile profile = DefaultProfile.GetProfile(
"cn-shanghai",
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
DescribeImageLibRequest request = new DescribeImageLibRequest();
request.ServiceModule = "open_api";
try
{
DescribeImageLibResponse response = client.GetAcsResponse(request);
Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
List<DescribeImageLibResponse.DescribeImageLib_ImageLib> allLibs = response.ImageLibList;
List<DescribeImageLibResponse.DescribeImageLib_ImageLib> customLibs = new List<DescribeImageLibResponse.DescribeImageLib_ImageLib>();
List<DescribeImageLibResponse.DescribeImageLib_ImageLib> feedbackLibs = new List<DescribeImageLibResponse.DescribeImageLib_ImageLib>();
foreach (var lib in allLibs)
{
if ("MANUAL".Equals(lib.Source))
customLibs.Add(lib);
if ("FEEDBACK".Equals(lib.Source))
feedbackLibs.Add(lib);
}
Console.WriteLine("Custom libraries: " + JsonConvert.SerializeObject(customLibs));
Console.WriteLine("Feedback-based libraries: " + JsonConvert.SerializeObject(feedbackLibs));
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
}
}
}
Create custom image library
You can use the following code to create a custom image library:
Set different parameters based on your business scenarios.
using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20170823;
using System.Collections.Generic;
namespace csharp_sdk_sample
{
class Program
{
static void Main(string[] args)
{
DefaultProfile profile = DefaultProfile.GetProfile(
"cn-shanghai",
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
CreateImageLibRequest request = new CreateImageLibRequest();
request.ServiceModule = "open_api";
request.Name = "Pornography detection blacklist"; // Replace with your library name
request.Scene = "PORN"; // Moderation scenario (example: PORN)
request.Category = "BLACK"; // Library type: BLACK (blacklist) or WHITE (whitelist)
try
{
CreateImageLibResponse response = client.GetAcsResponse(request);
Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
}
}
}
Modify custom image library
You can use the following code to modify the name and applicable business scenario (BizType) of a custom image library:
using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20170823;
using System.Collections.Generic;
namespace csharp_sdk_sample
{
class Program
{
static void Main(string[] args)
{
DefaultProfile profile = DefaultProfile.GetProfile(
"cn-shanghai",
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
UpdateImageLibRequest request = new UpdateImageLibRequest();
request.Id = <library-id>; // Replace with your library ID
request.Name = "New name of the custom image library"; // Replace with your new name
request.BizTypes = JsonConvert.SerializeObject(new List<string> { "comment" }); // Replace with your BizTypes
request.Category = "WHITE"; // BLACK or WHITE
request.Scene = "PORN"; // Moderation scenario
try
{
UpdateImageLibResponse response = client.GetAcsResponse(request);
Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
}
}
}
Delete custom image library
You can use the following code to delete a custom image library:
When you delete a custom image library, all images in the library are also deleted.
using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20170823;
using System.Collections.Generic;
namespace csharp_sdk_sample
{
class Program
{
static void Main(string[] args)
{
DefaultProfile profile = DefaultProfile.GetProfile(
"cn-shanghai",
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
DeleteImageLibRequest request = new DeleteImageLibRequest();
request.Id = <library-id>; // Replace with your library ID
try
{
DeleteImageLibResponse response = client.GetAcsResponse(request);
Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
}
}
}
Query custom image library image list
You can use the following code to query the list of all added images in a custom image library:
using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20170823;
using System.Collections.Generic;
namespace csharp_sdk_sample
{
class Program
{
static void Main(string[] args)
{
DefaultProfile profile = DefaultProfile.GetProfile(
"cn-shanghai",
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
DescribeImageFromLibRequest request = new DescribeImageFromLibRequest();
request.ImageLibId = <library-id>; // Replace with your library ID
request.PageSize = 20;
request.CurrentPage = 1;
try
{
DescribeImageFromLibResponse response = client.GetAcsResponse(request);
Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
}
}
}
Delete custom images
You can use the following code to delete multiple custom images from a custom image library:
using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20170823;
using System.Collections.Generic;
namespace csharp_sdk_sample
{
class Program
{
static void Main(string[] args)
{
DefaultProfile profile = DefaultProfile.GetProfile(
"cn-shanghai",
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
DeleteImageFromLibRequest request = new DeleteImageFromLibRequest();
request.Ids = JsonConvert.SerializeObject(new List<int> { <image-id-1>, <image-id-2> }); // Replace with image IDs
try
{
DeleteImageFromLibResponse response = client.GetAcsResponse(request);
Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
}
}
}