TokenPAPATokenPAPA
使用指南API 参考AI 应用博客

LLM API 限流与重试策略完全指南(2026)

掌握 OpenAI GPT-5、DeepSeek V4、Claude 4、Gemini 等主流 LLM API 的限流机制、指数退避重试策略、并发请求管理,含 Python、Node.js、curl 代码示例。

LLM API 限流与重试策略完全指南(2026)

发布日期:2026年6月29日 · 15分钟阅读

引言

每一个 LLM API——从 OpenAI 的 GPT-5 到 DeepSeek V4、Claude 4、Gemini 2.5——都有速率限制。超过限制就会收到 429 Too Many Requests。在生产环境中,如何处理这些错误决定了你的应用体验是稳定还是脆弱。

2026 年的 API 生态比以往更加碎片化。不同提供商使用不同的限制模型:每分钟令牌数 vs 每分钟请求数 vs 并发连接数 vs 成本分层。某个提供商的最优策略可能在另一个提供商那里浪费预算。

本指南涵盖:

  • 各主流提供商的限流机制(OpenAI、DeepSeek、Anthropic、Google)
  • 指数退避重试的行业标准模式
  • Python 和 Node.js 的并发请求管理
  • 成本感知的限流策略

刚开始接触这些 API?可以先看我们的 LLM API 价格对比 2026 了解成本数据。


各主流提供商的限流机制

OpenAI(GPT-5、GPT-4o)

OpenAI 使用分层 RPM/TPM(每分钟请求数/每分钟令牌数) 模型:

层级RPM 限制TPM 限制条件
免费340K$0
Tier 150060K消费$5
Tier 25,000300K消费$50
Tier 310,000500K消费$250
Tier 5定制定制消费$1K以上

OpenAI 返回 429 并附带 Retry-After 头部。

DeepSeek V4

DeepSeek V4 使用双重限制系统

  • RPM 限制:标准层级 3,000 次/分钟(优先层级 6,000)
  • TPD 限制:每日令牌上限(软限制,可申请提高)
  • 缓存命中流式:每个缓存命中请求算作 0.5 RPM,吞吐量翻倍

DeepSeek 返回 429 并包含 {"error": {"reset": 123456789}} 重置时间戳。

Anthropic(Claude 4)

Anthropic 使用基于请求数的工作空间级限制:

  • 默认:API Key 50 次/分钟,Workspace 1,000 次/分钟
  • 扩展思考:每个请求消耗更多容量
  • 响应:返回 529(不是 429!)

Google Gemini 2.5

Google 使用每模型层级的每分钟生成次数(GPM):

  • 免费:10 GPM,每天 1,500 次
  • 按量付费:2,000 GPM(标准),5,000(高吞吐)

通用重试模式:带抖动的指数退避

import time, random, requests

class LlmApiClient:
    def __init__(self, base_url, api_key, max_retries=5):
        self.base_url = base_url
        self.headers = {"Authorization": f"Bearer {api_key}"}
        self.max_retries = max_retries

    def request(self, payload):
        for attempt in range(self.max_retries):
            resp = requests.post(self.base_url, headers=self.headers, json=payload)

            if resp.status_code in (200, 201):
                return resp.json()

            if resp.status_code in (429, 503, 529):
                wait = self._backoff(attempt, resp)
                print(f"触发限流(第{attempt+1}次重试),等待{wait:.1f}秒...")
                time.sleep(wait)
                continue

            resp.raise_for_status()

        raise Exception(f"超过最大重试次数({self.max_retries})")

    def _backoff(self, attempt, response):
        retry_after = response.headers.get("Retry-After")
        if retry_after:
            return float(retry_after)
        # DeepSeek 风格时间戳
        try:
            reset_ts = response.json().get("error", {}).get("reset")
            if reset_ts:
                return max(0, reset_ts - time.time()) + random.uniform(0, 1)
        except Exception:
            pass
        # 指数退避 + 抖动
        base = 2 ** attempt
        jitter = random.uniform(0, min(base, 60))
        return min(base + jitter, 120)

并发请求管理

Python:异步信号量

import asyncio, httpx

class RateLimitedClient:
    def __init__(self, api_key, max_concurrent=10):
        self.semaphore = asyncio.Semaphore(max_concurrent)
        self.client = httpx.AsyncClient(headers={"Authorization": f"Bearer {api_key}"})

    async def request(self, payload):
        async with self.semaphore:
            for _ in range(3):
                resp = await self.client.post(
                    "https://api.openai.com/v1/chat/completions", json=payload
                )
                if resp.status_code == 200:
                    return resp.json()
                if resp.status_code in (429, 503):
                    await asyncio.sleep(2)
                    continue
                resp.raise_for_status()

成本感知限流

限流不仅是避免错误,更是管理预算

场景策略
批量处理(非紧急)低并发(5-10),长重试延迟
实时对话中并发(20-50),短重试延迟
成本敏感的大吞吐量令牌桶+每日预算上限

结合 tokenpapa 的 API 网关,你可以在一个仪表盘中查看所有提供商的实时消费。


结论

2026 年的 LLM API 限流虽然不可避免,但使用正确的模式完全可以管理:

  • 带抖动的指数退避适用于所有提供商
  • 令牌桶 + 信号量实现安全并发请求
  • 各提供商的特殊处理(Anthropic 的 529、DeepSeek 的缓存命中倍率)需要定制逻辑
  • 成本感知限流防止预算超支

对于生产环境,考虑使用 tokenpapa 作为统一网关——它内置限流标准化、自动重试和跨提供商成本追踪。

准备开始? 前往 tokenpapa.ai 注册,可获 $5 免费额度。

这篇文档对您有帮助吗?