在账单送到之前,拦住失控的 AI Agent 花费。
llm-guard 挡在你的模型 API 调用前面,把每一美元归因到花掉它的那把 key 上,并在失控循环还在跑的时候就发现它。只用 Python 标准库 —— 没有东西要装,除了我们自己的代码也没有别的东西要审。
Runaway-spend detection
window: last 15 min · io ratio > 30:1 · velocity > 25x baseline
CRITICAL io_ratio [key: prod-agent]
prod-agent is running a 74:1 input-to-output ratio across 67 calls
in the last 15 min (12,006,400 in / 162,216 out, $38.45). Normal
traffic sits at 5:1-15:1.
→ what to do
The prompt is being re-sent in full on every step. Cap the context
(summarise or truncate history), and enable prompt caching so the
repeated prefix is billed at the cache rate. OWASP attributes ~62%
of agent bills to re-sent context.
WARN retry_storm [key: prod-batch]
prod-batch had 42 failed calls out of 56 (75%) in the last 15 min.钱到底花在哪了
预算看板告诉你已经花了多少。而产生五位数账单的那种故障,是一条 agent 链在循环、重试或扇出 —— 等每日上限触发的时候,钱早就没了。
为什么这么设计
三个决定了其他一切的取舍,也包括这个工具故意不做什么。
零依赖
网关在请求路径上,手里握着你的 API key。没有 FastAPI、没有 httpx、没有 uvicorn —— 大约 7,900 行,一个下午能读完,表面积小到能过安全审查。
宁可未知,不可错
缓存读的价格按模型不同,是输入价的 2.5% 到 50%。把它当成一个常数就是 4–5 倍的静默误差。如果某个模型没有价格,成本记为 NULL 并报为「未定价」。一个看着合理但是错的数字,比一个明显的缺口更糟。
只告警,不破坏
检测器从不阻塞流量。一个会悄悄掐死生产的检测器,比它想防的那张账单更糟。唯一的例外是可选的「单条流封顶」,而它依据的数字是本地估算,永远不用于计费。
它能抓到什么
这些故障模式不是我们发明的。它们来自 OWASP AISVS C9.1,以及一份收录了跨 21 个编排框架、63 起已确认生产事故的公开目录。每条检测都会标注它匹配到的模式、该模式的记录事故数,以及已报告的最大损失。
| 模式 | 可观测量 | 记录事故数 |
|---|---|---|
| 无界上下文循环 | 输入/输出比高于 30:1 | 11 |
| 委派扇出竞态 | 多个 key 同时出现突发 | 11 |
| 重试风暴 | 失败率高于 5% | 9 |
| 默认使用最贵模型 | 单次调用成本是均值 8 倍以上 | — |
| 未缓存的重复前缀 | 缓存命中率低于 35% | — |
| 无上限的速率尖峰 | 峰值日是中位日的 8 倍 | — |
| 成本无法归因 | 所有花费落在同一把 key | — |
| 未定价流量 | 成功调用但价格表里没有 | — |
运行 llm-guard patterns 查看完整的信号、阈值与引用出处。
一条命令开始
不需要 API key、不需要网络、不需要注册。演示数据里带了一个真实的 74:1 循环,所以第一次运行检测器就有东西可找。
$ pip install git+https://github.com/leyao-daily/llm-guard.git
$ llm-guard seed --reset --compare-days 30
Seeded 13,254 requests spanning 60 days ($227.10 of simulated spend).
$ llm-guard anomalies
$ llm-guard diagnose --client "某公司" --out report.html如果你的 AI 账单难以预测
我们找出原因。固定价格的诊断,交付一份书面报告:钱花在哪、先改什么、每一项每月值多少。不需要部署任何基础设施,只需对用量数据的只读权限,prompt 和回复永远不会离开你的账号。
如果你更想自己跑
llm-guard 是 MIT 许可且功能完整。零运行期依赖,只用标准库,预算执行和失控循环检测都在里面。没有阉割版,也没有留给付费客户的功能。
我们是香港的一个小团队,比起做newsletter,更愿意和真正在生产环境跑这些东西的人聊。[email protected]