可靠性与成本工程
一句话定义:可靠性工程让 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-工程实践
评论
评论加载中…