paper2skills Playbook

Shopping Companion — 跨会话偏好记忆购物助手(4B≈GPT-5,Lazada真实数据)

Skill-Shopping-Companion-Agent · 14-用户分析

causalexperimentoptimizationrecommendationmulti_agentpricing广告与投放推荐与搜索MAS与智能体工程定价与利润WF-B 广告优化WF-D 选品扫描WF-F 动态定价WF-H 复购增长
年化 ROI10万
业务优先级⭐⭐⭐⭐⭐
业务视角
适用角色运营负责人 / 用户增长负责人 · CMO · 产品经理
适用平台Amazon 买家分层 · DTC 站 LTV 预测 · Klaviyo/Brevo 邮件分群
什么情况下用有大量老客户,但不知道谁是高价值客户、谁快要流失;新客获取成本越来越高,老客复购却上不去
成功是什么样的用户按 RFM/LTV 分层精准触达,高价值用户留存率提升,老客贡献收入占比从 30% 提升到 50%
业务痛点
老客复购率上不去不知道哪些用户要流失了所有用户用同一套活动买过一次就不见了

1. 解决的问题

传统推荐系统的致命缺陷:每次会话从零开始——用户上周告诉导购"我要有机配方奶",下次进来又要重新解释,累计咨询成本极高,转化率低。Shopping Companion 的创新在于构建跨会话长期偏好记忆,将用户偏好结构化存储,Agent 可在后续会话中直接调用,像"私人导购"一样记住每位用户的长期喜好。

2. 核心算法逻辑

传统推荐系统的致命缺陷:每次会话从零开始——用户上周告诉导购"我要有机配方奶",下次进来又要重新解释,累计咨询成本极高,转化率低。Shopping Companion 的创新在于构建跨会话长期偏好记忆,将用户偏好结构化存储,Agent 可在后续会话中直接调用,像"私人导购"一样记住每位用户的长期喜好。

3. 业务应用场景

业务痛点:用户上月购买 Stage 1 奶粉(0-6月龄),宝宝即将 6 个月,需要升阶。传统推荐系统没有记忆——用户进来需要重新搜索,极易被竞品截流。

Shopping Companion 的工作方式:

| 时间节点 | Agent 行为 | 业务价值 | |---------|-----------|---------| | 会话 1(购买 Stage 1) | 偏好识别:`brand=Aptamil, organic=True, stage=1, price_max=80` | 写入偏好记忆 | | 会话 2(6周后) | 调出记忆 → 搜索 Stage 2 同品牌有机配方 → 验证符合偏好 → 推荐 | 主动推荐,无需用户重复说明 | | 会话 3(添加辅食) | 偏好扩展:`category_history=[formula], allergies=dairy_sensitive` →

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

  • 导购成本节省:60% × 5人导购 × 年薪 15万 = 45万元/年
  • 复购率提升 20%:年复购 GMV 假设 2000万 × 20% = 400万元/年
  • 合计潜在 ROI:445万元/年
  • 基础版(规则偏好提取 + 结构化存储):1 周内可落地
  • 进阶版(微调 4B 模型):需要 1-3 个月的业务对话数据标注
  • 基础设施:Redis/数据库存储偏好记忆,无需复杂 MLOps

7. 代码模板

代码块数量:2 · 路径:未检测到

"""
Shopping Companion Agent — 跨会话偏好记忆购物助手
论文: Shopping Companion: Benchmarking and Training LLM Agents
      for Long-Horizon Preference-Grounded E-Commerce Tasks
arXiv:2603.14864 | 2026年3月 | 基于 Lazada.com 120万真实商品
核心结论: 4B 小模型 72.5% ≈ GPT-5 74.0%(双奖励 RL 定向训练)
"""

from dataclasses import dataclass, field
from typing import List, Optional, Dict, Any
from datetime import datetime
import numpy as np


@dataclass
class UserPreference:
    """用户偏好维度数据类"""
    brand: Optional[str] = None                     # 偏好品牌
    organic: Optional[bool] = None                  # 有机认证需求
    price_range: tuple = (0, 999)                   # 价格区间 (min, max)
    category_history: List[str] = field(default_factory=list)  # 购买品类历史
    certifications: List[str] = field(default_factory=list)    # 证书偏好 (EU-organic, DIN EN)
    allergies: List[str] = field(default_factory=list)         # 过敏/排除成分
    no_added_sugar: Optional[bool] = None           # 无添加糖需求
    stage: Optional[int] = None                     # 婴儿月龄阶段 (1/2/3)
    last_updated: str = field(default_factory=lambda: datetime.now().isoformat())


@dataclass
class Product:
    """商品数据类"""
    product_id: str
    name: str
    brand: str
    price: float
    category: str
    organic: bool = False
    certifications: List[str] = field(default_factory=list)
    ingredients: List[str] = field(default_factory=list)
    stage: Optional[int] = None
    rating: float = 4.0


@dataclass
class RecommendationResult:
    """推荐结果"""
    products: List[Product]
    match_explanations: List[str]
    tool_reward: float
    result_reward: float
    total_reward: float


class PreferenceMemory:
    """
    跨会话用户偏好存储/更新/检索
    核心设计:结构化 key-value 存储(非向量),可解释可编辑
    """

    def __init__(self):

8. 论文来源

  • 2603.14864