用 Amazon Bedrock AgentCore Optimization 发现生产环境中的静默智能体故障

2026-07-24 25 预计阅读时间: 1 分钟
来源: aws.amazon.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:10 分钟

AI 智能体最棘手的生产事故,往往不会触发传统告警:接口返回 200、延迟正常、模型成功生成内容,最终结果却是错的。Amazon Bedrock AgentCore optimization 关注的正是这类“静默失败”,通过跨会话发现、解释并排序行为失败模式,帮助团队优先修复影响最大的缺陷。

健康检查正常,不等于任务完成正确

传统服务监控擅长回答这些问题:

  • 请求是否成功返回?
  • 响应时间是否超过阈值?
  • CPU、内存或错误率是否异常?
  • 模型调用和工具调用是否发生异常?

但智能体还需要回答另一组问题:

  • 用户要求取消订单,智能体是否真的取消了正确订单?
  • 智能体是否调用了正确工具,并传入正确参数?
  • 最终回复是否与工具执行结果一致?
  • 遇到缺失信息时,它是主动澄清,还是自行猜测?

例如,一次会话可能没有任何技术错误:模型生成成功,工具返回成功,最终回复也语句通顺。但如果用户要求退款 100 元,智能体却只创建了 10 元退款,这次任务在基础设施层面是成功的,在业务层面却已经失败。

因此,生产可观测性不能只记录 status=success。至少还要保留用户目标、智能体决策、工具参数、工具结果、最终答复以及业务验证结果。

从单次异常转向跨会话失败模式

孤立查看一条轨迹,很容易把问题归因于“模型偶尔不稳定”。跨会话分析则能揭示更有修复价值的模式,例如:

  • 特定意图经常选择错误工具;
  • 当订单包含多个商品时,退款金额更容易出错;
  • 工具已经拒绝操作,最终回复却仍声称操作成功;
  • 缺少账号信息时,智能体没有发起澄清;
  • 某一版本的提示词发布后,任务成功率持续下降。

AgentCore optimization 的价值不只是找出失败会话,还在于发现、解释和排列这些重复出现的失败模式。排序尤其重要:一个每天出现两次的严重错误,与一个每天影响数千次会话的中等错误,需要完全不同的处理优先级。

团队可以用一个简单模型评估修复顺序:

影响分数 = 失败会话数 × 业务严重度 × 模式置信度

实际使用时,还可以加入受影响用户数、资金风险、合规风险和人工处理成本。分数不是为了制造绝对精确的数字,而是为了让修复顺序可以解释、可以复核。

可以这样实践:构造一个最小失败模式分析器

下面的示例不代表 AgentCore optimization 的真实 API,而是一个可以直接运行的本地原型。它演示如何把会话级验证结果聚合为失败模式,并按影响分数排序。接入实际系统时,可以将示例数据替换为从日志平台、对象存储或智能体追踪系统导出的记录。

将以下内容保存为 analyze_agent_failures.py,然后使用 Python 3.10 或更高版本运行:

from collections import defaultdict

sessions = [
    {
        "session_id": "s-001",
        "intent": "refund",
        "pattern": "wrong_refund_amount",
        "severity": 5,
        "confidence": 0.98,
        "passed_health_check": True,
        "business_success": False,
    },
    {
        "session_id": "s-002",
        "intent": "refund",
        "pattern": "wrong_refund_amount",
        "severity": 5,
        "confidence": 0.95,
        "passed_health_check": True,
        "business_success": False,
    },
    {
        "session_id": "s-003",
        "intent": "cancel_order",
        "pattern": "claimed_success_after_tool_rejection",
        "severity": 4,
        "confidence": 0.90,
        "passed_health_check": True,
        "business_success": False,
    },
    {
        "session_id": "s-004",
        "intent": "order_status",
        "pattern": None,
        "severity": 0,
        "confidence": 1.0,
        "passed_health_check": True,
        "business_success": True,
    },
]

patterns = defaultdict(lambda: {
    "sessions": [],
    "severity_total": 0,
    "confidence_total": 0.0,
})

for session in sessions:
    silent_failure = (
        session["passed_health_check"]
        and not session["business_success"]
        and session["pattern"] is not None
    )
    if not silent_failure:
        continue

    item = patterns[session["pattern"]]
    item["sessions"].append(session["session_id"])
    item["severity_total"] += session["severity"]
    item["confidence_total"] += session["confidence"]

ranked = []
for name, item in patterns.items():
    count = len(item["sessions"])
    avg_severity = item["severity_total"] / count
    avg_confidence = item["confidence_total"] / count
    impact_score = count * avg_severity * avg_confidence
    ranked.append({
        "pattern": name,
        "count": count,
        "impact_score": round(impact_score, 2),
        "sessions": item["sessions"],
    })

ranked.sort(key=lambda row: row["impact_score"], reverse=True)

for index, row in enumerate(ranked, start=1):
    print(
        f"{index}. {row['pattern']} "
        f"score={row['impact_score']} "
        f"sessions={','.join(row['sessions'])}"
    )

运行命令:

python analyze_agent_failures.py

预期输出:

1. wrong_refund_amount score=9.65 sessions=s-001,s-002
2. claimed_success_after_tool_rejection score=3.6 sessions=s-003

这个原型有意把“系统是否健康”和“业务是否成功”拆成两个字段。没有这层区分,静默失败会被成功请求淹没,后续分析也就失去了入口。

让诊断结果能够指导修复

发现模式之后,团队还需要把解释落到可修改的组件上。常见的定位路径包括:

  • 工具选择错误:检查工具描述是否重叠,提示词是否提供了明确选择条件。
  • 参数提取错误:增加结构化输出约束,并在执行前做类型、范围和业务规则校验。
  • 工具结果被误读:要求最终回复引用结构化执行状态,禁止仅依据自然语言猜测成功与否。
  • 缺少澄清步骤:为订单号、金额、身份等关键字段设置必填条件。
  • 多步骤任务中途偏离:记录计划、每步结果和终止原因,以便识别偏离发生在哪一步。

修复后不要只重跑一条示例。应把该模式下的历史失败会话整理成回归集,同时加入相似但本来成功的会话,避免修复一个问题后破坏正常路径。

上线前后的采用清单

引入 AgentCore optimization 或类似的行为分析机制时,可以按以下顺序推进:

  1. 为高价值任务定义可验证的业务成功条件,而不是依赖模型自评。
  2. 统一记录会话 ID、用户目标、模型决策、工具调用、工具结果和最终答复。
  3. 对敏感字段做脱敏,并设置日志保留期限和访问权限。
  4. 先覆盖退款、支付、权限变更等高风险流程,再扩展到低风险问答。
  5. 按影响范围、严重度和置信度排列失败模式。
  6. 将已确认模式转化为离线评测与发布前回归测试。
  7. 修复后持续观察模式发生率,而不是只确认代码已经部署。

边界也要明确:模式聚类和自动解释可以加快定位,但不能天然证明根因。低置信度模式需要人工抽样复核;涉及资金、安全或合规的操作,还应保留确定性校验和人工审批。真正可靠的智能体运维,需要把 AgentCore optimization 提供的跨会话洞察,与业务断言、回归评测和变更管理结合起来。


相关推荐