agent.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. from agent import Glm, Prompt
  2. class Agent:
  3. _instance = None
  4. def __new__(cls):
  5. if not cls._instance:
  6. cls._instance = super(Agent, cls).__new__(cls)
  7. cls._instance._initialized = False
  8. return cls._instance
  9. def __init__(self):
  10. if not self._initialized:
  11. self.glm = Glm()
  12. self._initialized = True
  13. def judge_title_relation(self, basic_title, url_title):
  14. """判断基础标题与链接标题的相关性,过滤错误数据的爬取"""
  15. self.glm.set_modelname("glm-4-plus")
  16. def brand_key_word_judgement(self, brandname, title):
  17. """判断是否为关键词引流"""
  18. self.glm.set_modelname("glm-4-plus")
  19. prompt = Prompt.EXTRACT_INFO_FROM_TITLE + f"""
  20. 请根据上述逻辑,分析以下商品标题,并输出结果:
  21. 商品标题:{title}
  22. 给定的引流品牌:{brandname}"""
  23. response = self.glm.text_response(prompt)
  24. return response.content
  25. def license_product_judgement(self, title, license_list):
  26. """判断是否为未授权商品"""
  27. license_list_str = ""
  28. for product in license_list:
  29. license_list_str += f"{product}\n"
  30. self.glm.set_modelname("glm-4-plus")
  31. prompt = Prompt.LICENSE_LIST_FILTER + f"""
  32. 请根据上述逻辑,分析以下商品是否为授权生产的,并输出结果:
  33. 商品名称: {title}
  34. 已生产的产品清单:
  35. {license_list_str}
  36. 输出结果:
  37. - 如果找到匹配项则输出:
  38. ```json
  39. {{
  40. "in_list": true,
  41. "march_product": 匹配到的产品
  42. }}
  43. ```
  44. - 如果未找到匹配项则输出:
  45. ```json
  46. {{
  47. "in_list": false
  48. }}
  49. ```
  50. """
  51. response = self.glm.text_response(prompt)
  52. response = response.content.replace(' ', '').replace('\n', '').replace('\t', '').replace(":", ": ")
  53. return response
  54. def image_logo_judgement(self, logo_path, image_url):
  55. """判断图像中是否有指定品牌的logo"""
  56. self.glm.set_modelname("glm-4v-plus-0111")
  57. prompt = Prompt.IMAGE_LOGO_JUDGEMENT
  58. response = self.glm.multi_epoch_image_response(logo_path, image_url, prompt)
  59. response = response.content
  60. return response
  61. def product_image_similarity_judgement(self, image_url1, image_url2):
  62. """判断两个图像中的产品是否一致"""
  63. self.glm.set_modelname("glm-4v-plus-0111")
  64. prompt = Prompt.PRODUCT_JUDGEMENT
  65. response = self.glm.image_response(prompt, image_url1, image_url2)
  66. response = response.content
  67. return response
  68. def get_log_from_product_images(self, image_url_list):
  69. """从产品图像中获取商标信息"""
  70. self.glm.set_modelname("glm-4v-plus-0111")
  71. prompt = Prompt.LOGO_FROM_PRODUCTS
  72. response = self.glm.images_response(prompt, image_url_list)
  73. response = response.content
  74. return response
  75. def multi_products_images_similarity_judgement(self, product_image_url_list, basic_product_image_url_list):
  76. self.glm.set_modelname("glm-4v-plus-0111")
  77. prompt = Prompt.MULTI_PRODUCT_JUDGEMENT
  78. response = self.glm.multi_images_similarity_judge(product_image_url_list, basic_product_image_url_list, prompt)
  79. response = response.content
  80. return response
  81. if __name__ == "__main__":
  82. agent = Agent()
  83. # image_url1 = 'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/0902/118/27466cf6-fb28-4580-9009-95a3763e06bf.jpg'
  84. # image_url2 = 'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg'
  85. # agent.product_image_similarity_judgement(image_url1, image_url2)
  86. image_url_list = [
  87. "https://gw.alicdn.com/imgextra/O1CN01EFpxoy1JdrhyyD8Gp_!!3378851052.jpg_q95.jpg_.webp",
  88. "https://img.alicdn.com/imgextra/i2/3378851052/O1CN01N1VBKz1JdriDQ7v3s_!!3378851052.jpg_q75.jpg_.webp",
  89. "https://img.alicdn.com/imgextra/i4/3378851052/O1CN01d1T16h1JdriBxQW8j_!!3378851052.jpg_q75.jpg_.webp",
  90. "https://img.alicdn.com/imgextra/i4/3378851052/O1CN01O5Gb861JdriAyGLo0_!!3378851052.jpg_q75.jpg_.webp",
  91. "https://img.alicdn.com/imgextra/i1/3378851052/O1CN01WT8Kg81JdriDTZ4lq_!!3378851052.jpg_q75.jpg_.webp",
  92. "https://img.alicdn.com/imgextra/i2/3378851052/O1CN01v4KL0D1JdriCrG3SH_!!3378851052.jpg_q75.jpg_.webp"
  93. ]
  94. response = agent.get_log_from_product_images(image_url_list)
  95. print(response)
  96. # ["http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/88/9b9027dd-95b7-4024-b71e-fb7cbfde16a1.jpg",
  97. # "http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/0902/118/27466cf6-fb28-4580-9009-95a3763e06bf.jpg",
  98. # "http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg",
  99. # "http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/91/d42ae626-8606-4e29-8a75-a247ab6be790.jpg"]