paper2skills Playbook

CASCADE — 案例推理部署时学习:Contextual Bandit 无参数自适应

Skill-CASCADE-Deployment-Time-Learning · 16-智能体工程

causalexperimentoptimizationrecommendationragmulti_agent广告与投放客服与VOC推荐与搜索知识图谱与RAGMAS与智能体工程WF-B 广告优化WF-C 客服分诊WF-E Review监控WF-G Listing内容优化
实现难度⭐⭐☆☆☆
业务视角
适用角色CTO / 技术负责人 · 产品经理 · 数据工程师
适用平台跨境运营 AI Agent 工程落地 · Amazon SP API + LLM 集成 · 多平台数据采集 Agent
什么情况下用想把 AI 集成到业务系统,但 LLM 稳定性差、幻觉问题、成本控制都是挑战;Agent 任务失败了不知道哪步出了问题
成功是什么样的AI Agent 在生产环境稳定运行,失败可追踪,成本可控,复杂任务完成率 >85%
业务痛点
LLM 返回结果不稳定不可靠AI 幻觉导致业务决策错误Agent 任务失败了不知道哪步出问题AI 调用成本控制不住

1. 解决的问题

部署时学习(Deployment-Time Learning, DTL) 是 CASCADE 提出的第三个 LLM 生命周期阶段:预训练(Pre-training)→ 微调(Fine-tuning)→ 部署时学习。现有方案只在前两个阶段学习,部署后模型冻结,无法从实际使用中积累经验。

2. 核心算法逻辑

部署时学习(DeploymentTime Learning, DTL) 是 CASCADE 提出的第三个 LLM 生命周期阶段:预训练(Pretraining)→ 微调(Finetuning)→ 部署时学习。现有方案只在前两个阶段学习,部署后模型冻结,无法从实际使用中积累经验。

3. 业务应用场景

痛点:广告素材测试结果分散,每次面对新商品都从零构思创意,成功经验无法系统复用。

效果:广告素材出图时间从 3 小时压缩至 40 分钟;新品首投成功率显著高于历史均值。

痛点:差评处理经验分散在人工记录中,客服每次面对新差评需要翻找历史,效率低且不一致。

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

未自动抽取;请查看原始 Skill 卡片。

7. 代码模板

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

"""
CASCADE — Case-Based Continual Adaptation for Large Language Models During Deployment
Paper: arXiv:2605.06702 | May 2026
Use case: WF-B ad creative agent + WF-E review handling case retrieval
"""
from __future__ import annotations

import hashlib
import math
import time
from dataclasses import dataclass, field
from typing import Any


# ─── 数据类 ───────────────────────────────────────────────────────────────

@dataclass
class Case:
    """案例条目:上下文嵌入 + 解决方案 + 观测结果"""
    case_id: str
    context_text: str               # 原始上下文文本(用于可读性)
    context_embedding: list[float]  # 上下文语义嵌入向量
    solution: str                   # 解决方案描述
    outcome: float                  # 0=失败,1=成功(支持 0-1 连续值)
    timestamp: float = field(default_factory=time.time)
    task_domain: str = ""
    tags: list[str] = field(default_factory=list)


# ─── CaseBank(案例库)──────────────────────────────────────────────────

class CaseBank:
    """案例存储 + 相似度检索 + 成功案例保留"""

    def __init__(self, max_size: int = 200) -> None:
        self._cases: list[Case] = []
        self.max_size = max_size

    def add(self, case: Case) -> None:
        """添加新案例,超出容量时淘汰最旧的低质量案例"""
        self._cases.append(case)
        if len(self._cases) > self.max_size:
            # 按 outcome 降序保留,淘汰最旧的失败案例
            self._cases.sort(key=lambda c: (c.outcome, c.timestamp), reverse=True)
            self._cases = self._cases[:self.max_size]

    def cosine_similarity(self, a: list[float], b: list[float]) -> float:
        """余弦相似度计算"""
        dot = sum(x * y for x, y in zip(a, b))
        norm_a = math.sqrt(sum(x * x for x in a))
        norm_b = math.sqrt(sum(y * y for y in b))
        if norm_a == 0 or norm_b == 0:
            return 0.0
        return dot / (norm_a * norm_b)

    def retrieve_similar(
        self,
        query_embedding: list[float],
        task_domain: str = "",
        top_k: int = 5,

8. 论文来源

  • 2605.06702