引言

很急很急给公司做的一个小demo,尝试接deepseek准确预测了一下某商品的价格和库存变化,对提示词做了很多优化,发现如果想token,还是得好好磨磨这一块,包括输入和输出,最后的数据填充和可视化,都是需要着重做的地方,这一版先初步实现了整个流程,数据处理、数据给deepseek、数据填充到数据可视化,后面我优化一下会再更几版,希望大家享用愉快!



1、系统架构

该系统主要由三个核心模块组成:

  1. 数据处理模块:负责收集、清洗和格式化历史价格和库存数据
  2. 预测引擎模块:基于DeepSeek大语言模型,分析历史数据并生成未来预测
  3. 可视化展示模块:将预测结果以图表和报告形式直观呈现

在这里插入图片描述

2、数据处理

系统使用的数据包括商品的周度和月度历史价格与库存数据。以下是数据格式示例:

product_id,brand,category,week_price,week_stock,month_price,month_stock
SKU-BT500,Apple,Electronics,"[[129.99, 129.99],[119.99, 119.99],[119.99, 119.99],...]","[[210, 210],[235, 235],[235, 235],...]","[[129.99, 129.99],[119.99, 119.99],...]","[[210, 210],[235, 235],...]"
SKU-HF300,Samsung,Home,"[[45.99, 45.99],[42.99, 42.99],[42.99, 42.99],...]","[[0, 0],[0, 0],[0, 0],...]","[[45.99, 45.99],[42.99, 42.99],...]","[[0, 0],[0, 0],...]"

数据处理模块会解析这些数据,提取关键信息,并将其转换为适合大语言模型分析的格式。

3、预测引擎

预测引擎基于DeepSeek大语言模型,通过API调用实现。系统将处理后的历史数据发送给模型,模型会分析价格趋势、库存变化、市场波动性和季节性特征,然后生成未来6个月的价格和库存预测。

以下是向DeepSeek API发送请求的核心代码:

def send_to_deepseek(data, api_key):
    """
    发送数据到DeepSeek API进行预测
    
    参数:
        data (dict): 要发送的数据
        api_key (str): DeepSeek API密钥
        
    返回:
        dict: API响应,包含成功或失败信息
    """
    # DeepSeek API端点
    api_endpoint = "https://api.deepseek.com/beta/chat/completions"
    
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }
    
    # 构建请求数据
    request_data = {
        "model": "deepseek-chat",
        "messages": [
            {
                "role": "system",
                "content": f"""你是一个专业的电商商品价格和库存预测专家,拥有丰富的市场分析经验。
                
请以JSON格式返回你的预测结果,包括predicted_price和predicted_stock字段。

我需要你分析以下商品的历史数据并预测未来趋势:
- 商品ID: {data['product_info']['product_id']}
- 品牌: {data['product_info']['brand']}
- 类别: {data['product_info']['category']}

你将获得该商品的历史价格和库存数据,包括:
1. 每周价格和库存变化
2. 每月价格和库存变化

请基于这些数据进行深入分析,考虑以下因素:
- 价格趋势和波动性
- 库存变化模式
- 季节性因素
- 供应链状况
- 市场需求变化
- 竞争对手定价策略

你的分析必须以JSON格式返回,包含以下字段:
1. product_info: 商品基本信息
2. historical_analysis: 历史数据分析
3. future_predictions: 未来6个月的预测
4. market_factors: 市场因素分析
5. recommendations: 建议和风险因素
"""
            },
            {
                "role": "user",
                "content": f"""请分析以下数据并返回JSON格式的预测结果:

商品信息:
ID: {data['product_info']['product_id']}
品牌: {data['product_info']['brand']}
类别: {data['product_info']['category']}

历史周度价格数据:
{data['week_price']}

历史周度库存数据:
{data['week_stock']}

历史月度价格数据:
{data['month_price']}

历史月度库存数据:
{data['month_stock']}

请提供未来6个月的价格和库存预测,以及相关的市场分析和建议。
"""
            }
        ],
        "temperature": 0.2,
        "response_format": {"type": "json_object"}
    }
    
    try:
        response = requests.post(api_endpoint, headers=headers, json=request_data)
        response.raise_for_status()
        return {"status": "success", "data": response.json()}
    except Exception as e:
        return {"status": "error", "message": str(e)}

4、预测结果示例

以下是系统对某款热销蓝牙耳机的预测结果:

{
    "product_info": {
        "product_id": "SKU-BT500",
        "brand": "Apple",
        "category": "Electronics"
    },
    "historical_analysis": {
        "price_trend": "过去价格走势分析显示,该商品的价格在119.99到129.99元之间波动,没有明显的上升或下降趋势。",
        "stock_trend": "过去库存变化分析显示,库存量在210到235之间波动,整体保持稳定。",
        "volatility": "价格波动性分析显示,价格波动较小,表明市场对该商品的需求相对稳定。",
        "seasonality": "不存在明显的季节性特征。"
    },
    "future_predictions": [
        {
            "month": 1,
            "price_range": [119.99, 129.99],
            "stock_range": [210, 235],
            "confidence": 0.85
        },
        {
            "month": 2,
            "price_range": [119.99, 129.99],
            "stock_range": [210, 235],
            "confidence": 0.85
        },
        {
            "month": 3,
            "price_range": [119.99, 129.99],
            "stock_range": [210, 235],
            "confidence": 0.85
        },
        {
            "month": 4,
            "price_range": [119.99, 129.99],
            "stock_range": [210, 235],
            "confidence": 0.85
        },
        {
            "month": 5,
            "price_range": [119.99, 129.99],
            "stock_range": [210, 235],
            "confidence": 0.85
        },
        {
            "month": 6,
            "price_range": [119.99, 129.99],
            "stock_range": [210, 235],
            "confidence": 0.85
        }
    ],
    "market_factors": {
        "supply": "供应链状况分析显示,供应链稳定,没有明显的供应短缺或过剩。",
        "demand": "需求状况分析显示,需求稳定,没有明显的增长或下降趋势。",
        "competition": "市场竞争情况分析显示,市场竞争适中,没有出现新的竞争者。",
        "technology": "技术发展影响分析显示,当前技术发展对该商品的影响较小。"
    },
    "recommendations": {
        "short_term": "短期建议保持现有库存水平,关注价格波动。",
        "long_term": "长期建议继续监控市场动态,考虑技术发展趋势对需求的影响。",
        "risk_factors": ["供应链中断", "市场需求突然下降"]
    }
}

另一个例子是某款家居产品的预测结果:

{
    "product_info": {
        "product_id": "SKU-HF300",
        "brand": "Samsung",
        "category": "Home"
    },
    "historical_analysis": {
        "price_trend": "过去价格走势分析显示,该商品的价格在42.99到45.99元之间波动,显示出一定的价格稳定性,但偶尔会出现价格波动较大的情况。",
        "stock_trend": "过去库存变化分析显示,库存量一直为0,表明该商品可能一直处于缺货状态,或者库存数据未被正确记录。",
        "volatility": "价格波动性分析显示,虽然大部分时间价格稳定,但偶尔会出现较大的价格波动,这可能与市场供需关系变化有关。",
        "seasonality": "不存在明显的季节性特征。"
    },
    "future_predictions": [
        {
            "month": 1,
            "price_range": [42.99, 45.99],
            "stock_range": [0, 0],
            "confidence": 0.85
        },
        {
            "month": 2,
            "price_range": [42.99, 45.99],
            "stock_range": [0, 0],
            "confidence": 0.85
        },
        {
            "month": 3,
            "price_range": [42.99, 45.99],
            "stock_range": [0, 0],
            "confidence": 0.85
        },
        {
            "month": 4,
            "price_range": [42.99, 45.99],
            "stock_range": [0, 0],
            "confidence": 0.85
        },
        {
            "month": 5,
            "price_range": [42.99, 45.99],
            "stock_range": [0, 0],
            "confidence": 0.85
        },
        {
            "month": 6,
            "price_range": [42.99, 45.99],
            "stock_range": [0, 0],
            "confidence": 0.85
        }
    ],
    "market_factors": {
        "supply": "供应链状况分析显示,该商品可能面临供应紧张的问题,库存量一直为0。",
        "demand": "需求状况分析显示,尽管供应紧张,但价格相对稳定,表明需求可能也相对稳定。",
        "competition": "市场竞争情况分析显示,由于供应紧张,市场上可能存在一定的竞争。",
        "technology": "技术发展影响分析显示,该商品的技术可能已经成熟,技术发展对其价格和需求的影响较小。"
    },
    "recommendations": {
        "short_term": "短期建议:鉴于供应紧张,建议提前采购以避免销售中断。",
        "long_term": "长期建议:考虑寻找替代供应商或商品,以降低供应风险。",
        "risk_factors": ["供应紧张", "价格波动"]
    }
}

5、可视化展示

系统将预测结果以图表和报告形式直观呈现,包括价格预测图、库存预测图和综合分析报告。

价格预测图

价格预测图展示了商品历史价格走势和未来6个月的价格预测范围。图表使用不同颜色区分历史数据和预测数据,并标注了预测的置信度。
在这里插入图片描述

库存预测图

库存预测图展示了商品历史库存变化和未来6个月的库存预测范围。同样使用不同颜色区分历史数据和预测数据,并标注了预测的置信度。

在这里插入图片描述

综合分析报告

系统还会生成一份综合分析报告,包括商品基本信息、历史数据分析、未来预测、市场因素分析和建议。报告以HTML格式呈现,方便商家查看和分享。

6、技术实现

系统主要使用Python实现,核心技术包括:

  1. 数据处理:使用Pandas和NumPy进行数据处理和分析
  2. API调用:使用Requests库调用DeepSeek API
  3. 可视化:使用Matplotlib和Seaborn生成图表
  4. 报告生成:使用HTML和CSS生成综合分析报告

以下是可视化模块的核心代码:

def plot_price_prediction(prediction, output_dir, historical_data=None):
    """
    绘制价格预测图
    
    参数:
        prediction (dict): 预测结果
        output_dir (str): 输出目录
        historical_data (dict, optional): 历史数据
    """
    product_info = prediction['product_info']
    future_predictions = prediction['future_predictions']
    
    # 提取数据
    months = [p['month'] for p in future_predictions]
    price_min = [p['price_range'][0] for p in future_predictions]
    price_max = [p['price_range'][1] for p in future_predictions]
    confidence = [p['confidence'] for p in future_predictions]
    
    # 生成日期
    dates = generate_date_range()
    date_labels = [d.strftime('%Y-%m') for d in dates]
    
    # 创建图表
    plt.figure(figsize=(12, 8))
    
    # 如果有历史数据,先绘制历史数据
    if historical_data:
        # 使用周度历史价格数据
        week_price = historical_data['week_price']
        
        # 创建历史数据的x轴坐标,从-len(week_price)到-1
        hist_x = list(range(-len(week_price), 0))
        
        # 绘制历史价格数据,使用不同的颜色
        plt.plot(hist_x, week_price, 'g-', label='历史周度价格', linewidth=2)
        
        # 添加垂直线分隔历史数据和预测数据
        plt.axvline(x=0, color='r', linestyle='--', alpha=0.7)
        plt.annotate('当前', xy=(0, min(week_price + price_min) - 0.05), xytext=(0, min(week_price + price_min) - 0.1),
                    fontproperties=chinese_font, ha='center', va='top', 
                    bbox=dict(boxstyle="round,pad=0.3", fc="white", alpha=0.8))
    
    # 绘制价格范围
    plt.fill_between(months, price_min, price_max, alpha=0.3, color='blue', label='预测价格范围')
    plt.plot(months, price_min, 'b--', label='预测最低价格')
    plt.plot(months, price_max, 'b-', label='预测最高价格')
    
    # 添加置信度标签
    for i, conf in enumerate(confidence):
        plt.annotate(f'{conf:.2f}', 
                    (months[i], price_max[i]), 
                    textcoords="offset points",
                    xytext=(0,10), 
                    ha='center',
                    fontproperties=chinese_font,
                    bbox=dict(boxstyle="round,pad=0.3", fc="yellow", alpha=0.3))
    
    # 设置图表属性
    plt.title(f'商品价格预测: {product_info["product_id"]} ({product_info["brand"]})', fontproperties=chinese_font)
    plt.xlabel('时间', fontproperties=chinese_font)
    plt.ylabel('价格', fontproperties=chinese_font)
    
    # 设置x轴刻度和标签
    if historical_data:
        # 如果有历史数据,调整x轴范围和标签
        all_x = hist_x + months
        
        # 创建自定义标签
        hist_labels = []
        for x in hist_x:
            if x % 4 == 0:  # 每4周(约1个月)显示一个标签
                hist_labels.append(f'过去{-x}周')
            else:
                hist_labels.append('')
                
        future_labels = [f'未来{x}月' for x in months]
        all_labels = hist_labels + future_labels
        
        plt.xticks(all_x, all_labels, rotation=45, fontproperties=chinese_font)
        
        # 添加网格线以区分周和月
        plt.grid(True, linestyle='--', alpha=0.7)
        
        # 添加背景色区分历史数据和预测数据
        plt.axvspan(min(hist_x), 0, alpha=0.1, color='green')
        plt.axvspan(0, max(months), alpha=0.1, color='blue')
    else:
        # 如果没有历史数据,只显示预测月份
        plt.xticks(months, date_labels, rotation=45)
        plt.grid(True, linestyle='--', alpha=0.7)
    
    # 使用中文字体设置图例
    legend = plt.legend(prop=chinese_font)
    
    # 保存图表
    file_name = f"{product_info['product_id'].replace('/', '_').replace('\\', '_')}_price_prediction.png"
    plt.tight_layout()
    plt.savefig(os.path.join(output_dir, file_name), dpi=300)
    plt.close()

7、系统优势

  1. 准确性:基于大语言模型的分析能力,结合历史数据,提供高准确度的预测
  2. 全面性:同时预测价格和库存,并考虑多种市场因素
  3. 可视化:直观的图表和报告,便于理解和决策
  4. 实用性:提供具体的短期和长期建议,以及风险提示
  5. 灵活性:适用于各类电商商品,可根据需要调整预测参数

8、应用场景

  1. 库存管理:帮助商家优化库存水平,避免积压或缺货
  2. 定价策略:根据预测调整商品定价,最大化利润
  3. 采购计划:指导商家制定合理的采购计划和时间表
  4. 促销活动:根据预测选择最佳促销时机和力度
  5. 风险管理:提前识别潜在风险,制定应对措施

9、未来展望

  1. 多维度预测:增加更多预测维度,如销量、利润率等
  2. 竞品分析:加入竞品数据分析,提供更全面的市场洞察
  3. 实时更新:实现预测结果的实时更新,适应快速变化的市场
  4. 个性化推荐:根据预测结果提供个性化的营销和促销建议
  5. 集成应用:与电商平台和ERP系统集成,实现自动化决策

结论

本文介绍了一个基于大语言模型的电商商品价格与库存智能预测系统,该系统能够分析历史数据,预测未来趋势,并提供决策建议,帮助商家优化库存管理和定价策略。

后面会好好优化,喜欢就点点关注和赞!多了就更新下一期!

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐