AI API 加速線路的選擇,和挑一個看影片用的節點不是同一件事。網頁端卡一下,重新整理就好;程式卡一下,可能是一整批任務重跑。寫這篇文章的目的,是把「哪條線路快」這種隨時會過期的結論,換成一套能反覆使用的判斷方法。
本文不寫「最快線路排名」。線路品質隨時段變化,任何寫死的名次都會在幾天內失效。能給的是觀察項目、對比流程,以及在什麼場景下該選哪一類線路。
為什麼 API 呼叫與網頁端不是一回事
網頁端一次請求失敗,使用者按一下重試就好;API 一次請求失敗,背後可能是一條串流回應、一次批次任務,或者一個正在等待首個位元組的對話視窗。差別不只在體驗上:
- 請求形態不同:網頁端多是一次性短請求,API 常見長連線與串流回應,一條連線要維持幾十秒。
- 失敗代價不同:重試必須具備冪等性,重複提交可能造成重複寫入或重複計費。
- 風控視角不同:服務方看到的是出口 IP。IP 頻繁跳變、歸屬地漂移,容易被判定為異常來源。
- 排障路徑不同:瀏覽器裡看得到的錯誤,用戶端裡看不到,只能靠日誌與狀態碼。
所以選線路之前,先回答三個問題:出口穩不穩、併發夠不夠、逾時怎麼設。這三個問題比「哪條線路快」更影響呼叫成功率。
先把可選範圍列出來。以下是本站的服務參數,與單一線路的瞬時表現無關,只說明可以選到什麼:
三個決定成敗的指標
固定出口:先解決「從哪裡出去」
固定出口指呼叫 API 時始終使用同一個(或同一小組)出口 IP,而且這個 IP 的歸屬地穩定。它對開發者有三個直接價值:
- 白名單可維護:部分平台與自建閘道支援依 IP 放行,出口固定,名單才不用天天改。
- 風控連續:同一 IP 的呼叫行為連貫,不會因為每天換地區觸發額外驗證。
- 排障可對照:出問題時能確定是線路變了,還是程式碼變了。
要注意,固定出口不等於獨佔出口。共享節點上其他使用者的流量仍會影響這條線路的瞬時表現,只是你出去的 IP 不變。對穩定性要求高的業務,優先選帶專線屬性的線路,並在用戶端裡把 API 網域單獨分流。
併發:連線池與節點上限
併發問題通常不在程式碼裡,而在鏈路上。有三個位置會卡住請求:
- 用戶端連線池:多工複用能把多條請求壓到一條連線上,但串流回應會長期佔住連線,連線池很快被佔滿。
- 節點側上限:共享節點對單一 IP 的併發連線數有上限,超過就是排隊或直接拒絕。
- 重試風暴:逾時後無節制重試,併發會瞬間翻倍,把小抖動放大成雪崩。
實際做法不複雜:給併發設一個明確的號誌上限,批次任務分批提交,重試走指數退避並加隨機抖動,別讓所有用戶端在同一秒一起重發。
逾時與重試:把失敗變成可預期
逾時至少要分兩種:連線逾時(多久連不上算失敗)和讀取逾時(連上之後多久沒有新資料算失敗)。串流回應必須給讀取逾時留足餘量,否則首個位元組還沒到,就被自己的用戶端掐斷了。用 curl 觀察三段耗時是最省事的辦法:
curl https://api.example.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d @payload.json \
--connect-timeout 5 \
--max-time 120 \
-w "connect=%{time_connect} ttfb=%{time_starttransfer} total=%{time_total} code=%{http_code}\n"
重試只對可重試的錯誤開放:連線失敗、逾時、429 與 5xx。請求格式一類的 4xx 錯誤,重試多少次結果都一樣,只會白白消耗配額。
| 參數 | 建議起點 | 說明 |
|---|---|---|
| 連線逾時 | 5 秒 | 逾時後仍連不上,先查線路,而不是把數值調大 |
| 讀取逾時(非串流) | 60 秒 | 長文本生成可適度放寬 |
| 讀取逾時(串流) | 120 秒 | 依「多久沒有新資料」計算,不是總時長 |
| 單機併發上限 | 8 條 | 依節點承載與業務量調整,不要一次放開 |
| 重試次數 | 3 次 | 指數退避加抖動,只對可重試錯誤 |
線路類型對比:專線、中轉與直連
三條路的差別,在於資料從本機到境外伺服器之間怎麼走。走法不同,晚間高峰的表現就不同。
| 線路類型 | 資料怎麼走 | 穩定性 | 適合的 API 場景 |
|---|---|---|---|
| IEPL 專線 | 端到端專線,不擠公共國際出口 | 晚間高峰波動相對小 | 長連線、串流回應、批次任務 |
| 中轉 | 先到中轉節點,再由中轉節點出境 | 取決於中轉節點負載 | 一般呼叫、成本敏感的業務 |
| 直連 | 本機網路直接出境 | 受國際出口壅塞影響明顯 | 輕量、可重試、非即時任務 |
三點補充:
- 專線解決的是路徑可預期,不是絕對不丟包。晚間高峰更穩,是因為它不排隊擠公共國際出口。
- 中轉的瓶頸通常在中轉節點本身。節點負載高時,表現可能還不如直連。
- 直連在非高峰時段夠用,但長連線容易被中斷,適合可以隨時重試的輕量任務。
實測怎麼做:一套可複現的對比流程
API 場景要看的不是單次速度,而是連續可用性。照下面五步走,結果才有可比性:
- 固定腳本:同一個請求、同樣的輸入長度,記錄連線耗時、首個位元組耗時、總耗時與狀態碼。
- 分時段跑:涵蓋上午、晚間高峰與深夜,每個時段連續跑多輪,取分佈而不是取最小值。
- 區分失敗類型:連線失敗、讀取逾時、429 與 5xx 要分開統計,它們的處理方式完全不同。
- 換線路重複:同一支腳本在專線、中轉、直連上各跑一遍,比較趨勢,而不是比較某一次的最佳值。
- 保留原始日誌:時間戳記、出口 IP、狀態碼、耗時,四項齊全才能事後追查。
判斷標準可以很簡單:如果晚間高峰的失敗集中在連線失敗與讀取逾時,那是路徑問題,換線路有意義;如果集中在 429,那是併發或配額問題,換線路沒用,先把併發降下來。
用戶端、協定與訂閱匯入
線路品質由伺服器端決定,用戶端決定的是能不能穩定用上這條線路。
協定差異
常見協定各有取捨,這裡只講與 API 呼叫相關的部分:
- Shadowsocks:輕量,基於 TCP/UDP 轉發,相容性好,適合一般請求。
- VMess:帶時間校驗,用戶端時間偏差過大會直接連不上,排查時先對時。
- Trojan:走 TLS,流量特徵接近一般 HTTPS,適合對偽裝要求高的網路環境。
- VLESS:無狀態、開銷小,常與 TLS 類傳輸搭配使用。
- Hysteria2 與 TUIC:基於 QUIC(UDP),對封包遺失與抖動更耐受,弱網環境下體驗更好,前提是 UDP 可用。
協定本身不改變出口位置,也不保證速度。它影響的是握手開銷、抗封包遺失能力與被干擾的機率。
DNS 與分流
兩個最容易忽略的重點:
- DNS 洩漏:網域如果在本地解析,可能解析到就近節點,甚至暴露查詢內容。用戶端應把 DNS 查詢放進通道,或為 API 網域單獨指定解析方式。
- 分流規則:API 網域與認證網域要一起走代理,本機服務、區域網路與台灣本地站點走直連。只代理一個網域、漏掉認證網域,典型表現是能連上但一直回傳 401。
各平台用戶端的差別主要在接管方式上:
| 平台 | 接管方式 | 注意事項 |
|---|---|---|
| Windows | 系統代理或 TUN | TUN 模式下注意與其他虛擬網卡衝突 |
| macOS | 系統代理或 TUN | 首次啟用需在系統設定裡放行網路擴充功能 |
| iOS | 網路擴充功能 | 切換 Wi-Fi 與行動網路後確認連線仍在 |
| Android | VpnService | 省電策略可能回收背景連線 |
| Linux | 核心加規則集 | 規則檔寫錯時會靜默走直連 |
訂閱匯入
訂閱連結匯入後,用戶端會自動取得節點清單,更新訂閱即更新線路。兩點提醒:一是訂閱位址不要轉發給他人;二是把常用 API 線路設為固定選擇、關掉自動切換。長連線中途換出口,伺服器端看到的就是另一個 IP,風控判斷與白名單都會失效。
開發者選線清單
把上面的內容壓成一張清單,選線前逐條對照:
- ✅ 測試期間出口 IP 保持不變,歸屬地穩定。
- ✅ 連線逾時與讀取逾時分開設定,串流回應單獨放寬。
- ✅ 重試只針對逾時、429 與 5xx,並帶指數退避與抖動。
- ✅ API 網域與認證網域一起進分流規則,DNS 查詢走通道。
- ✅ 訂閱連結放環境變數,不進程式碼儲存庫、不進工單截圖。
- ❌ 用全域代理跑所有流量,把本機服務也一起代理掉。
- ❌ 拿晚間高峰的一次測速結果,就給一條線路下定論。
- ❌ 逾時後無限重試,把一次抖動放大成併發風暴。
結論:固定出口優先,併發與逾時補位
如果不想一開始就搭測試腳本,可以先用最小成本驗證:選一個月訂閱,把 API 網域單獨分流,連續跑幾個時段,看失敗類型集中在哪。本站 90+ 國家、190+ 線路,月訂閱 ¥9.9 起含 60GB,不限台數同時在線,7 天無理由退款,無需電子郵件地址即可註冊,驗證成本可以壓得很低。