P paper2skillsPlaybook
AI 路线图 →

CAR — Agent步骤因果Shapley归因:多步交互效应定量拆解

Skill-CAR-Agent-Causal-Shapley · 16-智能体工程

causalexperimentforecastingmulti_agent广告与投放供应链与补货MAS与智能体工程WF-A 智能补货WF-B 广告优化WF-F 动态定价WF-I 智能体工程
实现难度⭐⭐⭐☆☆
业务视角
适用角色CTO / 技术负责人 · 产品经理 · 数据工程师
适用平台跨境运营 AI Agent 工程落地 · Amazon SP API + LLM 集成 · 多平台数据采集 Agent
什么情况下用想把 AI 集成到业务系统,但 LLM 稳定性差、幻觉问题、成本控制都是挑战;Agent 任务失败了不知道哪步出了问题
成功是什么样的AI Agent 在生产环境稳定运行,失败可追踪,成本可控,复杂任务完成率 >85%
业务痛点
LLM 返回结果不稳定不可靠AI 幻觉导致业务决策错误Agent 任务失败了不知道哪步出问题AI 调用成本控制不住

1. 解决的问题

运营技术团队面临"补货/广告Agent决策失效但不知哪步出错"——结构因果模型+蒙特卡洛Shapley将多步交互责任定量拆解,MTTR从3天降至0.5天,年化断货损失预防50-150万元

2. 核心算法逻辑

当 LLM Agent 失败时(多退款、错误工具调用、数据泄露),现有工具只能回答"发生了什么"(可观测性)或"是否通过"(评估),但无法回答"哪一步决定导致了失败"。

3. 业务应用场景

业务问题:母婴跨境卖家的补货工作流由4个Agent组成(需求预测 → 库存评估 → 采购决策 → PO生成),大促前某批PO生成了错误采购量(比需求预测低40%),导致大促期间断货损失¥380,000。事后需要确定"哪个Agent的哪步决定是根本原因",以便修复workflow逻辑。

现有工具的局限:AgentTrace(图遍历)定位到"采购决策Agent出错",但无法区分是"库存评估Agent给的输入有偏差"还是"采购决策Agent的安全库存计算逻辑本身有问题"——两者都参与了最终错误,但贡献比例未知。

CAR处理: - 将整次补货执行轨迹建模为SCM,4个步骤互为依赖节点 - 分别对"库存评估步骤"和"采购决策步骤"执行反事实干预(do-operator) - 重新跑轨迹,测量各步干预后PO准确率变化 - 蒙特卡洛Shapley分配:库存评估步骤贡献 φ=0.62,采购决策步骤贡献 φ=0.31

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • ROI预估
  • 断货损失预防:¥50,000-380,000/次(母婴大促场景)
  • 工程排查时间:从3天→0.5天/次,节省工程师成本 ¥15,000+/次
  • ROAS损失预防(广告Agent):¥80,000-150,000/季度
  • 年化综合ROI:¥500,000-1,500,000(视Agent规模)
  • 实施难度:⭐⭐⭐☆☆

7. 代码模板

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

"""
CAR - Causal Agent Replay: Agent步骤Shapley因果归因
基于结构因果模型和蒙特卡洛Shapley估计

依赖: numpy, itertools
"""

import numpy as np
from itertools import combinations
from typing import Callable, List, Dict, Tuple
import random

# ─────────────────────────────────────────────
# 数据结构定义
# ─────────────────────────────────────────────

class AgentStep:
    """Agent执行轨迹中的单个步骤"""
    def __init__(self, step_id: str, action: dict, observation: dict, outcome: float = None):
        self.step_id = step_id
        self.action = action          # 该步执行的动作
        self.observation = observation # 该步的输入上下文
        self.outcome = outcome         # 0=失败, 1=成功, 或连续值

class AgentTrajectory:
    """完整的Agent执行轨迹"""
    def __init__(self, steps: List[AgentStep], final_outcome: float, trajectory_id: str = ""):
        self.steps = steps
        self.final_outcome = final_outcome  # 最终结果(0=失败/1=成功)
        self.trajectory_id = trajectory_id

# ─────────────────────────────────────────────
# CAR核心实现
# ─────────────────────────────────────────────

class CausalAgentReplay:
    """
    CAR: 结构因果模型 + 蒙特卡洛Shapley
    
    用法:
    1. 提供历史失败轨迹
    2. 提供每步的"反事实正确动作"  
    3. 提供轨迹重执行函数
    4. 调用 compute_shapley() 获取每步的因果贡献
    """
    
    def __init__(self, replay_fn: Callable, n_monte_carlo: int = 100, seed: int = 42):
        """
        replay_fn: 给定步骤干预集合,重执行轨迹并返回结果
                  签名: (trajectory, interventions: dict{step_id: counterfactual_action}) -> float
        n_monte_carlo: Shapley蒙特卡洛采样次数(100次约达到±0.05精度)
        """
        self.replay_fn = replay_fn
        self.n_monte_carlo = n_monte_carlo
        np.random.seed(seed)
        random.seed(seed)
    
    def counterfactual_effect(
        self, 
        trajectory: AgentTrajectory,

8. 论文来源

  • 2606.08275