把基于AI大模型的电商套图生成工作流集成到PHP项目

6 阅读4分钟

实际效果

1.上传一张随手拍的产品照片

image.png

2. 视觉分析格式化提取商品信息, 允许用户审核调整

image.png

3.设置生图选项

image.png

4.生成电商套图

image.png

项目开源地址

github.com/Byte-Wang/i…

1. 核心思路与整体流程

本系统的核心思路是将“人类视觉分析师”与“专业摄影师/美工”的工作流程数字化。通过多步串联的 AI 任务,将一张普通的商品实拍图转化为一整套符合电商逻辑的营销素材。

整体流程分为以下五个核心步骤:

  1. 图片视觉分析(Visual Analysis):利用 Vision LLM 对输入图片进行全方位扫描,识别商品属性。
  2. 结构化内容提取(Content Extraction):将分析结果转化格式化标准化的 JSON 数据,包含卖点、场景、目标人群等。
  3. 输出格式化信息:为后续生成任务准备精确的 Prompt 组件,如材质细节、印花约束等。
  4. 用户交互与描述微调:(可选)允许用户在生成前修改 AI 提取的描述,确保生成的方向符合预期。
  5. 逐个生成专业套图(Sequential Generation):基于提取的信息,针对不同营销场景(白底、模特、卖点、场景等)生成对应的专业图片。

2. 步骤拆解与核心逻辑分析

2.1 视觉分析与内容提取

这是整个链路的“大脑”。我们不仅仅是识别图片里有什么,而是要求 AI 扮演一位“资深电商视觉分析师”。

核心逻辑:

通过构造复杂的 System Prompt,强制模型以特定的 JSON 结构输出。这保证了后续逻辑可以稳定地解析出商品的颜色、材质、版型、卖点(Selling Points)等。

关键 Prompt 片段:

在 /app/Services/AnalyzeService.php 中定义了核心提示词:

  private const ANALYSIS_PROMPT_ZH = '
    你是一位拥有15年以上电商经验的顶级视觉分析师和爆款文案策划师。
    请仔细观察图片中的商品,按以下 JSON 格式输出分析结果,只输出 JSON,不要输出其他内容:

{
  "product_name": "商品详细名称,包含品类、材质、款型等关键词",
  "product_description_for_prompt": "英文描述,用于图像生成 Prompt,包含颜色/款型/印花/材质等视觉细节,50词以内",
  "product_type": "服装 | 3C数码 | 家居 | 美妆 | 食品 | 其他",
  "garment_position": "top | bottom | full-body | non-apparel(非服装统一填 non-apparel)",
  "visual_features": ["视觉特征1", "视觉特征2"],
  "selling_points": [
    {"icon": "fabric|fit|design|comfort|quality|function|scene", "zh": "中文卖点标题", "en": "English title", "zh_desc": "中文说明≤15字", "en_desc": "English desc ≤12 words", "visual_keywords": ["English keyword1", "English keyword2"]}
  ],
  "target_audience": "目标人群描述",
  "target_scenes": ["使用场景1", "使用场景2"],
  "product_style": "商品风格(如:法式浪漫 / 日系可爱 / 简约商务 / 运动休闲)",
  "color": "精确英文色值描述(如 pure white、lavender purple)",
  "material": "主要材质(若可识别)",
  "style": "版型描述(宽松oversized、修身等)",
  "print_design": "印花/设计描述",
  "print_design_lock": "精确约束短语,要求 exact same print pattern, color and position must not change",
  "product_name_zh": "中文商品名(简短版,用于文案叠加)"
}

selling_points 请提炼 3-5 条,优先级:材质 > 版型 > 设计感 > 舒适性 > 使用场景。从图片可见特征推断,不要凭空捏造。';

调用与解析:

系统调用 OpenAI (GPT-4o) 或 Claude 等视觉接口,获取原始文本后,通过 extractJson 方法进行清洗和解析:

private function extractJson(string $text): array {
    // 处理 Markdown 代码块包裹的情况
    $raw = trim($text);
    if (strpos($raw, '```json') !== false) {
        $raw = explode('```json', $raw, 2)[1];
    }
    // ... 解析并返回数组
    return json_decode($raw, true);
}

2.2 提示词工程(Prompt Engineering)的精细化构建

生成的图片质量取决于 Prompt 的专业程度。我们采用了“乐高式”的构建方式。

质量锁(Quality Lock):

为了保证生成的图片具有专业摄影感,我们在每个 Prompt 后追加了高质量约束:

$QUALITY = "shot on Sony A7R V, 85mm f/2.0 lens, natural diffused studio lighting, authentic commercial product photography... CRITICAL: Keep the EXACT same product design, color, print...";

一致性锁(Consistency Lock):

这是电商图生成的难点。我们通过“参考图约束”和“文字锁定”来保证生成的商品不走样:

$PRODUCT_REF_LOCK = "CRITICAL HIGHEST PRIORITY: Product reference image is provided... Keep EXACT same: silhouette, print pattern, print position, all colors...";

2.3 针对性场景生成逻辑

根据不同的 typeId(如 model, lifestyle, key_features)动态构建完全不同的 Prompt 结构。

  • 卖点图(Key Features):会自动设计“放大镜”效果或“标注线”效果。
  • 模特图(Model Shot):会根据提取的 target_audience 自动匹配模特肤色(Asian/Western)和性别。
  • 多场景图(Multi-scene):会构建“3-panel collage”类似的指令,要求模型在同一张图中生成多个场景。

2.4 逐个生成与资源调度

生成任务是异步或逐个进行的,以应对接口频率限制和长耗时问题。

foreach ($types as $typeId) {
    // 间隔调用,避免触发速率限制
    if (!$isFirst) usleep(1500000);
    
    // 构建特定类型的 Prompt
    $prompt = $this->promptBuilder->buildPrompt($typeId, $desc, $sellingPoints, $options);
    
    // 调用 AI 提供商生成图片
    $imgBytes = $providerInstance->generate($key, $prompt, $baseUrl, $model, $refImg, $options);
    
    // 保存并记录结果
    ImageHelper::saveImage($imgBytes, $outPath);
}

3. 技术总结

本系统的成功在于将 LLM 的理解能力Diffusion 模型的表现能力 进行了深度解耦与配合:

  1. Vision LLM 负责“审稿”,提取灵魂(特征与文案)。
  2. PromptBuilder 负责“编剧”,将灵魂转化为 AI 绘画能听懂的摄影语言。
  3. Image AI 负责“拍摄”,在严格的一致性约束下输出成片。

这种全链路自动化的方式,极大地降低了电商卖家的素材制作门槛,实现了从“拍一张样衣”到“出一套大片”的质变。