在自主代理耗尽你的后端之前,请先部署多层熔断器、有效载荷哈希以及财务切断机制。
在工具使用循环中运行的自主 AI 代理往往会不可预测地失效。当 LLM 遇到意外的 schema、瞬时网络错误或模糊的提示时,它常会进入幻觉式的重试风暴。
在普通的 Web 应用中,失控的循环会触发速率限制或返回 500 Internal Server Error。而在 Agentic 架构中,不受约束的 ReAct 循环会持续调用外部 API,消耗令牌、耗尽上游配额,几分钟内就可能产生巨额云账单。
下面是许多代码库中常见的反模式:
# Anti-pattern: Unbounded autonomous agent loop
while not task_complete:
action = llm.decide_action(state)
result = external_api.call(action.endpoint, action.params)
state = update_state(result)
如果LLM因响应无法解析而无法转换状态,此循环将无限运行。云服务提供商不会为自导致的API使用提供退款。
为了使AI代理工具执行生产安全,绝不允许从代理代码直接调用API。将所有外部请求通过一个隔离的API安全封装路由,该封装实现三层独立的防御机制:
[ AI Agent Engine ]
│
▼
[ API Safety Wrapper ]
├── 1. Call Counter Check (Limit < N)
├── 2. Hash Duplicate Detector (Window: last 3 calls)
└── 3. Pre-flight Cost Estimator (Budget < Limit)
│
┌────┴──────────────────────────┐
[ Passed ] [ Tripped ]
│ │
▼ ▼
[ External Upstream API ] [ Emergency Kill Switch ]
(Revoke Token & Abort)
这可以确保即使代理出现幻觉或崩溃,影响范围也会严格局限在单个会话预算内。
这是一个轻量级且可直接用于生产的安全包装器,您可以将其包装在任何 HTTP 客户端或 SDK 上。
import hashlib
class APISafetyWrapper:
def __init__(self, client, max_calls: int = 50, budget_limit: float = 5.0):
self.client = client
self.max_calls = max_calls
self.budget_limit = budget_limit
self.history = []
self.total_cost = 0.0
def execute(self, endpoint: str, payload: dict, estimated_cost: float = 0.02):
sig = hashlib.md5(f"{endpoint}:{sorted(payload.items())}".encode()).hexdigest()
if len(self.history) >= self.max_calls:
raise RuntimeError(f"Circuit Breaker: Hard limit ({self.max_calls}) reached.")
if self.history[-3:].count(sig) >= 2:
raise RuntimeError(f"Loop Detected: Repeating payload sent to {endpoint}.")
if (self.total_cost + estimated_cost) > self.budget_limit:
self.client.revoke_credentials() # Emergency shutdown
raise PermissionError("Budget Exceeded: Financial kill-switch triggered.")
self.history.append(sig)
self.total_cost += estimated_cost
return self.client.call(endpoint, payload)
——
一个热爱技术的程序员,喜欢分享前沿AI知识和开发经验。