生活分享

速率限制(Rate Limit)是什麼:API 為什麼回你 429

速率限制是 API 在一段時間內允許的請求數或 token 數上限,超過時通常回 HTTP 429,也可能附 Retry-After 告訴你等多久。依 RFC 與 OpenAI、Anthropic、Google 官方文件,說明 RPM、TPM 怎麼算、哪些 429 不該重試、退避加抖動的示例流程,並分清配額、花費上限與上下文視窗,最後談代理迴圈與批次工作的節流。

閱讀時間約 7 分鐘

一排請求方塊在閘門前排隊,閘門上方的桶子持續補進籌碼,通過閘門的方塊彼此拉開相同間距
圖片:Mokaair (© Mokaair)

速率限制(rate limit)是服務在一段時間內允許你送出的請求數或 token 數上限,超過時 API 通常回 HTTP 429 Too Many Requests。它管的是速度。Anthropic 與 Microsoft 的繁中文件寫「速率限制」,Google 繁中頁標題作「頻率限制」、內文兩者混用;這裡用「速率限制」,較貼近 rate「單位時間內的量」的本意。Gemini API 查額度、分類錯誤的操作步驟見。

以下整理 RFC 與各家官方文件寫的機制,不列任何方案的數字,實際額度以自己的主控台為準;資料截至 2026 年 10 月。

它算的是一段時間內的量

常見單位是每分鐘請求數(RPM)與每分鐘 數(TPM),也有每日請求數(RPD)與每日 token 數(TPD)。OpenAI 說明哪一項先到就先觸發,很多短請求可能先用完請求數。各家算 token 的方式也不同:Anthropic 把輸入與輸出分開,算成每分鐘輸入 token(ITPM)與輸出 token(OTPM);Google 的 Gemini API 文件則把 TPM 標為輸入 token。

限制也有層級。OpenAI 定在組織與專案,Google 定在專案而不是 API 金鑰,Anthropic 定在組織、可再替工作區設較低上限;同一個專案多開幾把金鑰,額度不會變多。

時間窗未必是整分鐘。Anthropic 用權杖桶(token bucket)演算法:額度像桶裡的籌碼,用掉後持續補回到上限,不是每隔固定時間一次重設;它也提醒每分鐘上限可能拆成更短區間執行。所以這一分鐘的額度還沒用完,短時間送太密仍可能被擋。

429 與 Retry-After:規範怎麼寫

429 出自 2012 年的 RFC 6585,定義是使用者在一段時間內送出太多請求。回應應該說明原因,並可以附上 Retry-After 告知要等多久。規範沒有定義怎麼辨識使用者、怎麼計數,所以各家計算方式不同,都合乎標準。

Retry-After 的格式寫在 RFC 9110:可以是 HTTP 日期,也可以是秒數,例如 120 代表兩分鐘,也能搭配 503 Service Unavailable 使用。OpenAI 建議把它當成最少等待時間,再加一點隨機延遲。

不是每個 429 都該重試

429 底下不只一種原因。OpenAI 的預付額度、花費上限或使用上限用完也回 429,並寫明重試不會恢復;Anthropic 方案等級的每月花費上限用完也回 429,但不附 retry-after,自設的較低上限則回 400;Google 的 Interactions API 錯誤表把每日配額用完另列一個代碼,建議等重設,依花費計算的速率限制則是短時間窗,可稍等再試。另一種是加速太快:OpenAI 的 slow_down 與 Anthropic 的加速限制都因用量急升而觸發,OpenAI 註明沒到每分鐘上限也會發生;解法是逐步加量。

收到 429 後先讀錯誤內容,暫時超速就照 Retry-After 或退避加抖動重試並設上限,花費上限或配額用完則不重試
左邊是可以等的 429,右邊是要有人改設定的 429;兩邊都要避免多層重試疊加。 · 圖片:Mokaair (© Mokaair)

退避加抖動:示例流程

指數退避(exponential backoff)是每失敗一次就把等待時間加倍,直到上限。AWS 的 Marc Brooker 在 2015 年用模擬說明:只有退避,重試仍會成群擠在同一時間;加上隨機抖動(jitter)才會分散。他模擬 100 個客戶端搶著更新同一筆資料,加抖動後總呼叫數少了一半以上。

示例(未實測),程式收到 429 之後:

  1. 讀錯誤內容;若是花費上限或配額用完,記錄後停止。
  2. 附有 Retry-After: 20 時,至少等 20 秒,再加 0 到 1 秒的隨機延遲。
  3. 沒有 Retry-After 時,以 1 秒為基準、8 秒為上限,第 1 到第 5 次重試的上界依序是 1、2、4、8、8 秒,每次在 0 到上界間隨機取值。
  4. 最多重試 5 次、總等待不超過 2 分鐘,用完就把工作放回佇列。
  5. 預期結果:多個工作的重送時間會錯開,較少擠在同一秒。若 5 次都失敗,多半代表平均速度本身超標,該降低並行數量,而不是加大重試次數。

重試只留一層。OpenAI 提醒官方 SDK 已會自動重試,自己再包一層時要關掉它或算進上限;AWS 舉例,五層服務呼叫各自試 3 次,最底層資料庫的負載會放大到 243 倍。RFC 9110 也提醒,非冪等(重送可能多生效一次)的請求除非能確認重送無害或原請求沒有生效,否則不應自動重試;會寄信或付款的工具呼叫要先做好防重複。

速率限制、配額、花費上限與上下文視窗

配額(quota)的用法各家不一:Google 指每日上限,在太平洋時間午夜重設;Microsoft 的 Azure OpenAI 指分給訂閱、再由各部署瓜分的每分鐘 token 總量;OpenAI 的帳務類錯誤,錯誤類型可能標成 insufficient_quota。

花費上限算的是金額,Anthropic 文件就把限制分成花費上限與速率限制兩類。上下文視窗是單次請求能放的 token 數:在 Anthropic,輸入超過上下文視窗會回 400,等多久都沒用。聊天產品的使用量上限又是另一回事:Claude 說明中心把訂閱方案的上限分成使用量上限與長度上限(受上下文視窗限制),並說明付費訂閱不含 API。

五種上限對照;依 RFC 與 OpenAI、Anthropic、Google、Microsoft 官方文件整理,資料截至 2026 年 10 月,各家用詞不完全一致。
名詞限制的是什麼撞到時怎麼處理
速率限制短時間內的請求數、token 數照 Retry-After 或退避後重試
配額依各家定義,例如每日總量等重設或申請提高
花費上限每月等計費週期內能花的金額不重試,調高上限或等下個週期
上下文視窗單次請求能放的 token 數縮短輸入或分段,等待無效
聊天方案上限訂閱方案一段時間內的用量等重設、升級方案或加購用量,與 API 分開

代理迴圈與批次工作的節流設計

每一輪都是一次模型呼叫。Anthropic 的 Messages API 是無狀態的,每次都送完整對話歷史,輪數越多、輸入越長,輸入 token 容易比請求數先用完。多個子代理共用同一個組織或專案的額度,工具一起回傳、下一輪一起送出,就是短時間爆量。批次工作也類似:AWS 提到,多台機器的定時工作可能在每分鐘頭幾秒或午夜剛過時撞在一起,建議也加抖動。

  • 所有工作者共用一個限速器,因為額度算在組織或專案上,不是各算各的。
  • 限制同時進行的請求數,其餘排進佇列。
  • 讀回應標頭的剩餘量,接近上限就先放慢,不等 429。
  • 不急的大量工作改用批次 API;三家文件都把批次的限制和即時呼叫分開列。
  • OpenAI 以輸出上限 max_tokens 與估計 token 數的較大者計入,宜設得接近預期長度;Anthropic 的 max_tokens 不計入 OTPM。

重複的系統指示與長文件,可以用:Anthropic 大多數模型從快取讀取的 token 不計入 ITPM。撞到限制時,代理任務應記成「等待中」,而不是失敗後從頭重跑。

更多相關詞彙見。

  • 生活分享

    世界模型(World Model)是什麼:讓 AI 預測「接下來會怎樣」

    世界模型指 AI 內部用來預測「這樣做之後會怎樣」的模型,但這個詞至少有三種用法:強化學習代理在想像中練習用的環境模型、LeCun 主張預測抽象表示的架構路線,以及能隨操作即時生成畫面的互動環境。內容用示例說明怎麼在想像中規劃,並列出大型語言模型有沒有世界模型的正反研究,附讀新聞時的檢查問題。

  • 生活分享

    視覺語言模型(VLM)是什麼:讓 AI 讀圖片、再用文字回答

    視覺語言模型(VLM)能同時接收圖片與文字,再用文字回答。內容拆解視覺編碼器、連接層與語言模型三段結構,說明 CLIP、Flamingo、LLaVA 三篇論文各補上哪一塊,並和多模態 AI、文字生圖分清楚;也整理它常犯的錯:數錯數量、搞混位置、說出圖裡沒有的東西,附上讀收據時逐行核對的步驟。

  • 生活分享

    溫度(Temperature)是什麼:AI 回答變化程度的取樣參數

    溫度(temperature)是文字生成時調整取樣的參數,讓模型從下一個 token 的機率分布裡抽得更集中或更分散。用假想的台南早餐示例算出低溫與高溫的差別,說明 top-p 的來源和它與 top-k 的差別,並依官方文件與論文指出:調低溫度不代表更準,設成 0 也不保證每次相同,部分模型還不開放調整。

  • 生活分享

    合成資料(Synthetic Data)是什麼:兩種用途、品質控管與模型崩潰

    合成資料是由演算法或模型產生、模仿真實資料特徵的資料,常見用途有兩種:訓練模型,以及在隱私需求下替代真資料。內容依 Self-Instruct、模型崩潰研究(替換與累積資料的差別)與 NIST、ICO 的隱私文件,說明做法、抽查流程,以及它不能保證的事。

最新旅遊情報攻略

資料來源

生活分享