chat_v2.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import sys
  2. # print(sys.path)
  3. # sys.path.append("/data/data/luosy/project/sku_search")
  4. import time
  5. import os
  6. from PIL import Image
  7. import uuid
  8. from prompt import *
  9. from llm import *
  10. import json
  11. from conf import *
  12. from flask import Flask, request, jsonify
  13. # app = Flask(__name__)
  14. plugins = {
  15. "ch_en_selling_points":get_ch_en_selling_points,
  16. "en_ch_selling_points":get_en_ch_selling_points,
  17. "ch_en_selling_title":get_ch_en_selling_title,
  18. "en_ch_selling_points_his":get_en_ch_selling_points_his
  19. }
  20. def search_json_files(filename):
  21. directory = "/data/data/luosy/project/sku_search/database/meta"
  22. data = {}
  23. # im=Image.new('RGB', (800, 800), 'white')
  24. for file in os.listdir(directory):
  25. if file.endswith('.json') and filename in file:
  26. with open(os.path.join(directory, file), 'r') as f:
  27. data = json.load(f)
  28. if data =={}:
  29. return None,"暂无数据","暂无数据","暂无数据","暂无数据","暂无数据"
  30. return data["商品图像"], data["价格"], data["色号"], data["成分"], data["关键词"], data["商品细节"]
  31. def is_valid_response(response):
  32. """
  33. 检查响应是否是有效的JSON格式且包含所需字段
  34. """
  35. try:
  36. response_dict = json.loads(response)
  37. required_fields = ["服装描述(中文)", "服装描述(英文)", "3个关键点(英文)"]
  38. return all(field in response_dict for field in required_fields)
  39. except Exception as e:
  40. return False
  41. def extract_response_values(response):
  42. """
  43. 从响应中提取各个字段的值
  44. Args:
  45. response: JSON格式的响应字符串
  46. Returns:
  47. tuple: (中文描述, 英文描述, 关键点)
  48. """
  49. try:
  50. response_dict = json.loads(response)
  51. cn_desc = response_dict.get("服装描述(中文)", "")
  52. en_desc = response_dict.get("服装描述(英文)", "")
  53. key_points = response_dict.get("3个关键点(英文)", "")
  54. return cn_desc, en_desc, key_points
  55. except Exception as e:
  56. return "", "", ""
  57. def generate_text(plm_info,img,graphic_label=None,method="en_ch_selling_points_his",plat="ali",model_name="mm_tyqw"):
  58. 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"""
  59. if graphic_label:
  60. plm_info+="\n以下是该衣服的关键点:"+graphic_label
  61. if plat=="ali":
  62. key=ali_ky
  63. model=ali_model[model_name]
  64. else:
  65. key=doubao_ky
  66. model=doubao_model[model_name]
  67. usrp = plugins[method](plm_info,his)
  68. llm=llm_request(*key,model)
  69. for _ in range(3):
  70. try:
  71. result = llm.llm_mm_request(usrp,img)
  72. print(result)
  73. if is_valid_response(result):
  74. ch,en,kw=extract_response_values(result)
  75. break
  76. except Exception as e:
  77. print(f"Attempt failed with error: {str(e)}")
  78. # result={"descr":en,"keywords":kw}
  79. return ch,en,kw
  80. def gen_title(info,tags=None,referencr_title=None,method="ch_en_selling_title",plat="doubao",model_name="text_ds"):
  81. if tags:
  82. tags_sen=",".join(tags)
  83. info="以下是该衣服的关键点:"+tags_sen
  84. if referencr_title:
  85. info="\n请以这条标题样例的结构作为借鉴来写这条标题:"+referencr_title
  86. sysp,usrp = plugins[method](info)
  87. if plat=="ali":
  88. key=ali_ky
  89. model=ali_model[model_name]
  90. else:
  91. key=doubao_ky
  92. model=doubao_model[model_name]
  93. llm=llm_request(*key,model)
  94. res=llm.llm_text_request(usrp,sysp)
  95. res_dict = json.loads(res)
  96. return {"title":res_dict["en_tile"]}
  97. if __name__ == "__main__":
  98. id_image,id_price, id_color, id_ingredient, id_selling_point, id_details=search_json_files("1A6H4K7V0")
  99. id_image=id_image[2:]
  100. id_image=os.path.join("/data/data/luosy/project/sku_search",id_image)
  101. print(id_details,id_image)
  102. result=generate_text(id_details,id_image)
  103. print(result)