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%
业务痛点
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