{"level":"error","msg":"[Claude](http://www.dlbhg.com/blog/apidog-all-in-one-collaborative-api-development-platform/) 429 in prod","count":188}一條可落地的監(jiān)控-預(yù)警-自愈流程圖(Mermaid 直接復(fù)制可用);
三段生產(chǎn)級 阿里云百煉/laozhang.ai 雙通道示例);
四種官方?jīng)]寫進文檔的“灰色技巧”,幫你把 429 出現(xiàn)率降到 < 0.3%。
| — | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| RPM | 5 | 8→20* | 40→100* | 自定義 | ||||||
| TPM | 25 k | 40 k | 200 k | 自定義 | ||||||
| 并發(fā) | 1 | 2 | 5 | 10+ |
帶星號的是 2025-07-15 后 “暗調(diào)” 的新數(shù)值,官方公告只發(fā)在狀態(tài)頁腳注,導(dǎo)致大量開發(fā)者誤以為仍是 20 RPM。
結(jié)論:“代碼生成”被單獨分類,RPM/TPM 均再砍 30%。
因此,監(jiān)控必須精確到模型、到端點、到用戶。
每次回包里都有:
anthropic-ratelimit-requests-limit: 20
anthropic-ratelimit-requests-remaining: 2
anthropic-ratelimit-tokens-limit: 40000
anthropic-ratelimit-tokens-remaining: 1680
用 curl -I 即可查看,但難持久化。
Anthropic Console → Usage → 按模型/Key 維度,延遲 5 min,適合事后審計,不適合實時告警。
/cost在 VS Code 的 Claude Code 插件里敲 /cost,彈出浮窗顯示當(dāng)前會話 token & 費用。
缺點:僅限當(dāng)前 IDE 會話,CI 里無法調(diào)用。
# pip install cachetools
from cachetools import TTLCache
import requests, time, os
CACHE = TTLCache(maxsize=10_000, ttl=60)# 60 s 窗口def call_claude(messages, model="claude-3-5-sonnet"):
url = "https://api.anthropic.com/v1/messages"
headers = {
"x-api-key": os.getenv("CLAUDE_KEY"),
"anthropic-version": "2023-06-01",
"content-type": "application/json"
}
r = requests.post(url, json={"model": model, "messages": messages, "max_tokens": 1024}, headers=headers)# 記錄
key = model
CACHE[key] = CACHE.get(key, 0) + 1
return r.json(), CACHE[key]
每 60 秒自動過期,足夠在 CI 里做瞬時流量熔斷。
# pip install prometheus-client
from prometheus_client import Counter, Gauge, start_http_server
REQ_TOTAL = Counter('claude_req_total', 'total requests', ['status'])
REQ_LEFT = Gauge('claude_rpm_left', 'remaining rpm')
def export_metrics(resp):
limit = int(resp.headers.get("anthropic-ratelimit-requests-limit", 0))
left = int(resp.headers.get("anthropic-ratelimit-requests-remaining", 0))
REQ_LEFT.set(left)
REQ_TOTAL.labels(status=resp.status_code).inc()
啟動 start_http_server(8000),Grafana 模板文件已放在 Gist。
laozhang.ai 提供兼容 OpenAI 格式的中轉(zhuǎn),支持:
import openai
client = openai.OpenAI(
api_key=os.getenv("LZ_API_KEY"),
base_url="https://api.laozhang.ai/v1"
)
resp = client.chat.completions.create(
model="claude-3-5-sonnet",
messages=[{"role": "user", "content": "Hello"}],
max_tokens=512
)
只需改一行 base_url,即可在 429 時無感遷移。

把 3 個 Tier3 Key 放進 Redis List,每次 LPOP/RPUSH 循環(huán),單 Key 40 RPM → 總 120 RPM。
prompt 只計費一次。
{"role": "system", "content": "You are a senior Python engineer...", "cache_control": {"type": "ephemeral"}}
實測:長 context prompt 從 18 k tokens → 10 k tokens。
用 線性回歸 預(yù)測未來 30 min 用量,提前調(diào)用 升級接口 提升 Tier,避免 429。
把 5% 流量發(fā)到 laozhang.ai 做影子測試,對比延遲/成功率,提前發(fā)現(xiàn)官方網(wǎng)絡(luò)抖動。
| — | ||||||||
|---|---|---|---|---|---|---|---|---|
| RPM 實時曲線 | Prometheus | 10 s | 剩余 < 20% | |||||
| Token/分鐘 | Prometheus | 10 s | 剩余 < 1000 | |||||
| 成本/小時 | laozhang.ai | 60 s | 日預(yù)算 80% | |||||
| 成功率 | Grafana Alertmanager | 30 s | < 99% |
# 克隆倉庫
git clone https://github.com/mycorp/claude-monitor
cd claude-monitor
# 填 key
echo "CLAUDE_KEY=sk-ant-xxx" > .env
echo "LZ_API_KEY=lz-xxx" >> .env
# 啟動
docker-compose up -d
# 打開 http://localhost:3000 查看儀表盤
監(jiān)控 Claude 不是“錦上添花”,而是生產(chǎn)底線。
把 header 讀數(shù)、Prometheus、多云熱備、預(yù)測擴容串成一條鏈,429 不再是深夜驚魂,而是一條可觀測、可自愈的指標(biāo)曲線。
下次告警響起時,你只需在 Slack 里回復(fù)一句:“擴容腳本已觸發(fā),5 分鐘后恢復(fù)。” 然后繼續(xù)睡覺。