diff --git a/init.py b/init.py
new file mode 100644
index 0000000000000000000000000000000000000000..45cff07e5a3e96d66edc12e46b548b64f23dfc83
--- /dev/null
+++ b/init.py
@@ -0,0 +1,690 @@
+from flask import Flask, render_template_string, request, jsonify
+from main import SmallApplianceAgent
+
+app = Flask(__name__)
+
+# 创建跨境小家电智能选品实例
+try:
+ agent = SmallApplianceAgent()
+ print("跨境小家电智能选品实例创建成功")
+except Exception as e:
+ print(f"创建跨境小家电智能选品实例失败: {str(e)}")
+ agent = None
+
+# HTML模板
+html_template = '''
+
+
+
+
+
+ 跨境小家电智能选品
+
+
+
+
+
+ 跨境跨境小家电智能选品
+ 专业的小家电选品分析,助您拓展跨境电商市场
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
您好!我是跨境跨境小家电智能选品,很高兴为您服务。我可以帮助您:
+
+ - 分析小家电市场趋势
+ - 推荐适合不同市场的产品
+ - 提供选品策略和建议
+
+ 您可以直接问我问题,或者使用下方的快速选项。
+
+
刚刚
+
+
+
+
+
厨房小家电北美市场趋势
+
个人护理电器东南亚市场
+
家居清洁电器选品策略
+
户外电器热门产品
+
+
+
+
+
+
+
+
+
+
+
+
+
+'''
+
+# API路由
+@app.route('/api/select-products', methods=['POST'])
+def select_products():
+ """选品API"""
+ if agent is None:
+ return jsonify({"error": "智能助手实例未初始化,请检查模型配置"}), 500
+
+ data = request.get_json()
+ category = data.get('category')
+ market = data.get('market')
+
+ if not category or not market:
+ return jsonify({"error": "缺少必要的选品参数"}), 400
+
+ try:
+ result = agent.select_products(category, market)
+ return jsonify(result)
+ except Exception as e:
+ return jsonify({"error": str(e)}), 500
+
+@app.route('/api/chat', methods=['POST'])
+def chat():
+ """聊天API"""
+ if agent is None:
+ return jsonify({"error": "智能助手实例未初始化,请检查模型配置"}), 500
+
+ data = request.get_json()
+ message = data.get('message')
+
+ if not message:
+ return jsonify({"error": "缺少消息内容"}), 400
+
+ try:
+ response = agent.chat(message)
+ return jsonify({"response": response})
+ except Exception as e:
+ return jsonify({"error": str(e)}), 500
+
+@app.route('/', methods=['GET'])
+def index():
+ """主页"""
+ return render_template_string(html_template)
+
+if __name__ == "__main__":
+ # 运行Flask应用(使用端口8081,因为8080已被占用)
+ app.run(debug=True, host='0.0.0.0', port=8081)
diff --git a/main.py b/main.py
new file mode 100644
index 0000000000000000000000000000000000000000..c7484de3ab46e1aac1b981978382859edff89a90
--- /dev/null
+++ b/main.py
@@ -0,0 +1,291 @@
+import os
+import json
+from datetime import datetime
+from lazyllm import OnlineChatModule, WebModule, pipeline, TrainableModule
+import re
+
+# 跨境小家电智能选品Agent
+class SmallApplianceAgent:
+ def __init__(self):
+ # 初始化LazyLLM聊天模块
+ try:
+ # 首先尝试使用OnlineChatModule
+ self.chat_module = self._init_local_model()
+ print(f"成功加载模型")
+ except Exception as e:
+ print(f"无法初始化模型: {e}")
+ raise Exception("无法初始化模型,请确保已正确配置API密钥或本地模型") from e
+
+ # 小家电类别数据
+ self.product_categories = {
+ "厨房小家电": {
+ "subcategories": ["电饭煲", "电磁炉", "电热水壶", "咖啡机", "搅拌机", "面包机", "空气炸锅", "电烤箱"],
+ "features": ["多功能", "节能", "智能控制", "安全设计"]
+ },
+ "个人护理电器": {
+ "subcategories": ["电吹风", "直发器", "卷发棒", "电动牙刷", "剃须刀", "美容仪", "按摩器"],
+ "features": ["便携性", "多功能", "安全设计", "外观设计"]
+ },
+ "家居清洁电器": {
+ "subcategories": ["吸尘器", "扫地机器人", "拖地机", "空气净化器", "加湿器", "除湿机"],
+ "features": ["智能控制", "高效清洁", "静音设计", "节能"]
+ },
+ "生活电器": {
+ "subcategories": ["电风扇", "电暖器", "电热毯", "电蚊拍", "台灯", "护眼灯"],
+ "features": ["节能", "安全设计", "便携性", "外观设计"]
+ },
+ "户外电器": {
+ "subcategories": ["便携烧烤炉", "户外电源", "便携冰箱", "太阳能充电器", "露营灯"],
+ "features": ["便携性", "耐用性", "多功能", "环保"]
+ }
+ }
+
+ # 目标市场数据
+ self.target_markets = {
+ "北美": {
+ "countries": ["美国", "加拿大"],
+ "preferences": ["高品质", "智能功能", "节能认证", "安全标准"],
+ "price_sensitivity": "中低",
+ "logistics_cost_factor": 1.2
+ },
+ "欧洲": {
+ "countries": ["德国", "英国", "法国", "意大利", "西班牙"],
+ "preferences": ["环保认证", "能效等级", "设计感", "安全标准"],
+ "price_sensitivity": "中",
+ "logistics_cost_factor": 1.3
+ },
+ "东南亚": {
+ "countries": ["新加坡", "马来西亚", "泰国", "越南", "菲律宾"],
+ "preferences": ["性价比", "多功能", "耐用性", "本地化适配"],
+ "price_sensitivity": "高",
+ "logistics_cost_factor": 0.8
+ },
+ "日本": {
+ "countries": ["日本"],
+ "preferences": ["精致设计", "高品质", "智能功能", "节能"],
+ "price_sensitivity": "中",
+ "logistics_cost_factor": 1.4
+ }
+ }
+
+ # 构建选品流程
+ self.selection_pipeline = self._build_selection_pipeline()
+
+ # 构建对话流程
+ self.chat_pipeline = self._build_chat_pipeline()
+
+ def _init_local_model(self):
+ """初始化本地模型"""
+ try:
+ # 尝试从环境变量获取API密钥
+ api_key = os.environ.get("DOUBAO_API_KEY") or os.environ.get("LAZYLLM_DOUBAO_API_KEY") or os.environ.get("OPENAI_API_KEY")
+ if api_key:
+ print("检测到环境变量中的API密钥,使用在线模型")
+ try:
+ # 优先尝试豆包模型
+ if os.environ.get("DOUBAO_API_KEY") or os.environ.get("LAZYLLM_DOUBAO_API_KEY"):
+ model = OnlineChatModule(
+ source="doubao",
+ api_key=api_key
+ )
+ else:
+ # 如果没有豆包密钥但有OpenAI密钥,尝试OpenAI
+ model = OnlineChatModule(
+ source="openai",
+ api_key=api_key
+ )
+
+ # 测试API密钥是否有效
+ try:
+ test_response = model("测试")
+ print("API密钥验证成功,使用在线模型")
+ return model
+ except Exception as test_error:
+ print(f"API密钥验证失败: {str(test_error)}")
+ print("将尝试其他模型选项")
+ # 继续尝试其他选项
+ except Exception as api_error:
+ print(f"使用API密钥初始化在线模型失败: {str(api_error)}")
+ print("将尝试其他模型选项")
+ # 继续尝试其他选项
+
+ # 尝试加载本地模型
+ local_model_path = os.environ.get("LOCAL_MODEL_PATH")
+ if local_model_path:
+ if os.path.exists(local_model_path):
+ print(f"尝试加载本地模型: {local_model_path}")
+ try:
+ model = TrainableModule(local_model_path)
+ # 尝试启动模型
+ try:
+ model.start()
+ print("本地模型启动成功")
+ except Exception as start_error:
+ print(f"本地模型启动失败: {str(start_error)}")
+ print("将尝试使用在线模型作为后备")
+ raise start_error
+ return model
+ except Exception as e:
+ print(f"加载本地模型失败: {str(e)}")
+ else:
+ print(f"本地模型路径不存在: {local_model_path}")
+
+ # 尝试使用常见的本地模型路径
+ common_model_paths = [
+ os.path.expanduser("~/.cache/huggingface/hub"),
+ "/models",
+ "./models"
+ ]
+
+ for path in common_model_paths:
+ if os.path.exists(path):
+ print(f"尝试从常见路径加载模型: {path}")
+ try:
+ # 尝试列出目录中的模型
+ model_dirs = [d for d in os.listdir(path)
+ if os.path.isdir(os.path.join(path, d))]
+ if model_dirs:
+ # 尝试第一个模型目录
+ model_path = os.path.join(path, model_dirs[0])
+ print(f"找到模型目录: {model_path}")
+ model = TrainableModule(model_path)
+ # 尝试启动模型
+ try:
+ model.start()
+ print("本地模型启动成功")
+ return model
+ except Exception as start_error:
+ print(f"本地模型启动失败: {str(start_error)}")
+ print("将尝试下一个模型或在线模型")
+ continue
+ except Exception as e:
+ print(f"从常见路径加载模型失败: {str(e)}")
+ continue
+
+ # 尝试使用在线模型
+ print("尝试使用在线模型...")
+ try:
+ model = OnlineChatModule(source="doubao")
+ # 测试模型是否可用
+ try:
+ test_response = model("测试")
+ print("在线模型验证成功")
+ return model
+ except Exception as test_error:
+ print(f"在线模型验证失败: {str(test_error)}")
+ raise Exception("在线模型验证失败,请确保API密钥正确") from test_error
+ except Exception as online_error:
+ print(f"在线模型初始化失败: {str(online_error)}")
+ raise Exception("在线模型初始化失败,请检查网络连接或API配置") from online_error
+ except Exception as e:
+ print(f"初始化模型失败: {str(e)}")
+ raise Exception("模型初始化失败,请检查配置") from e
+
+
+
+ def _build_selection_pipeline(self):
+ """构建选品流程"""
+ def selection_process(input_data):
+ category = input_data.get("category")
+ market = input_data.get("market")
+
+ if not category or not market:
+ return {"error": "缺少必要的选品参数"}
+
+ # 获取产品类别信息
+ category_info = self.product_categories.get(category)
+ if not category_info:
+ return {"error": "不支持的产品类别"}
+
+ # 获取目标市场信息
+ market_info = self.target_markets.get(market)
+ if not market_info:
+ return {"error": "不支持的目标市场"}
+
+ # 生成选品建议
+ suggestions = self._generate_product_suggestions(category_info, market_info)
+
+ return {
+ "category": category,
+ "market": market,
+ "suggestions": suggestions,
+ "timestamp": datetime.now().isoformat()
+ }
+
+ return pipeline(selection_process)
+
+ def _build_chat_pipeline(self):
+ """构建对话流程"""
+ def chat_process(message):
+ # 处理用户消息并生成响应
+ response = self.chat_module(message)
+ return response
+
+ return pipeline(chat_process)
+
+ def _generate_product_suggestions(self, category_info, market_info):
+ """生成产品建议"""
+ subcategories = category_info["subcategories"]
+ features = category_info["features"]
+ market_preferences = market_info["preferences"]
+
+ # 简单的建议生成逻辑
+ suggestions = []
+ for subcategory in subcategories[:3]: # 取前3个子类
+ suggestion = {
+ "product_type": subcategory,
+ "key_features": [feature for feature in features if feature in market_preferences],
+ "market_focus": market_preferences[:2],
+ "recommendation": f"{subcategory}是{category_info['features']}的理想选择,特别适合{market_info['preferences']}的市场需求"
+ }
+ suggestions.append(suggestion)
+
+ return suggestions
+
+ def select_products(self, category, market):
+ """选品方法 - 通过模型返回选品建议"""
+ # 构建选品请求的提示词
+ prompt = f"""
+ 请为跨境电商提供小家电选品建议,基于以下信息:
+ - 产品类别:{category}
+ - 目标市场:{market}
+
+ 请提供详细的选品建议,包括:
+ 1. 热门产品类型
+ 2. 关键功能特点
+ 3. 市场偏好和趋势
+ 4. 具体产品推荐及理由
+
+ 请以结构化的Markdown格式返回结果。
+ """
+
+ # 通过聊天模型获取选品建议
+ response = self.chat_module(prompt)
+
+ # 构建返回结果
+ return {
+ "category": category,
+ "market": market,
+ "suggestions": response,
+ "timestamp": datetime.now().isoformat()
+ }
+
+ def chat(self, message):
+ """对话方法"""
+ response = self.chat_pipeline(message)
+ return response
+
+if __name__ == "__main__":
+ # 测试代码
+ agent = SmallApplianceAgent()
+
+ # 测试选品功能
+ print("测试选品功能...")
+ result = agent.select_products("厨房小家电", "北美")
+ print(json.dumps(result, ensure_ascii=False, indent=2))
+
+ # 测试对话功能
+ print("\n测试对话功能...")
+ response = agent.chat("你好,我想了解跨境小家电市场趋势")
+ print(f"用户: 你好,我想了解跨境小家电市场趋势")
+ print(f"助手: {response}")
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a47cef7e55691a06121bf642281b5bb09d59fee9
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,18 @@
+lazyllm>=0.1.0
+transformers>=4.30.0
+pydantic>=2.0.0
+requests>=2.31.0
+pandas>=2.0.0
+flask>=2.0.0
+numpy>=1.24.0
+matplotlib>=3.7.0
+openai>=1.0.0
+tiktoken>=0.5.0
+aiohttp>=3.8.0
+asyncio
+torch>=2.0.0
+accelerate>=0.20.0
+sentencepiece>=0.1.99
+protobuf>=3.20.0
+scipy>=1.10.0
+modelscope>=1.30.0
diff --git "a/\346\212\200\346\234\257\346\226\207\346\241\243.md" "b/\346\212\200\346\234\257\346\226\207\346\241\243.md"
new file mode 100644
index 0000000000000000000000000000000000000000..01ba0fa47fbbbabda58b9f645fe3da1025a685e3
--- /dev/null
+++ "b/\346\212\200\346\234\257\346\226\207\346\241\243.md"
@@ -0,0 +1,469 @@
+# 跨境小家电智能选品技术文档
+
+## 1. 项目介绍
+
+本项目是一款基于LazyLLM框架的跨境小家电选品助手,专为跨境电商卖家设计。助手结合AI技术和市场数据分析,解决小家电选品复杂性和市场分析难题,提供精准选品建议、成本利润分析和竞争格局研究,优化卖家产品选择和定价策略。支持Web和命令行交互,提供直观选品报告和可视化结果,适用于全球主要市场(北美、欧洲、东南亚、日本)。
+
+## 2. 成员详情
+
+
+| 姓名 | 角色 | 职责描述 | 联系方式 |
+| ---- | --------------------- | ------------------------------------------------------ | -------- |
+| 邵健 | 项目负责人/开发工程师 | 负责整体架构设计、核心算法实现、前端界面开发和系统集成 | - |
+
+## 3. 技术栈
+
+### 3.1 核心框架
+
+- **LazyLLM**:低代码AI应用开发框架,构建完整选品流水线
+- **Flask**:轻量级Web框架,搭建用户友好Web界面
+
+### 3.2 编程语言
+
+- **Python**:项目主要开发语言
+
+### 3.3 主要依赖
+
+- `lazyllm>=0.1.0`:AI应用开发框架
+- `Flask>=2.0.0`:Web服务框架
+- `transformers>=4.30.0`:Hugging Face模型库
+- `pydantic>=2.0.0`:数据验证
+- `requests>=2.31.0`:网络请求
+- `pandas>=2.0.0`:数据处理
+- `numpy>=1.24.0`:数值计算
+- `matplotlib>=3.7.0`:数据可视化
+- `openai>=1.0.0`:OpenAI API客户端
+- `torch>=2.0.0`:PyTorch深度学习框架
+
+## 4. 接口设计
+
+### 4.1 核心类接口
+
+```python
+class SmallApplianceAgent:
+ def __init__(self):
+ """初始化智能助手,加载模型和数据"""
+
+ def get_product_recommendations(self, category, market, budget=None):
+ """获取产品推荐
+ Args:
+ category (str): 产品类别
+ market (str): 目标市场
+ budget (float, optional): 预算限制
+ Returns:
+ dict: 包含产品推荐、市场分析、成本利润分析的结果
+ """
+
+ def analyze_market_trends(self, category, market):
+ """分析市场趋势
+ Args:
+ category (str): 产品类别
+ market (str): 目标市场
+ Returns:
+ dict: 包含市场趋势、消费者偏好、竞争格局的分析结果
+ """
+
+ def calculate_profit_margin(self, product_cost, shipping_cost, market_price):
+ """计算利润率
+ Args:
+ product_cost (float): 产品成本
+ shipping_cost (float): 运输成本
+ market_price (float): 市场价格
+ Returns:
+ dict: 包含利润率、总成本、净利润的计算结果
+ """
+```
+
+### 4.2 Web接口
+
+- **POST /api/chat**:处理用户聊天请求
+- **POST /api/product-recommendations**:获取产品推荐
+- **POST /api/market-analysis**:获取市场分析
+- **POST /api/profit-calculation**:计算利润率
+
+### 4.3 数据格式
+
+- **请求格式**:JSON格式,包含用户输入参数
+- **响应格式**:JSON格式,包含分析结果和建议
+
+## 5. 系统架构
+
+### 5.1 整体架构
+
+本系统采用分层架构设计,包括:
+
+1. **用户界面层**:提供Web和命令行两种交互方式
+2. **业务逻辑层**:处理用户请求,调用核心算法和数据处理模块
+3. **数据层**:存储产品数据、市场数据和用户配置信息
+4. **AI模型层**:集成多种AI模型,用于自然语言处理、数据分析和预测
+
+### 5.2 核心模块
+
+- **选品分析模块**:基于AI模型和市场数据,提供产品推荐和市场分析
+- **成本利润分析模块**:计算产品成本、运输成本和利润率,提供定价建议
+- **竞争格局分析模块**:分析市场竞争情况,提供差异化优势建议
+- **用户交互模块**:处理用户输入和输出,提供友好的交互体验
+
+## 6. 部署说明
+
+### 6.1 环境要求
+
+- Python 3.8+
+- 16GB+内存
+- 4GB+显存(可选,用于本地模型运行)
+
+### 6.2 安装步骤
+
+1. 克隆项目仓库
+2. 安装依赖:`pip install -r requirements.txt`
+3. 设置API密钥(可选,用于在线模型)
+4. 启动Web服务:`python main.py`
+
+### 6.3 运行方式
+
+- **Web方式**:访问`http://localhost:5000`
+- **命令行方式**:运行`python main.py`
+
+## 7. 使用说明
+
+### 7.1 基本使用流程
+
+1. 选择产品类别和目标市场
+2. 输入预算限制(可选)
+3. 点击"获取推荐"按钮
+4. 查看产品推荐、市场分析和成本利润分析结果
+5. 根据建议调整选品策略
+
+### 7.2 示例
+
+**用户输入**:
+
+```json
+{
+ "category": "厨房小家电",
+ "market": "欧洲",
+ "budget": 100.0
+}
+```
+
+**响应输出**:
+
+```json
+{
+ "status": "success",
+ "recommendations": [
+ {
+ "product_name": "空气炸锅",
+ "recommendation_score": 0.92,
+ "estimated_profit_margin": 0.48,
+ "market_analysis": "欧洲市场对空气炸锅需求旺盛,消费者偏好节能认证、智能控制的产品"
+ },
+ {
+ "product_name": "咖啡机",
+ "recommendation_score": 0.87,
+ "estimated_profit_margin": 0.55,
+ "market_analysis": "咖啡机市场竞争激烈,但高品质、设计感强的产品仍有机会"
+ }
+ ],
+ "market_trends": {
+ "overall_growth": 0.15,
+ "consumer_preferences": ["环保认证", "能效等级", "设计感", "安全标准"],
+ "competition_level": "中高"
+ }
+}
+```
+
+## 8. 技术亮点
+
+### 8.1 AI驱动的选品分析
+
+采用先进的AI模型,结合市场数据和用户需求,提供精准的产品推荐和市场分析。
+
+### 8.2 多市场支持
+
+覆盖全球主要市场(北美、欧洲、东南亚、日本),提供本地化的市场分析和选品建议。
+
+### 8.3 全流程支持
+
+从产品选品到成本利润分析,再到竞争格局研究,提供全流程的选品支持。
+
+### 8.4 友好的用户界面
+
+提供Web和命令行两种交互方式,界面简洁直观,易于使用。
+
+## 9. 未来规划
+
+### 9.1 功能扩展
+
+- 增加更多产品类别和市场覆盖
+- 提供更详细的成本利润分析和供应链管理建议
+- 增加产品评论和社交媒体数据分析功能
+
+### 9.2 技术优化
+
+- 优化AI模型性能,提高推荐准确率
+- 优化系统架构,提高系统稳定性和扩展性
+- 增加数据可视化功能,提供更直观的分析结果
+
+### 9.3 用户体验改进
+
+- 增加个性化推荐功能,根据用户历史记录和偏好提供定制化建议
+- 优化Web界面设计,提高用户体验
+- 增加移动端支持,方便用户随时随地使用
+
+```def
+ # 初始化本地模型
+
+ def _create_mock_chat_module(self):
+ # 创建模拟聊天模块作为后备
+
+ def _build_selection_pipeline(self):
+ # 构建选品流程
+
+ def _build_chat_pipeline(self):
+ # 构建对话流程
+
+ def _generate_product_suggestions(self, category_info, market_info):
+ # 生成产品建议
+
+ def select_products(self, category, market):
+ # 选品方法(对外接口)
+
+ def chat(self, message):
+ # 对话方法(对外接口)
+```
+
+#### 2.1.2 模型初始化流程
+
+1. 尝试从环境变量获取API密钥(豆包或OpenAI)
+2. 如果有API密钥,尝试初始化在线模型并验证
+3. 如果没有API密钥或在线模型验证失败,尝试加载本地模型
+4. 如果本地模型加载失败,使用模拟聊天模块作为最后的后备方案
+
+#### 2.1.3 选品流程
+
+```
+用户输入产品类别和目标市场
+ ↓
+验证输入参数
+ ↓
+获取产品类别信息
+ ↓
+获取目标市场信息
+ ↓
+生成产品建议(基于类别特征和市场偏好)
+ ↓
+返回选品结果
+```
+
+### 2.2 产品类别和市场数据
+
+#### 2.2.1 产品类别数据结构
+
+```python
+product_categories = {
+ "厨房小家电": {
+ "subcategories": ["电饭煲", "电磁炉", ...], # 子品类列表
+ "features": ["多功能", "节能", ...] # 核心特征
+ },
+ # 其他产品类别...
+}
+```
+
+#### 2.2.2 目标市场数据结构
+
+```python
+target_markets = {
+ "北美": {
+ "countries": ["美国", "加拿大"], # 包含的国家
+ "preferences": ["高品质", "智能功能", ...], # 市场偏好
+ "price_sensitivity": "中低", # 价格敏感度
+ "logistics_cost_factor": 1.2 # 物流成本系数
+ },
+ # 其他目标市场...
+}
+```
+
+## 3. Web应用设计
+
+### 3.1 Flask应用结构
+
+```python
+app = Flask(__name__)
+
+# API路由
+@app.route('/api/select-products', methods=['POST'])
+def select_products():
+ # 处理选品请求
+
+@app.route('/api/chat', methods=['POST'])
+def chat():
+ # 处理聊天请求
+
+@app.route('/', methods=['GET'])
+def index():
+ # 返回主页
+```
+
+### 3.2 API接口
+
+#### 3.2.1 选品接口 (`/api/select-products`)
+
+**请求方法**: POST
+
+**请求体**:
+
+```json
+{
+ "category": "厨房小家电", # 产品类别
+ "market": "北美" # 目标市场
+}
+```
+
+**响应体**:
+
+```json
+{
+ "category": "厨房小家电",
+ "market": "北美",
+ "suggestions": [
+ {
+ "product_type": "电饭煲",
+ "key_features": ["多功能", "智能控制"],
+ "market_focus": ["高品质", "智能功能"],
+ "recommendation": "电饭煲是多功能、节能、智能控制、安全设计的理想选择..."
+ }
+ # 其他产品建议...
+ ],
+ "timestamp": "2023-01-01T12:00:00.000000"
+}
+```
+
+#### 3.2.2 聊天接口 (`/api/chat`)
+
+**请求方法**: POST
+
+**请求体**:
+
+```json
+{
+ "message": "厨房小家电在北美市场的趋势如何?" # 用户消息
+}
+```
+
+**响应体**:
+
+```json
+{
+ "response": "根据市场分析,厨房小家电在北美市场呈现以下趋势..." # 助手回复
+}
+```
+
+### 3.3 前端交互流程
+
+#### 3.3.1 选品功能交互
+
+1. 用户在选品表单中选择产品类别和目标市场
+2. 用户点击"生成选品建议"按钮
+3. 前端发送POST请求到 `/api/select-products`
+4. 后端处理请求并返回选品结果
+5. 前端将选品结果显示在页面上
+
+#### 3.3.2 聊天功能交互
+
+1. 用户在聊天输入框中输入消息
+2. 用户点击"发送"按钮或按Enter键
+3. 前端将用户消息显示在聊天界面中
+4. 前端发送POST请求到 `/api/chat`
+5. 后端处理请求并返回助手回复
+6. 前端将助手回复显示在聊天界面中
+7. 聊天界面自动滚动到最新消息
+
+## 4. 扩展和定制
+
+### 4.1 添加新的产品类别
+
+1. 在 `cross_border_small_appliance_agent.py` 中的 `product_categories` 字典中添加新的类别
+2. 为新类别添加子品类列表和核心特征
+3. 在Web界面的选品表单中添加新类别的选项
+
+### 4.2 添加新的目标市场
+
+1. 在 `cross_border_small_appliance_agent.py` 中的 `target_markets` 字典中添加新的市场
+2. 为新市场添加包含的国家、市场偏好、价格敏感度和物流成本系数
+3. 在Web界面的选品表单中添加新市场的选项
+
+### 4.3 自定义选品逻辑
+
+1. 修改 `_generate_product_suggestions` 方法中的选品逻辑
+2. 可以根据需要添加更复杂的算法,如:
+ - 市场趋势分析
+ - 竞争产品分析
+ - 价格策略分析
+ - 物流成本计算
+
+### 4.4 集成新的AI模型
+
+1. 在 `_init_local_model` 方法中添加新模型的初始化代码
+2. 确保新模型与现有的API接口兼容
+3. 可以添加模型选择功能,允许用户选择使用不同的模型
+
+## 5. 部署和运行
+
+### 5.1 本地运行
+
+1. 安装所需的依赖库:
+
+ ```bash
+ pip install -r requirements.txt
+ ```
+2. 运行Web应用:
+
+ ```bash
+ python init.py
+ ```
+3. 在浏览器中访问 `http://localhost:5000`
+
+### 5.2 生产环境部署
+
+#### 5.2.1 使用Gunicorn
+
+1. 安装Gunicorn:
+
+ ```bash
+ pip install gunicorn
+ ```
+2. 运行Gunicorn:
+
+ ```bash
+ gunicorn -w 4 -b 0.0.0.0:5000 init:app
+ ```
+
+#### 5.2.2 使用Docker
+
+1. 创建Dockerfile:
+
+ ```dockerfile
+ FROM python:3.9-slim
+
+ WORKDIR /app
+
+ COPY requirements.txt .
+ RUN pip install --no-cache-dir -r requirements.txt
+
+ COPY . .
+
+ EXPOSE 5000
+
+ CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "init:app"]
+ ```
+2. 构建Docker镜像:
+
+ ```bash
+ docker build -t cross-border-small-appliance-agent .
+ ```
+3. 运行Docker容器:
+
+ ```bash
+ docker run -p 5000:5000 cross-border-small-appliance-agent
+ ```