|
|
@@ -11,6 +11,7 @@ from src.models.product_model import (
|
|
|
TrafficKeywordResult, ProductImageInfo,
|
|
|
SearchAmazoneKeyResult, ProductBaseInfo, Variant
|
|
|
)
|
|
|
+from llama_index.llms.openai import OpenAI
|
|
|
from src.manager.core.db_mongo import BaseMongoManager
|
|
|
from utils.logu import get_logger
|
|
|
from src.models.field_config import FieldConfig
|
|
|
@@ -93,7 +94,27 @@ def get_field_descriptions(
|
|
|
"""
|
|
|
return field_config.get_model_fields(model_class, model_name)
|
|
|
|
|
|
-async def test_product_mongo():
|
|
|
+def format_output(fields_desc: dict, format_type: str = "json"):
|
|
|
+ """根据字段描述生成输出格式
|
|
|
+
|
|
|
+ Args:
|
|
|
+ fields_desc: 字段描述字典
|
|
|
+ format_type: 输出格式类型(json/human)
|
|
|
+
|
|
|
+ Returns:
|
|
|
+ 格式化后的输出模板
|
|
|
+ """
|
|
|
+ if format_type == "human":
|
|
|
+ # 动态生成human-readable格式
|
|
|
+ lines = []
|
|
|
+ for field, desc in fields_desc.items():
|
|
|
+ lines.append(f"{desc}: {{{field}}}")
|
|
|
+ return "\n".join(lines)
|
|
|
+ else:
|
|
|
+ # JSON格式返回字段名到空值的映射
|
|
|
+ return [{k: "" for k in fields_desc.keys()}]
|
|
|
+
|
|
|
+async def test_product_mongo(format_type: str = "json"):
|
|
|
db_mongo = BaseMongoManager()
|
|
|
await db_mongo.initialize()
|
|
|
product = await Product.find_one(Product.basic_info.name == "电线保护套")
|
|
|
@@ -104,8 +125,17 @@ async def test_product_mongo():
|
|
|
product_info_desc = get_field_descriptions(ProductImageInfo)
|
|
|
keyword_result_desc = get_field_descriptions(TrafficKeywordResult)
|
|
|
|
|
|
- output_format = [{"asin": "", "main_key":"", "monthly_searches":"", "reason":""}]
|
|
|
- # logger.info(f"competitor_data {competitor_data}")
|
|
|
+ # 定义输出字段描述
|
|
|
+ output_fields = {
|
|
|
+ "asin": "商品(竞品)编号",
|
|
|
+ "main_key": "主要关键词",
|
|
|
+ "monthly_searches": "月搜索量",
|
|
|
+ "reason": "选择理由"
|
|
|
+ }
|
|
|
+ format_type = 'human'
|
|
|
+ # 生成输出格式
|
|
|
+ output_format = format_output(output_fields, format_type)
|
|
|
+
|
|
|
logger.info(f"competitor_desc {competitor_desc}")
|
|
|
logger.info(f"product_info_desc {product_info_desc}")
|
|
|
logger.info(f"keyword_result_desc {keyword_result_desc}")
|
|
|
@@ -124,13 +154,14 @@ async def test_product_mongo():
|
|
|
{output_format}
|
|
|
'''
|
|
|
text_qa_template = PromptTemplate(analyz_main_keyword_template_str)
|
|
|
- logger.info(f"{text_qa_template.format(
|
|
|
+ formatted_output = text_qa_template.format(
|
|
|
desc=(competitor_desc, product_info_desc, keyword_result_desc),
|
|
|
product_name=product_name,
|
|
|
competitor_data=competitor_data,
|
|
|
competitor_count=len(competitor_data),
|
|
|
output_format=output_format,
|
|
|
-)}")
|
|
|
+ )
|
|
|
+ logger.info(formatted_output)
|
|
|
def main():
|
|
|
asyncio.run(test_product_mongo())
|
|
|
|