# @Author : Rocky # @File : ContentSecurityObject.py # @Time : 2023/8/18 11:02 from alibabacloud_green20220302.client import Client as Green20220302Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_green20220302 import models as green_20220302_models from alibabacloud_tea_util import models as util_models from Ansjer.config import ALI_ACCESS_KEY_ID, ALI_ACCESS_KEY_SECRET, LOGGER TEXT_ILLEGAL_LABEL_LIST = ['political_content', 'profanity', 'contraband', 'sexual_content', 'violence', 'negative_content', 'religion', 'cyberbullying'] IMAGE_ILLEGAL_LABEL_LIST = ['pornographic_adultContent', 'sexual_suggestiveContent', 'political_politicalFigure_1', 'violent_blood', 'contraband_drug'] class ContentSecurity: """ 阿里云内容安全服务类 """ def __init__(self): pass @staticmethod def create_client() -> Green20220302Client: """ 使用AK&SK初始化账号Client @return: Client @throws Exception """ config = open_api_models.Config( # 必填,您的 AccessKey ID, access_key_id=ALI_ACCESS_KEY_ID, # 必填,您的 AccessKey Secret, access_key_secret=ALI_ACCESS_KEY_SECRET ) # Endpoint 请参考 https://api.aliyun.com/product/Green config.endpoint = f'green-cip.cn-shanghai.aliyuncs.com' return Green20220302Client(config) def text_review(self, service, service_parameters): """ 文本审核 @param service: 审核服务类型 @param service_parameters: 审核服务参数集 @return: bool, True: 审核通过, False: 审核不通过 """ client = self.create_client() text_moderation_request = green_20220302_models.TextModerationRequest(service, service_parameters) runtime = util_models.RuntimeOptions() res = client.text_moderation_with_options(text_moderation_request, runtime) print(res) if res.status_code != 200: return False labels = res.body.data.labels labels_list = labels.split(',') for label in labels_list: if label in TEXT_ILLEGAL_LABEL_LIST: return False return True def image_review(self, service, service_parameters): """ 图片审核 @param service: 审核服务类型 @param service_parameters: 审核服务参数集 @return: bool, True: 审核通过, False: 审核不通过 """ client = self.create_client() image_moderation_request = green_20220302_models.ImageModerationRequest(service, service_parameters) runtime = util_models.RuntimeOptions() res = client.image_moderation_with_options(image_moderation_request, runtime) print(res) LOGGER.info('图片审核响应内容:{}'.format(res)) if res.status_code != 200: return False # 获取审核结果 result = res.body if result.code != 200: return False result_list = result.data.result # 配到风险标签且置信分高于80时返回False for result in result_list: if result.label in IMAGE_ILLEGAL_LABEL_LIST: if result.confidence >= 80: return False return True