Manage custom text libraries
Use the AI Guardrails SDK for Python to create and manage custom text libraries for text anti-spam scenarios. Custom libraries let you supplement the default moderation rules with terms and patterns specific to your application.
With the SDK, you can:
Query existing term libraries and text pattern libraries
Create, modify, and delete text libraries
Add, search, and remove text entries within a library
Prerequisites
Before you begin, make sure you have:
Python dependencies installed. See Installation for the required Python version. Using the wrong version causes subsequent API calls to fail.
The Extension.Uploader utility class downloaded and imported into your project
Key concepts
Text libraries are classified along two dimensions:
| Dimension | Types |
|---|---|
| By content type | Term library (LibType: textKeyword) — matches exact keywords; Text pattern library (LibType: similarText) — matches text patterns |
| By purpose | Blacklist — blocks matching content; Whitelist — allows matching content; Review list — flags content for manual review |
| By source | Custom (Source: MANUAL) — libraries you create and manage; Feedback-based (Source: FEEDBACK) — libraries built from moderation feedback |
For a full list of supported parameters, see Get a list of text libraries.
Query text libraries
All query examples use DescribeKeywordLibRequest and filter the results by LibType, ResourceType, and Source.
Query term libraries
# coding=utf-8
import json
import os
from aliyunsdkcore import client
from aliyunsdkcore.profile import region_provider
from aliyunsdkgreen.request.v20170823 import DescribeKeywordLibRequest
# Reuse the client across requests to improve performance.
clt = client.AcsClient(
os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
"cn-shanghai"
)
region_provider.modify_point('Green', 'cn-shanghai', 'green.cn-shanghai.aliyuncs.com')
# Create a new request object for each request.
request = DescribeKeywordLibRequest.DescribeKeywordLibRequest()
request.set_ServiceModule("open_api")
response = clt.do_action_with_exception(request)
result = json.loads(response)
all_libs = result["KeywordLibList"]
term_libs = []
for lib in all_libs:
lib_type = lib["LibType"]
resource_type = lib["ResourceType"]
source = lib["Source"]
# Custom term libraries for text anti-spam
if lib_type == "textKeyword" and resource_type == "TEXT" and source == "MANUAL":
term_libs.append(lib)
# Feedback-based term libraries for text anti-spam
if lib_type == "textKeyword" and resource_type == "TEXT" and source == "FEEDBACK":
term_libs.append(lib)
print(json.dumps(term_libs))Query text pattern libraries
# coding=utf-8
import json
import os
from aliyunsdkcore import client
from aliyunsdkcore.profile import region_provider
from aliyunsdkgreen.request.v20170823 import DescribeKeywordLibRequest
clt = client.AcsClient(
os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
"cn-shanghai"
)
region_provider.modify_point('Green', 'cn-shanghai', 'green.cn-shanghai.aliyuncs.com')
request = DescribeKeywordLibRequest.DescribeKeywordLibRequest()
request.set_ServiceModule("open_api")
response = clt.do_action_with_exception(request)
result = json.loads(response)
all_libs = result["KeywordLibList"]
pattern_libs = []
for lib in all_libs:
lib_type = lib["LibType"]
resource_type = lib["ResourceType"]
source = lib["Source"]
# Custom text pattern libraries for text anti-spam
if lib_type == "similarText" and resource_type == "TEXT" and source == "MANUAL":
pattern_libs.append(lib)
# Feedback-based text pattern libraries for text anti-spam
if lib_type == "similarText" and resource_type == "TEXT" and source == "FEEDBACK":
pattern_libs.append(lib)
print(json.dumps(pattern_libs))Create a text library
Create a term library
# coding=utf-8
import os
from aliyunsdkcore import client
from aliyunsdkcore.profile import region_provider
from aliyunsdkgreen.request.v20170823 import CreateKeywordLibRequest
clt = client.AcsClient(
os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
"cn-shanghai"
)
region_provider.modify_point('Green', 'cn-shanghai', 'green.cn-shanghai.aliyuncs.com')
request = CreateKeywordLibRequest.CreateKeywordLibRequest()
request.set_ServiceModule("open_api")
request.set_Name("Term library for testing")
request.set_ResourceType("TEXT") # Text anti-spam use case
request.set_LibType("textKeyword") # Term library
request.set_Category("BLACK") # Blacklist
response = clt.do_action_with_exception(request)
print(response)Create a text pattern library
# coding=utf-8
import os
from aliyunsdkcore import client
from aliyunsdkcore.profile import region_provider
from aliyunsdkgreen.request.v20170823 import CreateKeywordLibRequest
clt = client.AcsClient(
os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
"cn-shanghai"
)
region_provider.modify_point('Green', 'cn-shanghai', 'green.cn-shanghai.aliyuncs.com')
request = CreateKeywordLibRequest.CreateKeywordLibRequest()
request.set_ServiceModule("open_api")
request.set_Name("Text pattern library for testing")
request.set_ResourceType("TEXT") # Text anti-spam use case
request.set_LibType("similarText") # Text pattern library
request.set_Category("BLACK") # Blacklist
response = clt.do_action_with_exception(request)
print(response)Modify a text library
Update the name and business scenario of an existing text library using UpdateKeywordLibRequest.
# coding=utf-8
import os
from aliyunsdkcore import client
from aliyunsdkcore.profile import region_provider
from aliyunsdkgreen.request.v20170823 import UpdateKeywordLibRequest
clt = client.AcsClient(
os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
"cn-shanghai"
)
region_provider.modify_point('Green', 'cn-shanghai', 'green.cn-shanghai.aliyuncs.com')
request = UpdateKeywordLibRequest.UpdateKeywordLibRequest()
request.set_Id(7534001)
request.set_Name('New name of the text library')
response = clt.do_action_with_exception(request)
print(response)Delete a text library
Deleting a text library permanently removes all text entries in it. Feedback-based text libraries cannot be deleted.
# coding=utf-8
import os
from aliyunsdkcore import client
from aliyunsdkcore.profile import region_provider
from aliyunsdkgreen.request.v20170823 import DeleteKeywordLibRequest
clt = client.AcsClient(
os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
"cn-shanghai"
)
region_provider.modify_point('Green', 'cn-shanghai', 'green.cn-shanghai.aliyuncs.com')
request = DeleteKeywordLibRequest.DeleteKeywordLibRequest()
request.set_Id(3353)
response = clt.do_action_with_exception(request)
print(response)Search for text entries
By default, the call returns all text entries in the specified library, paginated. Set the Keyword parameter to search for matching entries in fuzzy mode.
# coding=utf-8
import os
from aliyunsdkcore import client
from aliyunsdkcore.profile import region_provider
from aliyunsdkgreen.request.v20170823 import DescribeKeywordRequest
clt = client.AcsClient(
os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
"cn-shanghai"
)
region_provider.modify_point('Green', 'cn-shanghai', 'green.cn-shanghai.aliyuncs.com')
request = DescribeKeywordRequest.DescribeKeywordRequest()
request.set_KeywordLibId("2693")
request.set_PageSize(10)
request.set_CurrentPage(1)
response = clt.do_action_with_exception(request)
print(response)Add text entries
# coding=utf-8
import os
from aliyunsdkcore import client
from aliyunsdkcore.profile import region_provider
from aliyunsdkgreen.request.v20170823 import CreateKeywordRequest
clt = client.AcsClient(
os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
"cn-shanghai"
)
region_provider.modify_point('Green', 'cn-shanghai', 'green.cn-shanghai.aliyuncs.com')
request = CreateKeywordRequest.CreateKeywordRequest()
request.set_KeywordLibId(2693)
request.set_Keywords("['How do you do', 'Perfect']")
response = clt.do_action_with_exception(request)
print(response)Remove text entries
# coding=utf-8
import os
from aliyunsdkcore import client
from aliyunsdkcore.profile import region_provider
from aliyunsdkgreen.request.v20170823 import DeleteKeywordRequest
clt = client.AcsClient(
os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
"cn-shanghai"
)
region_provider.modify_point('Green', 'cn-shanghai', 'green.cn-shanghai.aliyuncs.com')
request = DeleteKeywordRequest.DeleteKeywordRequest()
request.set_KeywordLibId(2693)
request.set_Ids("[1,2]")
response = clt.do_action_with_exception(request)
print(response)What's next
Get a list of text libraries — full parameter reference for
DescribeKeywordLibInstallation — SDK setup and supported Python versions