錯誤 timeout:gpt-4o 呼叫失敗怎麼辦

請求逾時指用戶端在等待回應時超過了自身設定的時限。串流輸出的大模型請求最容易觸發,因為首個 token 之前模型要思考,而思考階段不產生任何位元組。

timeout 不是標準 HTTP 狀態碼,而是用戶端等待回應的時間上限。請求通常已抵達閘道並轉發到上游,但模型在你設定的時間內沒有產出結果。長上下文、長輸出、非串流呼叫是最常見的三類誘因。

gpt-4o 由 OpenAI 提供,本頁的觸發分析、處理建議與實測數據均基於該模型在閘道層的真實運行情況整理。

在本閘道,此類報錯最常見的誘因是:用戶端逾時設定過短。建議優先處理:把用戶端逾時提高到 300 秒以上。

常見原因

  • 用戶端逾時設定過短
  • 提示詞或上下文過長,首 token 延遲高
  • 模型正在處理長推理任務
  • 網路鏈路抖動

解決辦法

  • 把用戶端逾時提高到 300 秒以上
  • 開啟串流輸出,避免整段等待
  • 縮短上下文或改用推理更快的模型
  • 調小 max_tokens

帶指數退避的重試範例

下面這段在呼叫 gpt-4o 遇到 timeout 時會自動退避重試,最多 5 次,每次等待時間遞增並疊加隨機抖動,避免大量請求同時重試。base URL 與 API Key 請從環境變數讀取,不要寫死在程式碼裡。

import os, time, random
import requests

BASE  = os.getenv("OPENAI_BASE_URL")   # e.g. https://<your-gateway>/v1
KEY   = os.getenv("OPENAI_API_KEY")
MODEL = 'gpt-4o'


def chat(messages, retries=5):
    """Retry with exponential backoff + jitter."""
    for i in range(retries):
        try:
            r = requests.post(
                BASE + "/chat/completions",
                headers={"Authorization": "Bearer " + KEY},
                json={"model": MODEL, "messages": messages, "stream": True},
                timeout=60,
            )
            if r.status_code == 429 or r.status_code >= 500:
                time.sleep(min(2 ** i + random.uniform(0, 1), 30))
                continue
            r.raise_for_status()
            return r.json()
        except requests.exceptions.Timeout:
            time.sleep(min(2 ** i + random.uniform(0, 1), 30))
    raise RuntimeError("gave up after " + str(retries) + " retries")


print(chat([{"role": "user", "content": "hello"}]))

該模型的關鍵資料

TPS1027.03
平均延遲1414 毫秒
成功率100%
API 端點https://api.airai.cc/v1
OpenAI 相容OpenAI-compatible
廠商OpenAI
上下文128K
能力Tools, Files, Vision
API 格式openai, openai-response, openai-response-compact, anthropic, gemini, openai-alpha-search
計費方式p * 2.5 + cr * 1.25 + c * 10

常見問題

改成串流輸出能減少 timeout 嗎?

屬於用戶端設定問題,伺服端不需要調整。該模型的能力標籤為 Tools, Files, Vision,參數上限受能力集約束。上下文 128K 決定了單次請求的最大輸入,超出會被直接拒絕。對參數類錯誤直接快速失敗,不要浪費重試次數。

失敗的請求會算進限流配額嗎?

不會計費,只有實際產出內容才會計入用量。已經產出的部分會計費,失敗的部分不會。輸入單價約 $2.50 / 百萬 tokens。先在控制台確認餘額與速率限制,再排查程式碼。按 p * 2.5 + cr * 1.25 + c * 10 估算成本時,把重試預算也算進去。

同一把 Key 在多個服務中共用,會更容易觸發 timeout 嗎?

提高方案上限或降低呼叫頻率都能緩解。輸入單價約 $2.50 / 百萬 tokens。按 p * 2.5 + cr * 1.25 + c * 10 計費時,失敗的請求不會計入用量。先在控制台確認餘額與速率限制,再排查程式碼。按 p * 2.5 + cr * 1.25 + c * 10 估算成本時,把重試預算也算進去。

重試時需要加入隨機抖動(jitter)嗎?

通常不需要改商業邏輯,調整呼叫節奏即可。實測成功率 100%,第一次重試的邊際效益通常最高。把重試上限設為 3 到 5 次,並加上隨機抖動。可重試的錯誤做指數退避,不可重試的立即回傳錯誤。

該模型的其他錯誤

遇到同樣錯誤的其他模型

資料更新於: 2026-10-10 18:35

技術支持在線客服
返回頂部