Pārlūkot izejas kodu

增加商标名称提取功能

Sherlock 9 mēneši atpakaļ
vecāks
revīzija
82bcc441c5
5 mainītis faili ar 121 papildinājumiem un 31 dzēšanām
  1. 24 3
      agent/agent.py
  2. 25 0
      agent/config.py
  3. 30 0
      agent/glm.py
  4. 10 6
      api_test.py
  5. 32 22
      utils/api_service.py

+ 24 - 3
agent/agent.py

@@ -73,12 +73,33 @@ class Agent:
         response = response.content
         
         return response
+    
+    def get_log_from_product_images(self, image_url_list):
+        """从产品图像中获取商标信息"""
+        self.glm.set_modelname("glm-4v-plus-0111")
+        prompt = Prompt.LOGO_FROM_PRODUCTS
+        response = self.glm.images_response(prompt, image_url_list)
+        response = response.content
+        
+        return response
+        
 
 if __name__ == "__main__":
     agent = Agent()
-    image_url1 = 'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/0902/118/27466cf6-fb28-4580-9009-95a3763e06bf.jpg'
-    image_url2 = 'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg'
-    agent.product_image_similarity_judgement(image_url1, image_url2)
+    # image_url1 = 'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/0902/118/27466cf6-fb28-4580-9009-95a3763e06bf.jpg'
+    # image_url2 = 'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg'
+    # agent.product_image_similarity_judgement(image_url1, image_url2)
+    
+    image_url_list = [
+        "https://gw.alicdn.com/imgextra/O1CN01EFpxoy1JdrhyyD8Gp_!!3378851052.jpg_q95.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i2/3378851052/O1CN01N1VBKz1JdriDQ7v3s_!!3378851052.jpg_q75.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i4/3378851052/O1CN01d1T16h1JdriBxQW8j_!!3378851052.jpg_q75.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i4/3378851052/O1CN01O5Gb861JdriAyGLo0_!!3378851052.jpg_q75.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i1/3378851052/O1CN01WT8Kg81JdriDTZ4lq_!!3378851052.jpg_q75.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i2/3378851052/O1CN01v4KL0D1JdriCrG3SH_!!3378851052.jpg_q75.jpg_.webp"
+    ]
+    response = agent.get_log_from_product_images(image_url_list)
+    print(response)
     
     # ["http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/88/9b9027dd-95b7-4024-b71e-fb7cbfde16a1.jpg",
     #  "http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/0902/118/27466cf6-fb28-4580-9009-95a3763e06bf.jpg",

+ 25 - 0
agent/config.py

@@ -85,6 +85,31 @@ class Prompt:
         }}
     """
     
+    # 从产品图像中获取商标
+    LOGO_FROM_PRODUCTS = f"""
+        你是一个产品图像分析助手,需要从给定的图像中提取出包含的商标信息名称,请按照以下步骤进行分析:
+        1. 分析每张图像中是否包含商标名称信息,注意不要将店铺名称识别为商标名称,如果包含的话,请提取出商标名称。
+        2. 如果从不同图像中提取出不同的商标名称,请先对比提取出的商标名称是否代表同一个商标,比如adidas和阿迪达斯、lining和李宁,如果代表相同的商标,则合并为一个商标名称,如果不代表同一个商标,则以列表的形式返回多个商标名称。
+        最终结果返回为以下给出的json格式
+        输出结果示例:
+        以李宁为例
+        如果所有图片中均为提取到商标名称则返回:
+        {{
+            'is_contained_logo': flase,
+            'logo_infos': []
+        }}
+        如果提取到一个商标名称:
+        {{
+            'is_contained_logo': true,
+            'logo_infos': ['李宁']
+        }}
+        如果提取到多个商标名称:
+        {{
+            'is_contained_logo': true,
+            'logo_infos': ['李宁', '李宇']
+        }}
+    """
+    
     
     
 if __name__ == "__main__":

+ 30 - 0
agent/glm.py

@@ -30,6 +30,36 @@ class Glm:
         )
         return resonse.choices[0].message
     
+    def images_response(self, query, image_url_list):
+        """多图像单轮问答"""
+        content = [
+            {
+                "type": "text",
+                "text": query
+            }
+        ]
+        for image_url in image_url_list:
+            content.append(
+                {
+                    "type": "image_url",
+                    "image_url": {"url": image_url}
+                }
+            )
+        response = self.client.chat.completions.create(
+            model="glm-4v-plus-0111",
+            messages=[
+                {
+                    "role": "user",
+                    "content": content
+                }
+            ],
+            response_format={
+                "type": "json_object"
+            }
+        )
+        
+        return response.choices[0].message
+    
     def image_response(self, query, image_url1, image_url2):
         """单图像问答"""
         response = self.client.chat.completions.create(

+ 10 - 6
api_test.py

@@ -47,15 +47,19 @@ url_data = {
 }
 
 basic_data = {
-    'product_name': '男子运动卫衣舒适套头圆领长袖休闲运动卫衣',
+    'product_name': '25李宁赤兔8PRO蛇年跑步鞋男回弹减震透气竞速训练专业比赛运动鞋',
     'brand_name': '李宁',
-    'similarity_logos': ['李宇', '李柠'],
+    'similarity_logos': ["李宇", "李I宁"],
     'product_images': [
-        'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg',
-        'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg' 
+        "https://gw.alicdn.com/imgextra/O1CN01EFpxoy1JdrhyyD8Gp_!!3378851052.jpg_q95.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i2/3378851052/O1CN01N1VBKz1JdriDQ7v3s_!!3378851052.jpg_q75.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i4/3378851052/O1CN01d1T16h1JdriBxQW8j_!!3378851052.jpg_q75.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i4/3378851052/O1CN01O5Gb861JdriAyGLo0_!!3378851052.jpg_q75.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i1/3378851052/O1CN01WT8Kg81JdriDTZ4lq_!!3378851052.jpg_q75.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i2/3378851052/O1CN01v4KL0D1JdriCrG3SH_!!3378851052.jpg_q75.jpg_.webp"
     ],
-    'base_price': 200,
-    'price_percent': 0.9
+    'base_price': 0,
+    'price_percent': 0
         
 }
 

+ 32 - 22
utils/api_service.py

@@ -117,26 +117,36 @@ class ApiService:
         return result['in_list']
     
 if __name__ == '__main__':
-    url_data = {
-        'title': '休闲短裤女士运动潮流系列夏季女装裤子梭织运动裤',
-        'brand_name': '李宁',
-        'product_images': [
-            'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/0902/118/27466cf6-fb28-4580-9009-95a3763e06bf.jpg',
-            'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg'  
-        ],
-        'price': 199
-    }
-    basic_data = {
-        'product_name': '休闲短裤女士运动潮流系列夏季女装裤子梭织运动裤',
-        'brand_name': '李宁',
-        'similarity_logos': ['李宇', '李柠'],
-        'product_images': [
-            'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg',
-            'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg' 
-        ],
-        'base_price': 200,
-        'price_percent': 0.9
+    # url_data = {
+    #     'title': '休闲短裤女士运动潮流系列夏季女装裤子梭织运动裤',
+    #     'brand_name': '李宁',
+    #     'product_images': [
+    #         'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/0902/118/27466cf6-fb28-4580-9009-95a3763e06bf.jpg',
+    #         'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg'  
+    #     ],
+    #     'price': 199
+    # }
+    # basic_data = {
+    #     'product_name': '休闲短裤女士运动潮流系列夏季女装裤子梭织运动裤',
+    #     'brand_name': '李宁',
+    #     'similarity_logos': ['李宇', '李柠'],
+    #     'product_images': [
+    #         'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg',
+    #         'http://h2.appsimg.com/a.appsimg.com/upload/merchandise/pdcvis/613214/2024/1120/169/8ca15632-9cb9-40e7-8915-e6773e17a05e.jpg' 
+    #     ],
+    #     'base_price': 200,
+    #     'price_percent': 0.9
         
-    }
-    result = ApiService.low_price_judgement(url_data, basic_data)
-    print(result)
+    # }
+    # result = ApiService.low_price_judgement(url_data, basic_data)
+    # print(result)
+    image_url_list = [
+        "https://gw.alicdn.com/imgextra/O1CN01mDNtUa1uTSNizl8CS_!!2145866038.jpg_q95.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i3/2145866038/O1CN01HMNblk1uTSPJszeS0_!!2145866038.jpg_q75.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i4/2145866038/O1CN01dPZcPe1uTSSEBeiwS_!!2145866038.jpg_q75.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i3/2145866038/O1CN018tszjT1uTSNbo83rm_!!2145866038.jpg_q75.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i1/2145866038/O1CN01cWdXAM1uTSPoM4aUG_!!2145866038.jpg_q75.jpg_.webp",
+        "https://img.alicdn.com/imgextra/i1/2145866038/O1CN01Chj95b1uTSPo2MbWn_!!2145866038.jpg_q75.jpg_.webp"
+    ]
+    response = ApiService.agent.get_log_from_product_images(image_url_list)
+    print(response)