Blame view

offline/product_understanding/README.md 5.17 KB
46f8dd12   tangwang   1. add prod under...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
  # 商品品类分析脚本
  
  ## 功能说明
  
  这个脚本用于批量分析商品标题,提取商品的品类、适用人群、标签、场景、季节和材质/功能等信息。
  
  ### 主要特性
  
  1. **批量处理**:每次处理20条数据,提高效率
  2. **完整日志**:记录所有API请求、响应和解析结果
  3. **断点续传**:每处理完一个批次自动保存,支持中断后继续
  4. **ID映射**:使用序号1-20,最后映射回原始ID
  5. **Markdown解析**:高效解析LLM返回的markdown表格
  
  ## 输出字段
  
  | 字段 | 说明 | 示例 |
  |------|------|------|
  | id | 原始商品ID | 107365 |
  | title | 原始英文标题 | Sunglasses Men Polarized... |
  | title_cn | 中文标题 | 男士偏光飞行员太阳镜 |
  | category_path | 品类路径(大类>细分) | 配件>眼镜>太阳镜 |
  | tags | 细分标签 | 偏光,金属框,复古 |
  | target_audience | 适用人群 | 男女通用,成人 |
  | usage_scene | 使用场景 | 驾驶,钓鱼,户外 |
  | season | 适用季节 | 四季 |
  | key_attributes | 关键属性 | UV400防护,防眩光 |
  | material | 材质说明 | 金属框架,树脂镜片 |
  | features | 功能特点 | 偏光防眩,轻量化设计 |
  | selling_points | 商品卖点 | 专业偏光镜片,有效过滤眩光,适合驾驶和户外运动 |
  
  ## 安装依赖
  
  ```bash
  pip install requests
  ```
  
  ## 使用方法
  
  ### 1. 设置API密钥
  
  ```bash
  export DASHSCOPE_API_KEY="your_api_key_here"
  ```
  
  ### 2. 测试运行(处理前40条)
  
  ```bash
  # 创建测试数据
  python test_process.py
  
  # 运行测试脚本
  python process_products_test.py
  ```
  
  ### 3. 正式运行(处理全部数据)
  
  ```bash
  python process_products.py
  ```
  
  ## 文件结构
  
  ```
  .
  ├── saas_170_products.csv          # 输入文件(原始数据)
  ├── process_products.py            # 主处理脚本
  ├── test_process.py                # 测试准备脚本
  ├── output_logs/                   # 输出目录
  │   ├── products_analyzed.csv     # 最终结果(CSV格式)
  │   └── logs/                      # 日志目录
  │       ├── process_*.log          # 主日志文件
  │       └── batch_*.json           # 每个批次的详细日志
  │           ├── input_products     # 输入数据
  │           ├── raw_response       # 原始响应
  │           ├── full_response_json # 完整API响应JSON
  │           ├── parsed_results     # 解析后的markdown表格
  │           └── final_results      # 最终格式化结果
  ```
  
  ## 日志说明
  
  每个批次的JSON日志包含:
  
  1. **input_products**: 输入的商品列表(使用临时序号1-20)
  2. **raw_response**: LLM返回的原始markdown文本
  3. **full_response_json**: 完整的API响应(包括usage、model等)
  4. **parsed_results**: 从markdown解析出的结构化数据
  5. **final_results**: 映射回原始ID后的最终结果
  
  ## 配置参数
  
  可以在脚本开头修改以下参数:
  
  ```python
  BATCH_SIZE = 20              # 每批处理数量
  MODEL_NAME = "qwen-turbo"    # 模型名称
  INPUT_FILE = "saas_170_products.csv"  # 输入文件
  OUTPUT_FILE = "output_logs/products_analyzed.csv"  # 输出文件
  ```
  
  ## 注意事项
  
  1. 确保 `DASHSCOPE_API_KEY` 环境变量已设置
  2. 处理4万条数据约需2000次API调用,请确保API配额充足
  3. 每个批次会自动保存,可随时中断和恢复
  4. 日志文件可能较大,请确保磁盘空间充足
  
  ## 预计时间
  
  - 每批次约10-15秒
  - 总批次约2270批(45389条 ÷ 20)
  - 预计总时间:6-9小时
  
  ## 结果格式示例
  
  ```csv
  id,title,title_cn,category_path,tags,target_audience,usage_scene,season,key_attributes,material,features,selling_points
  107365,"Sunglasses Men Polarized...","男士偏光飞行员太阳镜","配件>眼镜>太阳镜","偏光,金属框,复古","男女通用,成人","驾驶,钓鱼,户外","四季","UV400防护,防眩光","金属框架,树脂镜片","偏光防眩,轻量化","专业偏光镜片,有效过滤眩光,适合驾驶和户外运动"
  107366,"Nintendo Switch™...","任天堂Switch游戏机","电子产品>游戏机>掌机","家用,便携,双人","通用,青少年","家庭娱乐,聚会,旅行","四季","无线连接,HD震动","电子元件,塑料","便携设计,多人游戏","任天堂官方正品,支持多种游戏模式,适合家庭娱乐"
  ```
  
  ## 故障排查
  
  ### API密钥错误
  ```
  Error: DASHSCOPE_API_KEY environment variable not set!
  ```
  解决:设置环境变量 `export DASHSCOPE_API_KEY="your_key"`
  
  ### API请求失败
  检查日志文件中的详细错误信息,可能原因:
  - API配额不足
  - 网络连接问题
  - 代理设置问题(脚本已自动禁用代理)
  - 请求格式错误
  
  脚本已内置重试机制(最多重试3次,间隔5秒),可以自动处理临时网络问题。
  
  ### 解析失败
  查看 `batch_*.json` 日志中的 `raw_response` 字段,检查LLM返回格式是否符合预期
  
  ### 代理连接错误
  如果遇到代理连接错误:
  1. 脚本已自动设置 `NO_PROXY=*` 环境变量
  2. 脚本已在请求中明确禁用代理
  3. 如果仍有问题,手动取消系统代理设置:
     ```bash
     unset http_proxy
     unset https_proxy
     unset HTTP_PROXY
     unset HTTPS_PROXY
     ```