AI Agent 无限循环怎么办?AI Circuit Breaker 用反向代理守住 API 预算
AI Agent 最让人担心的故障,未必是一次回答错了,而是工具调用卡进循环:重复读取同一页面、反复重试同一个动作,或者多个 Agent 节点互相触发。任务看起来仍在运行,账单却在不断增长。AI Circuit Breaker 是一个面向 OpenAI 兼容流量的反向代理,目标就是在请求到达模型提供商前,检测循环并执行预算限制。
它的定位很明确:不是新的 Agent 框架,也不是用来替换模型的聊天应用,而是放在现有客户端和上游 API 之间的成本与故障防线。官网将它描述为可插拔网关,公开文档则提供了 OpenAI、CrewAI、LangChain/LangGraph、AutoGen 和 REST 客户端的接入方式。
它拦截的不是“错误答案”,而是失控请求
AI Circuit Breaker 当前公开的保护逻辑可以拆成两类:
- 循环检测:用滑动窗口检查重复请求模式;文档列出的免费方案是 3× sliding-window loop detection。当重复阈值被超过时,网关返回 HTTP 400 和
infinite_loop_killed。 - 预算上限:按账户配置执行小时或每日美元上限。达到上限时返回 HTTP 429,错误码为
budget_limit_breached。
此外,网关还会把上游不可达或超时归类为 HTTP 502 的 upstream_error。这些机器可读错误码很重要:Agent 编排器可以把“循环被杀掉”和“上游暂时不可用”分成不同的恢复路径,而不是对所有失败都盲目重试。
项目主页声称平均代理开销目标低于 35ms;这属于服务方给出的设计指标,真实延迟仍取决于网络距离、模型供应商和部署条件。健康检查端点目前可以直接访问:
curl -I https://circuit-breaker-api.onrender.com/health
实测公开端点返回在线状态和版本 0.1.0。生产接入前仍应在自己的区域和请求类型下压测,不能把主页指标当成 SLA。
接入方式:只替换 base URL
官方 Quickstart 的思路是保留原来的 OpenAI 客户端,把 base_url 指向网关,并使用 Circuit Breaker 的受保护密钥。下面是同一结构的安全化示例,密钥从环境变量读取:
import os
from openai import OpenAI
client = OpenAI(
base_url="https://circuit-breaker-api.onrender.com/v1",
api_key=os.environ["CIRCUIT_BREAKER_API_KEY"],
)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Hello"}],
)
print(response.choices[0].message.content)
如果使用 LangChain 或 LangGraph,文档给出的方式同样是设置 OpenAI 兼容的 base_url 和 CIRCUIT_BREAKER_API_KEY。这类接入的优点是改动面小:已有的模型调用代码和 Agent 节点可以继续使用,网关负责统一执行保护策略。
REST 客户端则调用 /v1/chat/completions,请求体至少包含 model 和 messages。不要把上游提供商的真实密钥放进浏览器或客户端代码;客户端只应持有网关侧的受保护密钥。
隐私边界:不落盘不等于不出网
AI Circuit Breaker 文档说明,提示词正文会在内存中用于循环检测,不写入磁盘;请求日志记录使用情况和运行元数据,不包含提示词文本。上游凭据在写入数据库前使用 AES-256(Fernet)加密,受保护密钥则用 SHA-256 哈希做查找,原始密钥只展示一次。
这些设计能降低网关自身保存敏感正文的风险,但不能改变模型调用的网络边界。只要请求经由云端模型或云端数据服务,内容仍可能离开本机。部署前要明确三件事:哪些字段可以发送给模型、日志保留哪些元数据,以及循环检测是否会接触不应处理的提示内容。
费用方案和使用建议
公开 Pricing 页面列出的免费方案包含每月 15 美元的 monitored spend、小时和每日上限;Pro 方案为每月 29 美元,并提供更高的生产预算配置以及 Slack、Discord 告警等能力。价格和限额属于易变信息,正式采购前应以账户页面为准。
更稳妥的落地顺序是:先让一个低风险、只读的 Agent 走代理;故意设置较小的预算上限,观察 400、429 和 502 的处理;再把同一网关配置推广到多个 Agent。应用层还应记录请求 ID、重试次数和错误码,避免在收到 400 或 429 后再次无条件重试,从而抵消断路器的保护效果。
AI Circuit Breaker 的价值不在于让 Agent 变得更聪明,而在于给“会继续运行的程序”增加一个外部刹车。对于已经接入多个模型、工具和工作流的团队,把循环检测、预算上限和上游故障处理放到统一的 OpenAI 兼容入口,往往比在每个 Agent 中重复实现一套保护逻辑更容易审计。
相关链接