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)