1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- # 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
- from loguru import logger
- config = Config(
- # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
- # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
- # 常见获取环境变量方式:
- # contentsecurity@1894469520484605.onaliyun.com
- access_key_id='LTAI5tEv9SCKZFpTshJpi618',
- access_key_secret='7N13xskcYEJzgiRLcYO1ngEVFmTq6Z',
- # 连接超时时间 单位毫秒(ms)
- connect_timeout=10000,
- # 读超时时间 单位毫秒(ms)
- read_timeout=3000,
- region_id='cn-hangzhou',
- #endpoint='green-cip-vpc.cn-hangzhou.aliyuncs.com'
- endpoint='green-cip.cn-hangzhou.aliyuncs.com'
- )
- clt = Client(config)
- class Security:
- @classmethod
- def security(cls, content):
- """
- 内容安全审核方法
- 返回: (是否安全, 结果字典/字符串)
- """
- serviceParameters = {
- 'content': content
- }
- textModerationPlusRequest = models.TextModerationPlusRequest(
- service='llm_response_moderation_01',
- service_parameters=json.dumps(serviceParameters)
- )
- try:
- response = clt.text_moderation_plus(textModerationPlusRequest)
-
- # HTTP请求成功
- if response.status_code == 200:
- try:
- # 将响应体转换为字典格式
- result_dict = response.body.to_map()
- logger.info(f'审核成功. 结果:{result_dict}')
-
- # 业务状态码检查
- if result_dict.get('Code') == 200:
- risk_level = result_dict.get('Data', {}).get('RiskLevel', '').lower()
-
- # 风险等级判断
- if risk_level in ["high", "medium"]:
- return False, json.dumps(result_dict, ensure_ascii=False)
- return True, json.dumps(result_dict, ensure_ascii=False)
- else:
- # 业务错误
- error_msg = f"业务错误. 代码:{result_dict.get('Code')}, 消息:{result_dict.get('Message', '无')}"
- logger.error(error_msg)
- return False, error_msg
-
- except Exception as parse_error:
- # 响应解析错误
- error_msg = f"响应解析错误: {str(parse_error)}"
- logger.error(error_msg)
- return False, error_msg
-
- else:
- # HTTP请求失败
- error_msg = f"API请求失败. 状态码:{response.status_code}, 响应:{str(response)}"
- logger.error(error_msg)
- return False, error_msg
-
- except Exception as e:
- # 全局异常处理
- error_msg = f"内容审核异常: {str(e)}"
- logger.exception(error_msg)
- return False, error_msg
- if __name__ == '__main__':
- is_safe, result = Security.security("测试安全边界")
- print(f"安全状态: {is_safe}")
- print(f"详细结果: {result}")
|