Prompts-MCP 686 skills · ai / design / design-pattern / framework / fundamentals / habit / lang / tech-selection /mcp/sse
ai ai/llm-engineering/rate-limit-token.md medium

ai-llm-rate-limit

LLM 网关层做 TPM+RPM 双限流(TPM 是成本主控维度),并按 input/output/cached token 单价实时核算每次调用成本。Use when 设计 LLM 网关限流 / 防超额烧钱 / 评审调用成本核算时。

双限流tpmrpmtoken 成本限流网关cost accounting
paths
  • *.java
  • *.py
  • *.md

LLM · 限流与 token 成本核算

本条只管「限流 + 算成本」。超阈值后的熔断见 retry-degradation.md;缓存省 token 见 caching.md

规则

维度 要求
双限流 网关层同时限 TPM(tokens/分钟)和 RPM(requests/分钟);缺一不可
TPM 是主控 成本与限额几乎都按 token 计,TPM 是成本主控维度;只限 RPM 挡不住大上下文请求烧穿预算
集中在网关 限流放统一网关/队列,不散落各业务方;超限请求排队或快速拒绝,不直接打穿上游
实时算成本 每次调用按 input / output / cached token 各自单价分别计价求和(cached token 单价低,分开算才准)
按维度归集 成本按租户/接口/prompt 版本归集,喂给监控与成本熔断

正例:分类计价(伪代码)

// ✅ input/output/cached 三类 token 各乘各自单价,cached 不能按 input 价算
final long inTok = usage.inputTokens();
final long outTok = usage.outputTokens();
final long cachedTok = usage.cachedTokens();
final BigDecimal cost = price.in().multiply(BigDecimal.valueOf(inTok))
    .add(price.out().multiply(BigDecimal.valueOf(outTok)))
    .add(price.cached().multiply(BigDecimal.valueOf(cachedTok)));
costMeter.record(tenantId, promptVersion, cost);

反例:只限 RPM / 成本一口价

// ❌ 只按请求数限流:一个 100K 上下文的请求就能烧穿 TPM 预算
rateLimiter.acquire();   // 仅 RPM
// ❌ 成本按总 token 一口价:cached token 单价不同,账算不准
cost = totalTokens * UNIT_PRICE;

自检

  • [ ] 网关同时限了 TPM 和 RPM,不是只限其一?
  • [ ] 限流集中在网关/队列,业务方不各自实现?
  • [ ] 成本按 input/output/cached 分类单价分别计算?
  • [ ] 成本按租户/接口/prompt 版本归集,可供熔断与监控用?

相关