From 33dd615d7c6115c5caf06e29b5631615e7c4a01a Mon Sep 17 00:00:00 2001 From: wuzz <16498202+wuzhengz@user.noreply.gitee.com> Date: Wed, 17 Dec 2025 16:56:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=B7=E5=A4=96=E6=B1=BD=E9=85=8D=E9=80=89?= =?UTF-8?q?=E5=93=81=E5=8A=A9=E6=89=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- auto_parts_agent.py | 692 ++++++++++++++++++ requirements.txt | 18 + web_init.py | 568 ++++++++++++++ ...00\346\234\257\346\226\207\346\241\243.md" | 366 +++++++++ 4 files changed, 1644 insertions(+) create mode 100644 auto_parts_agent.py create mode 100644 requirements.txt create mode 100644 web_init.py create mode 100644 "\346\212\200\346\234\257\346\226\207\346\241\243.md" diff --git a/auto_parts_agent.py b/auto_parts_agent.py new file mode 100644 index 0000000..2818618 --- /dev/null +++ b/auto_parts_agent.py @@ -0,0 +1,692 @@ +import os +import json +from datetime import datetime +from lazyllm import OnlineChatModule, WebModule, pipeline, TrainableModule +import re + +# 汽配类选品智能助手Agent +class AutoPartsAgent: + def __init__(self): + # 初始化LazyLLM聊天模块 + try: + # 首先尝试使用OnlineChatModule + self.chat_module = self._init_local_model() + print(f"成功加载模型") + except Exception as e: + print(f"无法初始化模型: {e}") + try: + # 如果模型加载失败,尝试在线模型 + self.chat_module = OnlineChatModule() + print("成功加载在线模型") + except Exception as e2: + print(f"无法初始化在线模型: {e2}") + print("请设置API密钥,例如:export OPENAI_API_KEY=your_key") + # 抛出异常而不是使用模拟聊天模块,确保使用真实模型 + raise Exception("无法初始化任何模型,请设置有效的API密钥") + + # 汽配产品类别数据 + self.product_categories = { + "发动机配件": { + "subcategories": ["滤清器", "火花塞", "机油泵", "正时皮带", "气缸垫", "喷油嘴", "活塞环"], + "features": ["耐用性", "兼容性", "性能提升", "环保标准"] + }, + "刹车系统": { + "subcategories": ["刹车片", "刹车盘", "刹车油", "刹车泵", "刹车软管", "ABS传感器"], + "features": ["制动效果", "耐高温", "低噪音", "安全性"] + }, + "悬挂系统": { + "subcategories": ["减震器", "弹簧", "控制臂", "球头", "稳定杆", "衬套"], + "features": ["舒适性", "操控性", "耐用性", "适配性"] + }, + "电气系统": { + "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.1 + } + } + + # 构建选品流程 + 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)}") + # 使用模拟聊天模块作为后备 + print("使用模拟聊天模块作为后备") + model = self._create_mock_chat_module() + return model + except Exception as online_error: + print(f"在线模型初始化失败: {str(online_error)}") + # 使用模拟聊天模块作为后备 + print("使用模拟聊天模块作为后备") + model = self._create_mock_chat_module() + return model + except Exception as e: + print(f"初始化模型失败: {str(e)}") + # 使用模拟聊天模块作为后备 + print("使用模拟聊天模块作为后备") + model = self._create_mock_chat_module() + return model + + def _create_mock_chat_module(self): + """创建模拟聊天模块作为后备方案""" + class MockChatModule: + def __call__(self, prompt): + # 简单的模拟响应 + return "这是一个模拟的汽配选品智能助手响应。在实际部署中,这将连接到真实的AI模型。" + + return MockChatModule() + + def _build_selection_pipeline(self): + """构建选品流程""" + # 定义选品流程的各个步骤 + def market_analysis(market_info): + """市场分析步骤""" + market = market_info.get("market", "北美") + category = market_info.get("category", "发动机配件") + + # 构建市场分析提示 + prompt = f""" + 作为跨境汽配市场分析专家,请分析{market}市场的{category}类产品: + + 要求: + 1. 市场规模(美元) + 2. 年增长率 + 3. 主要竞争对手 + 4. 消费者偏好和需求特点 + 5. 价格区间(低、中、高) + 6. 物流和关税考虑因素 + + 请严格按照以下JSON格式返回,不要添加任何其他内容: + {{ + "market_size": "市场规模描述", + "growth_rate": "增长率描述", + "competitors": ["竞争对手1", "竞争对手2"], + "consumer_preferences": ["偏好1", "偏好2"], + "price_range": "价格区间描述", + "logistics_considerations": "物流和关税考虑因素" + }} + """ + + try: + response = self.chat_module(prompt) + print(f"市场分析模型响应: {response}") # 添加调试日志 + + # 尝试解析JSON + if "```json" in response: + json_str = response.split("```json")[1].split("```")[0].strip() + else: + # 使用更健壮的正则表达式提取JSON数据,匹配从第一个{到最后一个}的内容 + json_match = re.search(r'\{.*\}', response, re.DOTALL) + if json_match: + json_str = json_match.group(0).strip() + else: + raise ValueError("无法从响应中提取JSON数据") + + print(f"提取到的JSON字符串: {json_str}") # 添加调试日志 + analysis_data = json.loads(json_str) + print(f"解析后的市场分析数据: {analysis_data}") # 添加调试日志 + return analysis_data + except Exception as e: + print(f"解析市场分析数据失败: {e}") + # 尝试使用默认市场分析数据作为后备 + print("使用默认市场分析数据作为后备") + return { + "market_size": "约50亿美元", + "growth_rate": "年增长率约8%", + "competitors": ["Bosch", "Denso", "Magna", "Aisin"], + "consumer_preferences": self.target_markets[market]["preferences"], + "price_range": "中等至高端", + "logistics_considerations": "需考虑跨境运输成本和关税" + } + + def product_research(product_info): + """产品研究步骤""" + category = product_info.get("category", "发动机配件") + market = product_info.get("market", "北美") + + # 构建产品研究提示 + prompt = f""" + 作为跨境汽配产品研究专家,请为{market}市场研究5款热门的{category}类产品: + + 要求: + 1. 每款产品包含:产品名称、价格区间、销量情况、利润率、关键特性 + 2. 考虑市场的消费者偏好和需求特点 + 3. 产品应具有市场竞争力和差异化优势 + + 请严格按照以下JSON格式返回,不要添加任何其他内容: + {{ + "popular_products": [ + {{ + "name": "产品名称", + "price_range": "价格区间", + "sales_volume": "销量情况", + "profit_margin": "利润率", + "key_features": ["特性1", "特性2"] + }} + ], + "trending_features": ["热门特性1", "热门特性2"], + "quality_standards": ["质量标准1", "质量标准2"] + }} + """ + + try: + response = self.chat_module(prompt) + print(f"产品研究模型响应: {response}") # 添加调试日志 + + # 尝试解析JSON + if "```json" in response: + json_str = response.split("```json")[1].split("```")[0].strip() + else: + # 使用更健壮的正则表达式提取JSON数据,匹配从第一个{到最后一个}的内容 + json_match = re.search(r'\{.*\}', response, re.DOTALL) + if json_match: + json_str = json_match.group(0).strip() + else: + raise ValueError("无法从响应中提取JSON数据") + + print(f"提取到的JSON字符串: {json_str}") # 添加调试日志 + product_data = json.loads(json_str) + print(f"解析后的产品研究数据: {product_data}") # 添加调试日志 + return product_data + except Exception as e: + print(f"解析产品研究数据失败: {e}") + # 尝试使用默认产品研究数据作为后备 + print("使用默认产品研究数据作为后备") + popular_products = self.product_categories[category]["subcategories"][:3] + product_details = [] + for product in popular_products: + product_details.append({ + "name": product, + "price_range": "$20-$100", + "sales_volume": "高", + "profit_margin": "25%-40%", + "key_features": self.product_categories[category]["features"] + }) + + return { + "popular_products": product_details, + "trending_features": self.product_categories[category]["features"], + "quality_standards": ["ISO 9001", "TS 16949", "OEM认证"] + } + + def supplier_analysis(supplier_info): + """供应商分析步骤""" + category = supplier_info.get("category", "发动机配件") + market = supplier_info.get("market", "北美") + + # 构建供应商分析提示 + prompt = f""" + 作为跨境汽配供应链专家,请分析{market}市场{category}类产品的供应商情况: + + 要求: + 1. 推荐3个优质供应商,每个供应商包含:名称、所在地、价格竞争力、质量评分、最小起订量、交货时间、认证 + 2. 提供供应商谈判技巧 + 3. 进行供应链风险评估 + + 请严格按照以下JSON格式返回,不要添加任何其他内容: + {{ + "recommended_suppliers": [ + {{ + "name": "供应商名称", + "location": "所在地", + "price_competitiveness": "价格竞争力", + "quality_rating": "质量评分", + "minimum_order_quantity": "最小起订量", + "delivery_time": "交货时间", + "certifications": ["认证1", "认证2"] + }} + ], + "negotiation_tips": ["谈判技巧1", "谈判技巧2"], + "risk_assessment": ["风险评估1", "风险评估2"] + }} + """ + + try: + response = self.chat_module(prompt) + print(f"供应商分析模型响应: {response}") # 添加调试日志 + + # 尝试解析JSON + if "```json" in response: + json_str = response.split("```json")[1].split("```")[0].strip() + else: + # 使用更健壮的正则表达式提取JSON数据,匹配从第一个{到最后一个}的内容 + json_match = re.search(r'\{.*\}', response, re.DOTALL) + if json_match: + json_str = json_match.group(0).strip() + else: + raise ValueError("无法从响应中提取JSON数据") + + print(f"提取到的JSON字符串: {json_str}") # 添加调试日志 + supplier_data = json.loads(json_str) + print(f"解析后的供应商分析数据: {supplier_data}") # 添加调试日志 + return supplier_data + except Exception as e: + print(f"解析供应商分析数据失败: {e}") + # 尝试使用默认供应商分析数据作为后备 + print("使用默认供应商分析数据作为后备") + suppliers = [ + { + "name": "优质供应商A", + "location": "中国", + "price_competitiveness": "高", + "quality_rating": "4.8/5", + "minimum_order_quantity": "500件", + "delivery_time": "15-20天", + "certifications": ["ISO 9001", "TS 16949"] + }, + { + "name": "专业供应商B", + "location": "韩国", + "price_competitiveness": "中", + "quality_rating": "4.9/5", + "minimum_order_quantity": "300件", + "delivery_time": "10-15天", + "certifications": ["ISO 9001", "TS 16949", "OEM认证"] + }, + { + "name": "经济供应商C", + "location": "越南", + "price_competitiveness": "极高", + "quality_rating": "4.5/5", + "minimum_order_quantity": "1000件", + "delivery_time": "20-25天", + "certifications": ["ISO 9001"] + } + ] + + return { + "recommended_suppliers": suppliers, + "negotiation_tips": [ + "强调长期合作", + "要求样品测试", + "讨论质量保证条款", + "协商灵活的付款方式" + ], + "risk_assessment": [ + "供应链稳定性", + "产品质量一致性", + "物流和关税风险", + "汇率波动风险" + ] + } + + def response_generation(input_data): + """响应生成步骤""" + # 运行各个步骤并收集结果 + market_analysis_result = market_analysis(input_data) + product_research_result = product_research({'market': input_data['market'], 'category': input_data['category'], 'market_analysis': market_analysis_result}) + supplier_analysis_result = supplier_analysis({'market': input_data['market'], 'category': input_data['category'], 'product_research': product_research_result}) + + # 生成富文本响应 + response = f""" +

跨境汽配选品分析报告

+ +

市场分析

+ + +

热门产品推荐

+ + + + + + + + + + + + """ + + for product in product_research_result['popular_products']: + response += f""" + + + + + + + + """ + + response += f""" + +
产品名称价格区间销量利润率关键特性
{product['name']}{product['price_range']}{product['sales_volume']}{product['profit_margin']}{', '.join(product['key_features'])}
+ +

推荐供应商

+ + + + + + + + + + + + + + """ + + for supplier in supplier_analysis_result['recommended_suppliers']: + response += f""" + + + + + + + + + + """ + + response += f""" + +
供应商名称所在地价格竞争力质量评分最小起订量交货时间认证
{supplier['name']}{supplier['location']}{supplier['price_competitiveness']}{supplier['quality_rating']}{supplier['minimum_order_quantity']}{supplier['delivery_time']}{', '.join(supplier['certifications'])}
+ +

选品建议

+ + """ + + return response + + # 构建选品流程管道 + selection_pipeline = pipeline( + response_generation + ) + + return selection_pipeline + + def _build_chat_pipeline(self): + """构建对话流程""" + def intent_recognition(user_input): + """意图识别步骤""" + user_input_lower = user_input.lower() + + # 检查是否包含产品类别关键词 + category_keywords = list(self.product_categories.keys()) + has_category = any(category in user_input_lower for category in category_keywords) + + # 检查是否包含市场关键词 + market_keywords = ["北美", "美国", "加拿大", "欧洲", "德国", "英国", "法国", "东南亚", "新加坡", "马来西亚", "泰国", "中东", "阿联酋", "沙特"] + has_market = any(market in user_input_lower for market in market_keywords) + + if has_category or has_market or any(word in user_input_lower for word in ["选品", "产品", "推荐"]): + return ("product_selection", user_input) + elif any(word in user_input_lower for word in ["市场", "分析", "趋势"]): + return ("market_analysis", user_input) + elif any(word in user_input_lower for word in ["供应商", "厂家", "采购"]): + return ("supplier_analysis", user_input) + elif any(word in user_input_lower for word in ["价格", "成本", "利润"]): + return ("pricing_analysis", user_input) + else: + return ("general_query", user_input) + + def response_generation(result): + """响应生成步骤""" + intent, user_input = result + + if intent == "product_selection": + # 提取市场和类别信息 + market = "北美" # 默认市场 + category = "发动机配件" # 默认类别 + + # 简单的关键词匹配 + if any(word in user_input for word in ["北美", "美国", "加拿大"]): + market = "北美" + elif any(word in user_input for word in ["欧洲", "德国", "英国", "法国"]): + market = "欧洲" + elif any(word in user_input for word in ["东南亚", "新加坡", "马来西亚", "泰国"]): + market = "东南亚" + elif any(word in user_input for word in ["中东", "阿联酋", "沙特"]): + market = "中东" + + for cat in self.product_categories.keys(): + if cat in user_input: + category = cat + break + + # 运行选品流程 + result = self.selection_pipeline({ + "market": market, + "category": category + }) + + return result + elif intent == "market_analysis": + # 市场分析响应 + return "

市场分析服务

我可以为您提供详细的全球汽配市场分析,包括市场规模、增长率、竞争格局、消费者偏好等信息。请告诉我您感兴趣的具体市场和产品类别。

" + elif intent == "supplier_analysis": + # 供应商分析响应 + return "

供应商分析服务

我可以为您推荐优质的汽配供应商,提供价格竞争力分析、质量评估、认证信息等。请告诉我您需要采购的产品类别和目标市场。

" + elif intent == "pricing_analysis": + # 价格分析响应 + return "

价格分析服务

我可以为您提供汽配产品的价格区间分析、成本利润核算、定价策略建议等。请告诉我您关注的具体产品和市场。

" + else: + # 通用查询响应 + return "

跨境汽配选品智能助手

您好!我是您的跨境汽配选品智能助手。我可以为您提供以下服务:

请告诉我您需要什么帮助?

" + + # 构建对话流程管道 + chat_pipeline = pipeline( + intent_recognition, + response_generation + ) + + return chat_pipeline + + def chat_process(self, user_input): + """处理用户聊天请求""" + try: + # 使用对话流程处理用户输入 + response = self.chat_pipeline(user_input) + return response + except Exception as e: + print(f"聊天处理失败: {str(e)}") + return f"

抱歉,我无法处理您的请求。请稍后重试或联系技术支持。

错误信息: {str(e)}

" + + def run_selection_process(self, market, category): + """运行选品流程""" + try: + result = self.selection_pipeline({ + "market": market, + "category": category + }, { + "category": category + }, { + "category": category + }) + return result + except Exception as e: + print(f"选品流程失败: {str(e)}") + return f"

选品流程失败,请稍后重试。

错误信息: {str(e)}

" + + def run(self): + """运行智能助手""" + print("跨境汽配选品智能助手已启动!") + print("您可以输入问题或需求,我将为您提供专业的选品建议。") + print("输入 'exit' 或 'quit' 退出程序。") + + while True: + try: + user_input = input("\n您: ") + + if user_input.lower() in ["exit", "quit", "bye"]: + print("再见!感谢使用跨境汽配选品智能助手。") + break + + if not user_input.strip(): + print("请输入有效的问题或需求。") + continue + + print("正在为您分析...") + response = self.chat_process(user_input) + print("\n助手: ") + print(response) + + except KeyboardInterrupt: + print("\n再见!感谢使用跨境汽配选品智能助手。") + break + except Exception as e: + print(f"发生错误: {str(e)}") + print("请重试或联系技术支持。") + +if __name__ == "__main__": + agent = CrossBorderAutoPartsAgent() + agent.run() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d119c62 --- /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 # 用于真实API调用 +tiktoken>=0.5.0 # 用于token计算 +aiohttp>=3.8.0 # 用于异步HTTP请求 +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 # 本地模型下载和管理 \ No newline at end of file diff --git a/web_init.py b/web_init.py new file mode 100644 index 0000000..e440234 --- /dev/null +++ b/web_init.py @@ -0,0 +1,568 @@ +from flask import Flask, render_template_string, request, jsonify +from auto_parts_agent import AutoPartsAgent + +app = Flask(__name__) + +# 创建汽配选品智能助手实例 +agent = AutoPartsAgent() + +# HTML模板 +html_template = ''' + + + + + + 汽配选品智能助手 + + + +
+
+

🌍 跨境汽配选品智能助手

+

基于LazyLLM框架的智能选品顾问,助您开拓全球汽配市场

+
+ +
+

功能特点

+
+
+

🎯 智能选品分析

+

基于市场数据和AI分析,为您提供精准的汽配选品建议

+
+
+

🌐 全球市场洞察

+

覆盖北美、欧洲、东南亚等主要市场,了解各地消费者偏好

+
+
+

💰 成本利润分析

+

全面分析产品成本、物流费用和预期利润率,优化定价策略

+
+
+

🔍 竞争格局研究

+

深入分析竞争对手和市场机会,找到差异化优势

+
+
+
+ +
+
+
🤖
+
+

汽配选品助手

+

基于LazyLLM的智能顾问

+
+
+ +
+
北美发动机配件
+
欧洲刹车系统
+
东南亚悬挂系统
+
北美电气系统
+
传动系统趋势
+
+ +
+
+
+ 您好!我是跨境汽配选品智能助手,基于LazyLLM框架为您提供专业的选品建议和市场分析。请问您想了解哪个市场或品类的汽配选品信息? +
+
汽配选品助手 · 刚刚
+
+
+ +
+
+ + + +
+ 正在分析您的需求... +
+ +
+ + +
+
+
+ + + + +''' + +@app.route('/') +def index(): + return render_template_string(html_template) + +@app.route('/chat', methods=['POST']) +def chat(): + data = request.json + message = data.get('message', '') + + try: + # 调用智能助手处理消息 + response = agent.chat_process(message) + + # 检查response是否为字典类型 + if isinstance(response, dict): + return jsonify({ + 'response': response.get('response', str(response)), + 'intent': response.get('intent', '未知') + }) + else: + # 如果response不是字典,创建一个包含response的字典 + return jsonify({ + 'response': str(response), + 'intent': '未知' + }) + except Exception as e: + return jsonify({ + 'response': f'处理请求时出现错误: {str(e)}', + 'intent': '错误' + }), 500 + +if __name__ == "__main__": + app.run(host='0.0.0.0', port=5002, debug=True) \ No newline at end of file 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 0000000..8454db5 --- /dev/null +++ "b/\346\212\200\346\234\257\346\226\207\346\241\243.md" @@ -0,0 +1,366 @@ +# 海外汽配选品助手技术文档 + +## 1. 项目介绍 + +海外汽配选品助手,专为海外电商卖家设计,旨在解决海外汽配选品的复杂性和市场分析难题。基于LazyLLM框架开发,集成了AI大语言模型能力,提供精准的选品建议、成本利润分析和竞争格局研究。支持北美、欧洲、东南亚、中东等多个海外市场,覆盖发动机配件、刹车系统、悬挂系统、电气系统、传动系统、外观配件、内饰配件、保养用品等多个汽配产品类别,帮助卖家优化产品选择和定价策略,提升跨境电商业务的成功率和效率。 + +## 2. 成员详情 + +- 主要负责人:吴争争 +- 技术栈:LazyLLM框架、Flask Web框架、Python编程语言 +- 核心功能:AI模型集成、选品流程构建、市场数据分析、Web应用开发 + +## 3. 技术栈 + + +| 技术/框架 | 版本要求 | 用途 | +| ------------- | -------- | -------------------------- | +| LazyLLM | >=0.1.0 | 构建智能对话和选品分析模块 | +| Flask | >=2.0.0 | 构建Web应用界面 | +| Python | 3.8+ | 编程语言 | +| Transformers | >=4.30.0 | 自然语言处理模型 | +| Pydantic | >=2.0.0 | 数据验证 | +| Requests | >=2.31.0 | HTTP请求 | +| Pandas | >=2.0.0 | 数据分析 | +| NumPy | >=1.24.0 | 数值计算 | +| Matplotlib | >=3.7.0 | 数据可视化 | +| OpenAI | >=1.0.0 | 真实API调用 | +| Tiktoken | >=0.5.0 | token计算 | +| Aiohttp | >=3.8.0 | 异步HTTP请求 | +| 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 | 本地模型下载和管理 | + +## 4. 接口设计 + +### 4.1 核心类接口 + +#### AutoPartsAgent类 + +```python +class AutoPartsAgent: + def __init__(self): + """初始化AutoPartsAgent,加载模型和数据""" + + def _init_local_model(self): + """初始化本地模型""" + + def _build_selection_pipeline(self): + """构建选品流程""" + + def _build_chat_pipeline(self): + """构建对话流程""" + + def analyze_market(self, product_category, target_market): + """分析特定市场的产品需求和趋势""" + + def suggest_products(self, product_category, target_market, budget=None): + """根据产品类别和目标市场提供选品建议""" + + def evaluate_competition(self, product_name, target_market): + """评估产品在目标市场的竞争情况""" + + def calculate_profit_margin(self, product_cost, shipping_cost, target_price): + """计算产品的利润率""" + + def get_product_categories(self): + """获取所有产品类别""" + + def get_target_markets(self): + """获取所有目标市场""" +``` + +### 4.2 Web接口 + + +| 接口路径 | 请求方法 | 参数 | 返回值 | 用途 | +| ------------------------- | -------- | ----------------------------------------- | -------------- | ---------------------------------- | +| /api/analyze-market | POST | product_category, target_market | 市场分析报告 | 分析特定市场的产品需求和趋势 | +| /api/suggest-products | POST | product_category, target_market, budget | 选品建议列表 | 根据产品类别和目标市场提供选品建议 | +| /api/evaluate-competition | POST | product_name, target_market | 竞争分析报告 | 评估产品在目标市场的竞争情况 | +| /api/calculate-profit | POST | product_cost, shipping_cost, target_price | 利润率计算结果 | 计算产品的利润率 | +| /api/product-categories | GET | 无 | 产品类别列表 | 获取所有产品类别 | +| /api/target-markets | GET | 无 | 目标市场列表 | 获取所有目标市场 | + +## 5. 项目结构 + +``` +[项目名称]/ +├── auto_parts_agent.py # 核心汽配选品Agent实现 +├── web_init.py # Flask Web应用实现 +├── requirements.txt # 项目依赖包 +├── README.md # 项目说明文档 +└── 技术文档.md # 技术文档 +``` + +## 6. 核心功能 + +### 6.1 选品分析功能 + +- **产品类别分析**: 支持发动机配件、刹车系统、悬挂系统、电气系统、传动系统、外观配件、内饰配件、保养用品等多个类别的产品分析 +- **目标市场分析**: 支持北美、欧洲、东南亚、中东等多个目标市场的分析 +- **竞品分析**: 提供竞品对比和分析功能 +- **趋势分析**: 分析市场趋势和消费者偏好 +- **利润率计算**: 提供产品利润率计算功能 + +### 6.2 对话交互功能 + +- **智能问答**: 提供关于海外汽配选品的智能问答服务 +- **个性化推荐**: 根据用户需求提供个性化的产品推荐 +- **实时交互**: 支持与用户的实时对话交互 + +### 6.3 Web界面功能 + +- **可视化选品**: 提供直观的选品界面 +- **数据分析**: 展示选品分析结果和数据 +- **用户友好**: 响应式设计,支持多种设备访问 + +## 7. 部署说明 + +### 7.1 环境要求 + +- Python 3.8+ +- pip 20.0+ + +### 7.2 安装步骤 + +1. 克隆项目代码到本地 +2. 安装依赖包:`pip install -r requirements.txt` +3. 设置API密钥(可选):`export OPENAI_API_KEY=your_key` +4. 运行应用:`python web_init.py` + +## 8. 使用说明 + +### 8.1 Web应用界面 + +1. 运行应用后,访问`http://localhost:5000` +2. 在Web界面上选择产品类别和目标市场 +3. 点击"获取选品建议"按钮 +4. 查看系统返回的选品建议和市场分析报告 +5. 使用聊天功能与AI助手进行交互,获取更多选品相关信息 + +## 9. 技术亮点 + +1. **多模型支持**:自动检测并支持本地模型、在线模型等多种AI模型 +2. **智能选品流程**:基于LazyLLM框架构建的选品流程,能够根据产品类别和目标市场提供精准的选品建议 +3. **多市场覆盖**:支持北美、欧洲、东南亚、中东等多个海外市场 +4. **完整的数据分析**:提供市场分析、竞争分析、利润率计算等完整的数据分析功能 +5. **灵活的部署方式**:基于Flask框架的Web应用,支持灵活部署和扩展 + +## 10. 未来规划 + +1. **增加更多产品类别**:扩展到更多汽配产品类别,如工具设备、油品添加剂等 +2. **增加更多目标市场**:扩展到更多海外市场,如南美、非洲等 +3. **优化选品算法**:基于更多的市场数据和用户反馈,优化选品算法,提高选品建议的精准度 +4. **增加用户管理功能**:增加用户注册、登录、个人中心等功能,实现个性化的选品建议 +5. **增加数据可视化功能**:增加更多的数据可视化图表,如市场趋势图、产品对比图等,帮助用户更直观地了解市场情况 + +- `accelerate`:模型加速库 +- `sentencepiece`:分词工具 +- `protobuf`:Protocol Buffers +- `scipy`:科学计算库 +- `modelscope`:模型下载和管理 + +## 4. 接口设计 + +### 4.1 核心类接口 + +#### CrossBorderAutoPartsAgent类 + +- **初始化方法**:`__init__()` + + - 功能:初始化Agent,构建选品流程和地区信息 + - 参数:无 + - 返回值:无 +- **模型初始化**:`_init_local_model()` + + - 功能:初始化本地模型或在线模型 + - 参数:无 + - 返回值:聊天模块对象 +- **模拟聊天模块**:`_create_mock_chat_module()` + + - 功能:创建模拟聊天模块作为后备方案 + - 参数:无 + - 返回值:模拟聊天模块对象 +- **构建选品流程**:`_build_selection_pipeline()` + + - 功能:构建3C配件选品的处理管道 + - 参数:无 + - 返回值:LazyLLM Pipeline对象 +- **构建对话流程**:`_build_chat_pipeline()` + + - 功能:构建对话处理流程 + - 参数:无 + - 返回值:LazyLLM Pipeline对象 +- **对话入口**:`chat(user_input)` + + - 功能:执行用户对话的主入口 + - 参数: + - `user_input`:用户输入(字符串) + - 返回值:助手回复字符串或字典 + +### 4.2 Web API接口 + +- **首页**:`/` (GET) + + - 功能:提供选品界面 + - 请求方法:GET + - 返回值:HTML页面 +- **聊天接口**:`/chat` (POST) + + - 功能:接收聊天请求并执行分析 + - 请求方法:POST + - 请求体:JSON格式,包含message参数 + - 返回值:JSON格式的回复 + +## 5. 系统架构 + +### 5.1 整体架构 + +系统采用模块化设计,主要包含以下核心模块: + +- **Agent核心模块**:实现汽配选品的主要逻辑 +- **Pipeline处理模块**:构建和管理选品流程 +- **模型管理模块**:处理本地模型和在线模型的加载与切换 +- **数据分析模块**:包含市场分析、产品研究、供应商分析和竞争分析等子模块 +- **用户界面模块**:提供Web和命令行两种交互方式 + +### 5.2 模块关系 + +``` +用户 -> 用户界面模块(Web/CLI) -> Agent核心模块 -> Pipeline处理模块 -> 数据分析模块 -> 模型管理模块 -> 结果返回 +``` + +### 5.3 数据流向 + +1. 用户通过界面输入选品需求 +2. Agent接收请求并启动选品流程 +3. 通过Pipeline依次执行市场分析、产品研究、供应商分析和竞争分析 +4. 生成选品报告并返回给用户 + +## 6. 功能模块详解 + +### 6.1 市场分析模块 + +- **功能**:根据用户输入分析目标市场和产品类别 +- **实现**: + - 从用户输入中提取目标市场(北美、欧洲、东南亚) + - 从用户输入中提取产品类别(发动机配件、刹车系统、汽车电子等) + - 获取市场信息和产品类别信息 +- **输出**:包含目标市场、产品类别、市场信息和类别信息的字典 + +### 6.2 产品研究模块 + +- **功能**:基于市场和类别研究热门产品 +- **实现**: + - 使用大模型分析目标市场的热门产品 + - 考虑市场消费者偏好和价格敏感度 + - 生成产品名称、特点、目标客户和价格区间 +- **输出**:包含产品列表的字典 + +### 6.3 供应商分析模块 + +- **功能**:分析潜在供应商和成本结构 +- **实现**: + - 估算生产成本、物流成本和关税 + - 识别潜在供应链风险 + - 推荐供应商类型 + - 计算利润率 +- **输出**:包含成本分析和利润率的产品信息 + +### 6.4 竞争分析模块 + +- **功能**:分析竞争对手和市场机会 +- **实现**: + - 识别主要竞争对手 + - 分析竞争对手的价格和市场份额 + - 识别竞争对手的优势和劣势 + - 提供差异化建议 +- **输出**:包含竞争分析的产品信息 + +### 6.5 报告生成模块 + +- **功能**:整合分析结果,生成结构化选品报告 +- **实现**: + - 汇总所有分析数据 + - 生成最终的选品建议 + - 提供市场机会分析 +- **输出**:完整的选品报告 + +## 7. 数据模型 + +### 7.1 产品类别数据结构 + +```python +self.product_categories = { + "类别名称": { + "subcategories": ["子类别1", "子类别2"], + "features": ["特性1", "特性2"] + } +} +``` + +### 7.2 目标市场数据结构 + +```python +self.target_markets = { + "市场名称": { + "countries": ["国家1", "国家2"], + "preferences": ["偏好1", "偏好2"], + "price_sensitivity": "价格敏感度", + "logistics_cost_factor": 物流成本系数 + } +} +``` + +### 7.3 产品数据结构 + +```python +{ + "name": "产品名称", + "features": ["特点1", "特点2"], + "target_audience": "目标客户群体", + "price_range": { + "min": 最低价格, + "max": 最高价格 + }, + "production_cost": 生产成本, + "logistics_cost": 物流成本, + "tariffs": 关税, + "risks": ["风险1", "风险2"], + "supplier_type": "供应商类型", + "profit_margin": 利润率, + "competitors": [ + { + "name": "竞争对手名称", + "price_range": {"min": 最低价格, "max": 最高价格}, + "market_share": "市场份额", + "strengths": ["优势1", "优势2"], + "weaknesses": ["劣势1", "劣势2"] + } + ] +} +``` + +## 8. 部署说明 + +### 8.1 环境要求 + +- Python 3.8+ +- 所需依赖包(见requirements.txt) + +### 8.2 安装步骤 + +1. 安装依赖:`pip install -r requirements.txt` +2. 配置API密钥(豆包或OpenAI) +3. 启动Web应用:`python web_init.py` +4. 访问Web界面:http://localhost:5002 + +### 8.3 运行模式 + +- **Web模式**:默认启动,提供图形化界面 +- **命令行模式**:可通过直接运行`python auto_parts_agent.py`切换 -- Gitee