nlp_api.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. """
  2. @author: luojunhui
  3. """
  4. import requests
  5. from requests.exceptions import RequestException, JSONDecodeError
  6. from applications.feishuBotApi import bot
  7. def similarity_between_title_list(target_title_list: list[str], base_title_list: list[str]) -> list[list[float]]:
  8. """
  9. cal the similarity between two list of title
  10. :param target_title_list: target title_list
  11. :param base_title_list: base title_list
  12. :return: list of similarity
  13. """
  14. url = 'http://61.48.133.26:6060/nlp'
  15. url_backup = 'http://61.48.133.26:6061/nlp'
  16. body = {
  17. "data": {
  18. "text_list_a": target_title_list,
  19. "text_list_b": base_title_list
  20. },
  21. "function": "similarities_cross",
  22. "use_cache": False
  23. }
  24. try:
  25. response = requests.post(url, json=body, timeout=120)
  26. if response.status_code != 200:
  27. response = requests.post(url_backup, json=body, timeout=120)
  28. except RequestException as e:
  29. bot(
  30. title='NLP API 网络异常',
  31. detail={
  32. "error_type": type(e).__name__,
  33. "error_msg": str(e)
  34. },
  35. mention=False
  36. )
  37. return []
  38. if response.status_code != 200:
  39. bot(
  40. title='NLP API 业务异常',
  41. detail={
  42. "status_code": response.status_code,
  43. "response_text": response.text[:200] # 截取部分内容避免过大
  44. },
  45. mention=False
  46. )
  47. return []
  48. try:
  49. response_json = response.json()
  50. score_array = response_json['score_list_list']
  51. except (JSONDecodeError, KeyError) as e:
  52. bot(
  53. title='NLP响应数据异常',
  54. detail={
  55. "error_type": type(e).__name__,
  56. "raw_response": response.text[:200]
  57. },
  58. mention=False
  59. )
  60. return []
  61. return score_array