对外智能体加限流熔断超时,别被刷爆的实操
智能体一旦对外开放,就会被刷。爬虫、薅羊毛、恶意压测,甚至善意用户手抖连点,都能把你的调用量打爆。大模型调用是按 token 花钱的,被刷一晚上账单很难看。这篇是我给一个对外智能体加防护的清单,限流、熔断、超时三件套,照着加。
为什么必须加
我第一次把智能体发成 API 没设防,第二天发现有个 IP 一晚上请求了两万多次——明显是脚本在跑。token 烧了不少,正常用户还被挤得变慢。从那以后,对外的智能体我一律先上防护再上线。
一、限流:先按维度想清楚
限流不是设一个数字就完了,要先想"按什么维度限":
-
按 IP:挡住单机脚本,最基础。
-
按用户/API key:每个用户每分钟最多 N 次,防单个账号滥用。
-
按全局总量:保护后端整体,别被总并发压垮。
我一般三层都设。具体数值:一个正常聊天用户,每分钟撑死问十几次,我就把单用户限到 20 次/分钟,超了返回"太快了稍等"。全局再设个总 QPS 上限兜底。
很多搭智能体的平台后台直接有限流配置项,按 key、按时间窗填数字就行,不用自己写令牌桶。能配置就别自己撸。
二、超时:必须设,而且要分层
大模型偶尔会卡住——上游慢、工具调用挂住,都会让一个请求悬着不返回。不设超时,这些卡住的请求会一直占着连接,并发名额很快耗光。
我设两层超时:
-
单次模型调用超时:比如 30 秒没返回就掐掉,返回兜底话术。
-
整个 Agent 任务超时:自主 Agent 多步执行的,给整个任务也设个总超时,别让它"想"到天荒地老。
三、熔断:连续失败就先停一下
熔断是说:当后端连续报错(比如上游模型服务挂了),别再傻傻地把请求往里送,先快速失败一段时间,给后端喘息,也避免用户一直等。
简单实现:统计最近一个窗口的失败率,超过阈值(比如 50%)就进入熔断状态,接下来 N 秒直接返回降级话术,N 秒后放几个探测请求试试恢复了没。
一个容易漏的点:token 级别的封顶
除了次数限流,我还加了单次对话的 token 上限。有人会故意发超长 prompt 想榨干你的额度。给单次输入和输出都设 max token,从成本侧再兜一道。
我上线前的防护清单
-
按 IP / 按 key / 全局三层限流都配了;
-
单次调用超时 + 任务总超时都设了;
-
后端故障有熔断降级,不是裸奔;
-
单次 token 上限设了,防超长 prompt;
-
所有"被拦"的情况都有友好兜底话术,不是直接 500。
一点取舍
限流设紧了误伤真实用户,设松了挡不住脚本。我的做法是先按宽松值上线,盯几天真实流量分布,再把阈值收到刚好略高于正常用户峰值。没有一劳永逸的数字,得看着调。
这套防护我没自己写多少代码——用的那个能把智能体发布成 API 的平台后台就带限流和超时配置项。它走 MaaS 模式,模型 API 在后面顶着,我只要把这几道闸配好,就不怕一觉醒来账单爆炸。讯飞Agent这类平台,把"防刷"从开发活变成了配置活。
更多推荐

所有评论(0)