可靠性与成本工程

一句话定义:可靠性工程让 Agent "出错也能稳",成本工程让 Agent "跑得便宜"——二者是 Agent 从 demo 上生产的两条生命线。

1. 可靠性工程(Reliability)

Agent 比传统软件更易失败(模型非确定、工具外部依赖)。需用工程冗余弥补。

1.1 重试(Retry)

  • 工具调用失败:指数退避重试(1s→2s→4s),设最大次数。
  • LLM 调用超时/限流:重试或切备用模型(见 03 模块降级方案)。
  • 注意:重试可能放大成本与副作用,写操作重试需幂等(见 1.5)。

1.2 降级(Fallback / Degradation)

  • 模型失败 → 切备用模型(Plan B,见 03 模块)。
  • 工具失败 → 规则兜底或转人工。
  • 检索失败 → BM25 兜底(见 04 模块跨 embedding 方案4)。
  • 整体超时 → 返回"部分完成 + 原因",而非卡死。

1.3 熔断(Circuit Breaker)

  • 某工具/依赖连续失败超阈值 → 暂时熔断,快速失败,避免雪崩。
  • 半开探测:一段时间后试恢复。

1.4 超时与预算硬上限

  • 单步超时、单 trace 最大步数、单会话 token/费用上限(见 09、11 模块终止条件)。
  • 超预算立即终止并告警,防死循环烧钱。

1.5 幂等性(Idempotency)

  • 写操作(发邮件、改库)重试安全:用唯一请求 ID 去重。
  • 工具设计应天然幂等(如 upsert 而非 insert)。

1.6 人在环上(Human-in-the-Loop)

  • 危险/不可逆操作人工确认(见 05 模块 interrupt、09 模块审批)。
  • 失败兜底:自动重试耗尽后转人工。

2. 成本工程(Cost Engineering)

2.1 Token 经济

  • 上下文裁剪:只注入相关记忆/历史(见 02 上下文工程)。
  • 压缩长返回、删冗余(见 03 工具返回裁剪)。
  • 监控:单 trace token、日/月费用趋势。

2.2 模型分级路由(Model Routing)

  • 简单步骤用小/便宜模型,关键步骤用大模型(11 模块已提)。
  • 分类/路由/抽取类可用小模型或规则(见 12.03 Skill Router 小模型分类器)。
  • 深度推理用推理模型(o 系列 / DeepSeek-R1),日常用通用模型。

2.3 Prompt Caching(提示缓存)

  • 稳定前缀(系统提示、长知识、工具定义)标记为可缓存,命中后大幅降价 + 提速。
  • Anthropic / OpenAI 均支持;适合 Agent 每步都带相同 system + 工具定义的场景。
  • 要点:把不变内容放前缀、变内容放末尾,提升缓存命中率。

2.4 Batch API

  • 非实时批量任务(离线摘要、批量评测)走 Batch,价格常低 ~50%、延迟放宽。
  • 适合评测集跑分、大规模文档处理。

2.5 并行与共享

  • 独立子任务并行(Parallelization,见 13.01),用时间换吞吐。
  • 多租户共享长上下文/缓存前缀,摊薄成本。

3. 可靠性 × 成本 的权衡

策略 可靠性↑ 成本 取舍
重试 设上限防失控
降级 ↓/→ 牺牲部分能力保可用
小模型路由 ↓↓ 简单任务质量略降
Prompt Caching ↓↓ 几乎无副作用,优先用
人在环上 ↑↑ 人工成本 危险操作必选

4. 反模式

  • ❌ 无超时/预算上限 → 死循环烧钱(见 08 失败模式)。
  • ❌ 写操作无幂等就重试 → 重复发邮件/重复下单。
  • ❌ 所有步骤都用最贵模型 → 成本爆炸。
  • ❌ 系统提示每次都变 → 缓存命中率 0。

5. 学习要点

  • 可靠性靠"重试 + 降级 + 熔断 + 幂等 + 预算 + 人在环"组合拳。
  • 成本靠"裁剪 + 模型路由 + Prompt Caching + Batch"四板斧。
  • Prompt Caching 几乎零副作用,应默认开启。
  • 写操作重试必须幂等。

6. 参考资料

  • AWS/Google SRE 可靠性模式(重试/熔断/降级)
  • Anthropic / OpenAI Prompt Caching 文档
  • 03-工具调用04-记忆系统05-规划09-安全11-工程实践