Manage custom image libraries

更新时间:
复制 MD 格式

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_ID and ALIBABA_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:

Note

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:

Important

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);
            }
        }
    }
}