知识与集成

AI Agent 对接业务系统:接口限流后如何退避而不误报结果

业务接口返回 429,不等于查询结果为空。梳理配额作用域、Retry-After、有限退避、缓存和验收用例,避免智能体重试风暴与错误汇总。

百信 AI Agent发布于 约 8 分钟
办公桌上的模糊监控屏幕、时钟与网络设备,业务接口限流处理示意图
办公桌上的模糊监控屏幕、时钟与网络设备,业务接口限流处理示意图

员工让 AI Agent 查询一批 ERP 库存,接口却返回 HTTP 429。此时最危险的回答不是“稍后再试”,而是把限流当作“库存为零”,或在后台无上限地重发请求。企业智能体对接业务系统时,应把限流视为独立的查询状态:先确认配额边界,再按可等待时间退避,仍取不到可靠结果就明确告知用户。

先区分限流、权限错误和业务失败

HTTP 429 表示调用方在一段时间内发送了过多请求;它不是业务数据为空,也不证明账号没有权限。权限不足、参数错误、接口超时、源系统返回成功但字段缺失,各有不同处理路径。智能体应先记录 HTTP 状态、接口、请求标识、调用方和发生时间,再决定是否重试,不能把所有非 200 响应统一改写成“未查到”。RFC 6585 对 429 的定义并不规定限额必然按用户、令牌还是整个平台计算,这一点必须向接口提供方核实。

例如构造的库存查询:用户要求查看某物料在三个仓库的当前可用量,前两个仓库成功,第三个仓库返回 429。回答应说明“第三个仓库本次未取得实时结果”,并标注前两项数据的查询时点;不能把第三项填成零,也不能把部分结果描述成完整汇总。若业务必须全量一致,应等待全部取得后再给出合计。

先摸清配额作用域和查询成本

设计退避前,先列出接口契约:限额作用于租户、应用、访问令牌、用户、具体端点,还是共享出口?窗口是固定时间段、并发数,还是每次请求消耗不同权重?这些不能从一次 429 推断。还要问清分页、批量查询、缓存和条件查询是否受支持,以及接口是否返回剩余额度或重试提示。没有文档时,应与源系统负责人共同做小规模观察,而不是靠高频探测反推上限。

从任务链路看,一次自然语言问题可能拆成多次检索、字段补全和分页。应给每个用户请求设置总调用预算,优先合并合法查询、缩小字段与时间范围,避免同一个答案在多个工具层重复拉取全表。本站系统集成页面公开将只读、限流、缓存与错峰作为集成评估策略;具体接口配额和实现仍取决于项目与源系统,本文不声称本站已经内置某个限流组件。

读懂 429 与 Retry-After

收到 429 后,先检查响应是否提供 Retry-After。按 RFC 9110,这个字段可以是 HTTP 日期,也可以是秒数;429 响应可以带它,但不是每次都有。若有可信提示,调度器应按该提示和本任务的最大等待预算选择下一次尝试,而不是立即循环重发。日期形式还应考虑本机时钟与服务端时间的偏差。

没有提示时,可以采用有限次数、逐次拉长等待并加入随机抖动的退避策略。数字阈值不宜抄成通用规则:一个交互式问答可接受的等待,与夜间批处理完全不同。若源系统要求等待的时间已经超过用户愿意等的时长,应结束本轮交互,清楚说明暂未取得新数据;只有用户同意且产品支持可靠的异步任务时,才考虑后续通知。

限定重试预算,避免多层放大

重试应有单一负责层。调用库、网关和智能体编排器如果各自自动尝试三次,一次用户请求可能被放大成九次甚至更多,恰好在源系统最拥挤时制造额外负载。Microsoft 的瞬态故障指南建议检查 SDK 是否已内置重试,并给重试设上限、退避和整体延迟预算。遇到持续 429 时,应停止即时尝试,向上游传播“受限、可稍后重试”的状态。

本文的有限重试只针对确认可安全重复的只读查询。写入 ERP 单据、提交 OA 审批或触发设备动作,不能因为收到 429 或超时就擅自重发;请求是否已经被接收、操作是否幂等,需要另一套确认机制。有关写操作边界参看ERP 写入幂等文章。即使只读请求最终成功,也要按接口返回校验文章检查字段、单位与时间,不能只看 HTTP 200。

排队、缓存与用户可见的等待状态

多位员工同时查询同一类数据时,可在项目允许的边界内做请求合并、队列限速或错峰;先保护源系统,再改善单个请求的等待体验。缓存只适用于权限、租户、参数和有效期都能隔离的查询结果。展示缓存值时要明示“截至何时”,并确认该业务允许使用非实时数据;库存、审批结果等会影响决策的信息,不应悄悄以旧值冒充当前状态。权限撤销后,旧缓存也不得继续对原用户开放。

前端与智能体回复至少区分四种状态:正在查询、受限等待、仅有部分结果、未取得可靠结果。若采取异步排队,还需有任务标识、取消或过期规则、结果权限复核和通知失败处理。若没有这些保障,简单说明“本次查询受限,请稍后重新发起”比假装任务仍在后台执行更诚实。

用峰值与故障用例做验收

验收不只测一条查询成功。可以用隔离的测试环境和源系统同意的负载,覆盖单人连续查询、多人同时查询、分页放大、部分端点返回 429、带秒数和日期形式的 Retry-After、没有该字段、权限错误、长时间受限以及恢复后的第一轮请求。测试环境的限额并不自动等于生产限额,结果需要注明配置。

  • 负载保护:统计原始用户请求数、实际下游调用数、重试次数和排队时长,确认没有重试风暴。
  • 结果正确:429 时不输出零值或“无记录”;部分结果、缓存时点与失败范围能够被读者辨认。
  • 预算可控:超出最大等待时间或次数后及时停止,不在用户结束会话后无期限占用配额。
  • 恢复可观测:记录受限比例、等待分布、最终成功和放弃原因,用于与源系统负责人调整调用方式。

Microsoft 的 Retry Storm 反模式说明强调避免无限重试、尊重服务端等待提示并区分可重试故障。验收结论应写清实际接口、调用身份与环境,不能把示例策略宣传为所有业务系统的统一阈值。

参考资料与适用边界

资料查阅日期:2026 年 9 月 30 日。本文是企业智能体集成的设计与验收方法,不是某个源系统或本站产品的实测报告;限额、缓存有效期、任务等待时长和数据权限必须以项目契约与实际验收为准。