| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- import sys
- # print(sys.path)
- # sys.path.append("/data/data/luosy/project/sku_search")
- import time
- import os
- from PIL import Image
- import uuid
- from prompt import *
- from llm import *
- import json
- from conf import *
- from flask import Flask, request, jsonify
- # app = Flask(__name__)
- plugins = {
- "ch_en_selling_points":get_ch_en_selling_points,
- "en_ch_selling_points":get_en_ch_selling_points,
- "ch_en_selling_title":get_ch_en_selling_title,
- "en_ch_selling_points_his":get_en_ch_selling_points_his
- }
- def search_json_files(filename):
- directory = "/data/data/luosy/project/sku_search/database/meta"
- data = {}
- # im=Image.new('RGB', (800, 800), 'white')
- for file in os.listdir(directory):
- if file.endswith('.json') and filename in file:
- with open(os.path.join(directory, file), 'r') as f:
- data = json.load(f)
- if data =={}:
- return None,"暂无数据","暂无数据","暂无数据","暂无数据","暂无数据"
- return data["商品图像"], data["价格"], data["色号"], data["成分"], data["关键词"], data["商品细节"]
- def is_valid_response(response):
- """
- 检查响应是否是有效的JSON格式且包含所需字段
- """
- try:
- response_dict = json.loads(response)
- required_fields = ["服装描述(中文)", "服装描述(英文)", "3个关键点(英文)"]
- return all(field in response_dict for field in required_fields)
- except Exception as e:
- return False
- def extract_response_values(response):
- """
- 从响应中提取各个字段的值
- Args:
- response: JSON格式的响应字符串
- Returns:
- tuple: (中文描述, 英文描述, 关键点)
- """
- try:
- response_dict = json.loads(response)
- cn_desc = response_dict.get("服装描述(中文)", "")
- en_desc = response_dict.get("服装描述(英文)", "")
- key_points = response_dict.get("3个关键点(英文)", "")
- return cn_desc, en_desc, key_points
- except Exception as e:
- return "", "", ""
- def generate_text(plm_info,img,graphic_label=None,method="en_ch_selling_points_his",plat="ali",model_name="mm_tyqw"):
- his="""Embrace the spirit of freedom with this Hanma denim\nMeet Aria, your new wardrobe staple that exudes elegance and comfort\nEmbrace the elegance of this 16 momme mulberry silk wide-leg pant\nMeet your new best friend, the ultra-lightweight and versatile 'Transformer' down jacket\nEmbrace the allure of this enchanting blouse, where every detail whispers sophistication\nMeet Gloria\nDiscover Gloria"""
- if graphic_label:
- plm_info+="\n以下是该衣服的关键点:"+graphic_label
- if plat=="ali":
- key=ali_ky
- model=ali_model[model_name]
- else:
- key=doubao_ky
- model=doubao_model[model_name]
- usrp = plugins[method](plm_info,his)
- llm=llm_request(*key,model)
- for _ in range(3):
- try:
- result = llm.llm_mm_request(usrp,img)
- print(result)
- if is_valid_response(result):
- ch,en,kw=extract_response_values(result)
- break
- except Exception as e:
- print(f"Attempt failed with error: {str(e)}")
- # result={"descr":en,"keywords":kw}
- return ch,en,kw
- def gen_title(info,tags=None,referencr_title=None,method="ch_en_selling_title",plat="doubao",model_name="text_ds"):
-
- if tags:
- tags_sen=",".join(tags)
- info="以下是该衣服的关键点:"+tags_sen
- if referencr_title:
- info="\n请以这条标题样例的结构作为借鉴来写这条标题:"+referencr_title
- sysp,usrp = plugins[method](info)
- if plat=="ali":
- key=ali_ky
- model=ali_model[model_name]
- else:
- key=doubao_ky
- model=doubao_model[model_name]
-
- llm=llm_request(*key,model)
- res=llm.llm_text_request(usrp,sysp)
- res_dict = json.loads(res)
- return {"title":res_dict["en_tile"]}
- if __name__ == "__main__":
- id_image,id_price, id_color, id_ingredient, id_selling_point, id_details=search_json_files("1A6H4K7V0")
- id_image=id_image[2:]
- id_image=os.path.join("/data/data/luosy/project/sku_search",id_image)
- print(id_details,id_image)
- result=generate_text(id_details,id_image)
- print(result)
-
|