AI Agent 上线后,最危险的通常不是某一次 429,而是每一层都在“好心重试”。

SDK 自动重试 2 次,工作流节点再重试 2 次,任务队列最后把整个 Agent 重跑一次。一次用户请求就可能被放大成多轮规划、工具调用和总结请求。单次调用没有超预算,完整任务仍然可能失控。

一、先把错误分为四类

1. 429:限流或额度问题
只有在请求可安全重放时才重试,并使用指数退避和随机抖动。不要在 SDK、工作流、队列三层同时重试。

2. 5xx:上游短暂故障
允许少量重试;连续失败后切换备用路线,并记录切换原因。

3. 超时
超时不代表上游一定没有完成请求。涉及写操作或工具调用时,必须有幂等键或任务 ID,避免重复执行。

4. 4xx 参数错误
400、401、403、404 通常不应自动重试。继续重试只会增加延迟和噪声,应直接进入人工检查或配置修复。

二、把重试和回退收口到一层

一个最小回退器至少应做到:只有一层负责重试;重试次数有上限;连续失败后切换备用路线;预算按完整任务累计,而不是只看单次请求。

伪代码:

RETRYABLE = {429, 500, 502, 503, 504}
for attempt in range(3):
    route = primary if attempt < 2 else backup
    result = route.call(request)
    spent += result.estimated_cost
    if result.ok: return result
    if result.status not in RETRYABLE: stop
    if spent >= task_budget: stop
    sleep(exponential_backoff_with_jitter)

三、每次任务至少记录这些字段

task_id 与幂等键;模型和实际路线;输入、输出与缓存 Token;重试次数、错误码和回退原因;工具调用次数;总延迟与 P95;最终是否成功;完整任务成本。

没有这些记录,就无法区分“单价便宜”和“完整任务真的便宜”。

四、上线前做一组固定回归

准备 20–50 条脱敏真实任务,分别测试正常、429、超时、5xx、长输出和工具调用。比较的指标应该是成功率、P95 延迟和每个成功任务的总成本。

我在做 WoofAPI,也维护了一份 OpenAI-compatible 最小接入模板,包含 Python、Node.js 和成本计算示例:
https://github.com/zcl97630815-cpu/woofapi-openai-compatible-starter

如果你愿意提供一个脱敏请求形状,我可以先做一次无绑定的成本与延迟对比,再决定是否需要调整生产路线。

WoofAPI:https://woofapi.com/?utm_source=csdn&utm_medium=content&utm_campaign=small_team_202608&utm_content=model_fallback_minimum

价格说明:部分路线在特定比较中,输入价格最高可比对应官方输入价格低约 95%;实际节省会随模型、路线和输入/输出组合变化。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐