aliyun_security.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # coding=utf-8
  2. # python version >= 3.6
  3. from alibabacloud_green20220302.client import Client
  4. from alibabacloud_green20220302 import models
  5. from alibabacloud_tea_openapi.models import Config
  6. import json
  7. from loguru import logger
  8. config = Config(
  9. # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
  10. # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
  11. # 常见获取环境变量方式:
  12. # contentsecurity@1894469520484605.onaliyun.com
  13. access_key_id='LTAI5tEv9SCKZFpTshJpi618',
  14. access_key_secret='7N13xskcYEJzgiRLcYO1ngEVFmTq6Z',
  15. # 连接超时时间 单位毫秒(ms)
  16. connect_timeout=10000,
  17. # 读超时时间 单位毫秒(ms)
  18. read_timeout=3000,
  19. region_id='cn-hangzhou',
  20. #endpoint='green-cip-vpc.cn-hangzhou.aliyuncs.com'
  21. endpoint='green-cip.cn-hangzhou.aliyuncs.com'
  22. )
  23. clt = Client(config)
  24. class Security:
  25. @classmethod
  26. def security(cls, content):
  27. serviceParameters = {
  28. 'content': content
  29. }
  30. textModerationPlusRequest = models.TextModerationPlusRequest(
  31. service='llm_response_moderation_01',
  32. service_parameters=json.dumps(serviceParameters)
  33. )
  34. try:
  35. response = clt.text_moderation_plus(textModerationPlusRequest)
  36. if response.status_code == 200:
  37. # 将响应体转换为字典格式
  38. result_dict = response.body.to_map()
  39. logger.info('response success. result:{}'.format(result_dict))
  40. if result_dict['Code'] == 200:
  41. risk_level = result_dict['Data']['RiskLevel']
  42. if risk_level in ["high", "medium"]:
  43. return False, result_dict
  44. return True, result_dict
  45. else:
  46. logger.error('Business error. code:{}, message:{}'.format(
  47. result_dict['Code'], result_dict['Message']))
  48. return False, result_dict
  49. else:
  50. error_msg = 'API request failed. status:{}'.format(response.status_code)
  51. logger.error(error_msg)
  52. return False, {'error': error_msg}
  53. except Exception as err:
  54. logger.error(f"Error in security check: {str(err)}")
  55. return False, {'error': str(err)}
  56. if __name__ == '__main__':
  57. is_safe, result = Security.security("测试安全边界")
  58. print(f"安全状态: {is_safe}")
  59. print(f"详细结果: {result}")