作者:Maris5188

摘要:本文完整拆解面向电商卖家的AI智能选品系统全流程实现,涵盖多平台数据采集、机会评分算法、DeepSeek大模型报告生成、对话式选品助手等核心模块,基于FastAPI异步架构落地,附关键代码片段和架构设计细节,适合AI+电商、LLM应用落地、异步开发方向开发者参考,可直接复用核心逻辑快速搭建属于自己的选品系统。

一、前言:电商选品的痛点与AI解决方案

做电商的核心共识是“七分靠选品,三分靠运营”,但传统选品模式效率低下、依赖经验,早已跟不上当前快速迭代的市场节奏:

1. 多平台手动检索:逐个打开各电商平台,重复搜索关键词,耗时费力;

2. 数据整理繁琐:手动记录价格、销量、评价等数据到Excel,易出错、效率低;

3. 决策依赖直觉:缺乏量化分析,靠经验判断品类潜力,容错率低;

4. 市场响应滞后:一个品类完整分析需2-3天,等分析完成,市场红利已消失。

基于此,我们打造了这套AI智能选品系统,核心目标:用AI将选品全流程压缩至5分钟,实现“输入一个关键词,输出一份完整选品报告”,让卖家从繁琐的手动操作中解放,聚焦运营核心。

二、系统核心能力与技术栈选型(实战重点)

2.1 核心能力拆解(可直接落地复用)

系统围绕“数据采集-分析-决策-交互”全链路设计,核心能力可直接对接电商卖家需求:

  • 一键多平台采集:输入关键词,自动各电商平台(需求侧)+批发网(供给侧)商品数据,无需手动操作;
  • 市场趋势自动化分析:集成百度指数、阿里指数抓取,自动判断品类热度、同比/环比变化,规避冷门品类;
  • AI智能报告生成:数值分析+DeepSeek大模型洞察结合,既有精准的价格、销量统计,也有专业的市场分析和商品推荐理由;
  • 对话式选品助手:自然语言交互,支持意图识别,聊一聊就能创建选品任务,零操作门槛;
  • 一键导出:支持Excel(3个Sheet)、CSV格式导出,数据可直接用于运营决策或供应商对接。

2.2 技术栈选型(适配异步、高可用,附选型理由)

结合电商选品“高并发采集、低延迟响应、数据可靠”的需求,技术栈选型如下(附实战选型逻辑,避免踩坑):

组件

选型

选择理由(实战重点)

Web框架

FastAPI

原生支持async/await,异步不阻塞,自带BackgroundTasks实现后台任务,接口响应毫秒级,适配多平台数据采集的并发需求

ORM

SQLAlchemy Async + aiomysql

异步连接数据库,避免采集、分析过程中阻塞接口,自带连接池管理,提升数据库操作效率

大模型

DeepSeek

中文理解能力强,性价比高,API兼容OpenAI格式,可快速替换适配,适合生成中文市场洞察和对话交互

电商数据采集

第三方API

一个接口覆盖4大电商平台,无需单独开发各平台爬虫,减少反爬风险,降低开发成本

趋势爬虫

Crawl4AI + Playwright

无头浏览器渲染动态页面,结合LLM结构化提取数据,解决百度指数、阿里指数无API的问题

缓存

Redis

缓存API采集结果、Cookie信息,TTL设置24小时,减少重复调用API,节省额度、提升响应速度

请求校验

Pydantic v2

强类型校验,避免非法请求导致的系统异常,简化参数处理逻辑,提升代码可维护性

三、核心模块深度拆解(附关键代码,可直接复用)

3.1 多平台数据采集与归一化(基础核心)

核心挑战:不同电商平台的数据字段差异巨大(如淘宝销量字段为sell_num,京东为comments,拼多多为sales),需做统一归一化,确保后续分析层无需关注数据来源。

采集策略:每个平台采集3页×40条数据(最多480条原始数据),区分需求侧(重点看销量、价格)和供给侧(重点看供应价、起订量)。

关键代码(数据归一化,OneBoundNormalizer类核心逻辑):

python
# 不同平台数据归一化映射,解决字段不一致问题
class OneBoundNormalizer:
    @staticmethod
    def normalize(product, platform):
        # 淘宝数据归一化
        if platform == "taobao":
            return {
                "product_name": product.get("title", ""),
                "price": float(product.get("price", 0.0)),
                "monthly_sales": int(product.get("sell_num", 0)),
                "review_count": int(product.get("comment_num", 0)),
                "rating": float(product.get("score", 0.0)),
                "source_platform": "taobao"
            }
        # 京东数据归一化
        elif platform == "jd":
            return {
                "product_name": product.get("name", ""),
                "price": float(product.get("price", 0.0)),
                "monthly_sales": int(product.get("comments", 0)),  # 京东用评论数近似销量
                "review_count": int(product.get("comments", 0)),
                "rating": float(product.get("score", 0.0)),
                "source_platform": "jd"
            }
        # 拼多多数据归一化
        elif platform == "pdd":
            return {
                "product_name": product.get("goods_name", ""),
                "price": float(product.get("price", 0.0)),
                "monthly_sales": int(product.get("sales", 0)),
                "review_count": int(product.get("comment_count", 0)),
                "rating": float(product.get("avg_score", 0.0)),
                "source_platform": "pdd"
            }
        # 1688数据归一化
        elif platform == "1688":
            return {
                "product_name": product.get("title", ""),
                "price": float(product.get("price", 0.0)),
                "monthly_sales": int(product.get("sale_info", {}).get("gmv_30days", 0)),
                "review_count": int(product.get("comment_count", 0)),
                "rating": float(product.get("score", 0.0)),
                "source_platform": "1688"
            }
        else:
            return None

容错与缓存设计(避免API调用失败、重复消耗):

  • API调用采用指数退避重试机制,最多重试3次,应对网络波动;
  • Redis缓存采集结果,缓存键格式:sel:search:{平台}:{关键词}:{页码},TTL=24小时;
  • 采集失败时,标记为“部分失败”,不影响整体任务执行,保证核心数据可用。

3.2 机会评分算法(量化选品潜力,核心亮点)

选品的核心是“判断该不该做”,我们设计了五维加权评分模型(满分100分),用量化数据替代经验判断,确保选品的科学性。

评分模型(权重贴合电商卖家核心需求):

维度

权重

衡量指标

计算逻辑

销量表现

30%

市场验证程度

平台同类商品月销量归一化(0-100分)

利润空间

25%

盈利能力

(售价-供应价)/售价 × 100,归一化处理

口碑评价

15%

用户认可度

商品评分×评价数量占比,归一化处理

价格竞争力

15%

价格优势

低于同类商品均价越多,分数越高

商品评分

15%

品质保障

商品基础评分(0-5分)归一化至0-100分

评分计算公式(可直接复用):

\text{Opportunity Score} = 0.30 \times S_{sales} + 0.25 \times S_{margin} + 0.15 \times S_{reviews} + 0.15 \times S_{price} + 0.15 \times S_{rating}

核心逻辑:销量和利润权重最高,贴合电商卖家“卖得动、赚得到”的核心需求,其他指标辅助验证商品潜力。

3.3 DeepSeek大模型集成(AI增强,提升效率)

核心设计原则:AI增强但不依赖,数值计算(价格、销量、评分)由代码确定性完成,LLM只负责语言理解和洞察生成,避免LLM做数学题导致的错误。

LLM调用场景与参数调优(实战关键,避免冗余消耗):

应用场景

Temperature

调优理由

输出格式

报告市场概述

0.3

低随机性,保证事实准确,贴合数据趋势

≤200字,简洁明了的趋势总结

商品推荐理由

0.3

结构化输出,贴合商品数据,不夸大

JSON格式,包含核心优势、风险提示

对话式选品助手

0.7

适度发散,提升对话自然度,贴合用户口语化需求

自然语言+嵌入式JSON(意图识别)

关键代码(DeepSeek API调用,兼容OpenAI格式):

python
import requests
import json

class DeepSeekService:
    def __init__(self, api_key):
        self.api_key = api_key
        self.base_url = "https://api.deepseek.com/v1/chat/completions"
   
    async def generate_report_summary(self, market_data):
        """
生成报告市场概述,低随机性"""
        prompt = f"""基于以下市场数据,生成≤200字的市场概述,重点说明品类热度、价格分布、销量趋势:
        {json.dumps(market_data, ensure_ascii=False)}
        要求:客观、简洁,基于数据,不添加主观猜测,语言专业。"""
        response = requests.post(
            self.base_url,
            headers={
                "Content-Type": "application/json",
                "Authorization": f"Bearer {self.api_key}"
            },
            json={
                "model": "deepseek-chat",
                "messages": [{"role": "user", "content": prompt}],
                "temperature": 0.3,
                "max_tokens": 200
            }
        )
        return response.json()["choices"][0]["message"]["content"]

3.4 对话式选品助手(提升用户体验,降低门槛)

核心设计:打破“填表单→看报告”的传统模式,支持自然语言交互,用户聊一聊就能完成选品任务,适配非技术背景的电商卖家。

意图识别机制:LLM回复中嵌入结构化JSON数据,系统自动解析,渲染快捷操作按钮,实现“对话→执行”零门槛。

示例(用户与AI交互流程):

用户:最近蓝牙耳机市场怎么样?想找50-200块的

AI助手:蓝牙耳机当前市场热度较高,阿里指数近7天环比上涨12%,价格集中在80-150元,销量top10以降噪款为主...[建议分析价格区间50-200元的蓝牙耳机][一键创建选品任务]

(系统自动解析AI回复中的JSON意图,渲染“一键创建任务”按钮,用户点击即可触发选品流程)

意图识别JSON格式(可直接复用解析逻辑):

json
{
  "intent": "create_task",
  "params": {
    "keyword": "
蓝牙耳机",
    "price_min": 50,
    "price_max": 200
  }
}

四、系统整体架构与任务执行流程

4.1 整体架构(分层设计,便于扩展)

采用经典分层架构,融入AI能力,各层职责清晰,便于后续扩展(如新增电商平台、优化算法):

plain text
┌──────────────────────────────────────────────────────────┐
│                   
前端 (Vue.js + Element Plus)            │
└───────────────────────────┬──────────────────────────────┘
                            │ HTTPS + JWT Bearer Token
┌───────────────────────────▼──────────────────────────────┐
│                  API 层 (FastAPI / ASGI)                   │
│          任务管理  ·  报告查询  ·  对话交互  ·  管理       │
└───────────────────────────┬──────────────────────────────┘
                            │
┌───────────────────────────▼──────────────────────────────┐
│                     服务编排层                              │
│  SelectionService ──► DataService ──► ReportService       │
│  SelectionChatService    TrendDataService                 │
└──────────┬───────────────────────────────┬───────────────┘
           │                               │
┌──────────▼───────────┐    ┌──────────────▼───────────────┐
│   数据采集层          │    │        AI / LLM 层           │
│  OneBound API 客户端  │    │  DeepSeek (报告/对话/提取)    │
│  Crawl4AI 趋势爬虫    │    │  Crawl4AI + LLM 策略         │
└──────────┬───────────┘    └──────────────┬───────────────┘
           │                               │
┌──────────▼───────────────────────────────▼───────────────┐
│                    数据存储层                               │
│          MySQL (异步 SQLAlchemy)  +  Redis (缓存)          │
└──────────────────────────────────────────────────────────┘

4.2 任务执行全流程(异步设计,用户无等待)

用户输入关键词创建任务后,系统后台异步执行4个阶段,接口毫秒级返回,前端通过轮询获取进度,不影响用户操作:

  1. 阶段1:数据采集——抓取4大平台商品数据+百度/阿里指数,归一化后写入数据库;
  1. 阶段2:数据分析——计算商品利润率、机会评分,完成Top10潜力品排序;
  1. 阶段3:报告生成——代码计算数值部分,LLM生成市场概述和推荐理由,整合为完整报告;
  1. 阶段4:任务完成——报告入库,前端轮询获取结果,支持导出和查看详情。

异步任务核心代码(FastAPI BackgroundTasks):

python
from fastapi import APIRouter, BackgroundTasks
from sqlalchemy.ext.asyncio import AsyncSession

router = APIRouter(prefix="/seller/api/selection")

@router.post("/task/create")
async def create_task(
    keyword: str,
    price_min: float = 0,
    price_max: float = 10000,
    background_tasks: BackgroundTasks,
    db: AsyncSession
):
    # 1.
创建任务记录,状态设为“排队中”
    task = await selection_service.create_task(
        keyword=keyword,
        price_min=price_min,
        price_max=price_max,
        db=db
    )
    # 2. 后台异步执行选品任务,不阻塞接口返回
    background_tasks.add_task(selection_service.execute_task, task.id, db)
    # 3. 立即返回任务信息,前端轮询查询状态
    return {"code": 200, "data": task, "msg": "任务已创建,正在执行"}

五、工程实践与避坑指南(实战重点)

5.1 为什么不用Celery?(按需选择,避免过度设计)

产品早期选择FastAPI BackgroundTasks而非Celery,核心原因是“简化部署、降低成本”,具体对比:

对比项

BackgroundTasks

Celery

部署复杂度

零额外基础设施,直接集成在FastAPI中

需部署Broker(Redis/RabbitMQ)+ Worker,复杂度高

适用场景

中低并发、单实例部署,适合产品早期

高并发、分布式部署,适合业务量爆发后

代码迁移成本

低,后续可直接替换为Celery(只需修改任务调用方式)

高,需提前设计任务队列、持久化等逻辑

避坑建议:产品早期无需追求“分布式”,优先实现核心功能,等用户量、任务量增长后,再迁移到Celery即可。

5.2 LLM调用容错设计(避免系统崩溃)

大模型调用存在不确定性(如网络波动、API限流),核心容错策略:

  • 核心数据与AI生成数据分离:数值分析部分(价格、销量、评分)由代码计算,确保永远正确;
  • LLM调用非阻塞:即使LLM调用失败,报告核心数据依然完整,仅缺失市场概述和推荐理由;
  • 重试机制:LLM调用失败后,自动重试2次,避免偶发故障导致的体验下降。

5.3 多租户安全隔离(面向多卖家场景)

系统面向多个电商卖家,安全隔离是底线,核心实现:

  • JWT身份认证:每个请求携带JWT令牌,解析出shop_id,所有数据库查询自动附加WHERE shop_id = ?;
  • 数据隔离:任务、报告、对话记录均绑定shop_id,卖家只能查看自己的相关数据;
  • 敏感数据脱敏:1688供应商名称、联系方式等敏感信息自动脱敏,保护供应商隐私。

六、总结与未来演进

这套AI智能选品系统的核心设计哲学:数据驱动(保证底线)、AI增强(提升效率)、异步优先(优化体验)、安全隔离(保障可靠),完美解决传统选品的痛点,可直接落地用于电商卖家选品决策。

未来演进方向(可按需扩展):

  • Phase 2:引入Celery+WebSocket,实现分布式任务和实时状态推送,替代前端轮询;
  • Phase 3:新增抖音电商、Shopee等平台,支持定时选品,自动监控品类变化;
  • Phase 4:开发选品Agent,基于历史数据学习,实现自动化选品决策,进一步降低用户操作门槛。

对于想入门AI+电商、FastAPI异步开发、LLM应用落地的开发者,本文提供了完整的实战思路和代码片段,可直接复用核心模块,快速搭建自己的选品系统。如果有疑问,欢迎在评论区交流探讨!

关键词:AI选品系统;FastAPI;DeepSeek;多平台数据采集;电商选品;LLM应用落地

作者:Maris5188

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐