cd ../back to blog
$Guide//June 4, 2026//8 min read

如何挑選 OpenAI 相容的 AI 閘道:一份買家檢查清單

從真實性、計費誠實度、可靠性、涵蓋範圍到價格與條款,五個面向教你挑對 OpenAI 相容 AI 閘道,並附上一分鐘驗證腳本。

你已經判斷出使用閘道是合理的 — 多家供應商,匯整成一個 OpenAI 相容端點、一張帳單。接下來才是更難的問題:該選哪一家, 又不至於最後落到一個被重新包裝、灌水計費、不穩定的轉售商手上 —— 它之所以能比定價便宜 80%,是因為那些容量說不定一夜之間就消失。 以下是我們自己會用的檢查清單,涵蓋真正重要的五件事 —— 外加一段一分鐘的腳本,讓你親自驗證這些說法,而不是照單全收。

1. 真實性 —— 它是不是真正的模型?

模型名稱是最容易造假的一環。轉售商可以在 claude-sonnet-4-6 的名義底下,端出一個更小的模型、一個微調版本,或只是把你的提示詞 套進固定樣板再回傳。請驗證那些降級無法偽裝的能力:完整的上下文視窗、 原生工具呼叫、視覺辨識。 模型真實性那篇文章 裡有對應的探測方法。

  • 這個模型能不能撐住它宣稱的完整上下文(在 150K+ 做大海撈針)?
  • 原生工具與視覺辨識能不能用,還是只是用文字假冒的?
  • 這個模型是否可追溯到第一方來源(Bedrock、Vertex),還是來路不明?

2. 計費誠實度 —— 計量器說的是不是實話?

你按 token 付費,而數量是由閘道回報的。在這裡灌水 —— 偷偷注入一段系統提示詞,或是憑空捏造一個 usage 物件 —— 是最不動聲色、卻能把你超收 5~25 倍的手法。用 20 行程式就能驗證(見 token 灌水那篇文章)。

  • 回報的 token 數是否等於你實際的文字量再加上一小段固定的額外開銷?
  • 失敗的 4xx/5xx 呼叫是否免費,還是連錯誤都要付費?
  • 提示詞快取有沒有被如實對待 —— 真正的快取命中是否以折扣費率計算?

3. 可靠性 —— 在高負載下會不會掛掉?

閘道多加了一道中繼;它必須靠「比上游更可靠、而非更不可靠」來換取這個位置。 要留意快速失敗的行為(給你能重試的錯誤,而不是卡住 90 秒), 以及會主動把流量從劣化後端移走的路由機制。

  • 有沒有公開狀態頁,以及一個公布的 SLA 數字?
  • 跨供應商的容錯切換,還是每次呼叫只對應單一上游?
  • 它會不會快速且明確地失敗,好讓你的重試能運作,而不是默默卡住?

4. 涵蓋範圍 —— 一把金鑰能不能搞定你真正在做的工作?

  • 對話、圖片與影片能用同一把金鑰,還是只有文字?
  • 是否全程都相容 OpenAI —— 串流、工具、視覺辨識、JSON 模式?
  • 在重要場合的原生路由(例如 Anthropic 的 /v1/messages)有沒有原封不動地保留?

5. 價格與條款 —— 便宜得有原因,還是定價合理?

陷阱往往埋在價格裡。比官方定價低一些的折扣,是建立在規模化基礎設施上的利潤空間。 而一個比定價便宜 80% 的閘道,賣的是隨時會消失的灰色市場容量 —— 省下來的錢一定來自某處,而那通常就是拿真實性或穩定性換來的。

  • 是否針對每個模型、對照官方費率定價(可稽核),而非含糊的全面性折扣?
  • 用多少付多少,還是被綁在訂閱方案與會過期的點數裡?
  • 餘額會不會過期?有沒有最低消費門檻?

一分鐘就能完成的盡職調查

別把行銷頁面的話 —— 也別把我們的話 —— 照單全收。把這些檢查跑一遍:

gateway_due_diligence.py
# gateway_due_diligence.py
# 在正式環境信任任何 OpenAI 相容閘道之前,都可以拿它來跑這段。
# 五項檢查,成本遠低於一美分,大約一分鐘。
import tiktoken
from openai import OpenAI

client = OpenAI(api_key="sk-...", base_url="https://api.brievio.com/v1")

# 1. 誠實計費 — 比對回報的 prompt_tokens 與本地分詞器數出來的數量。
msgs = [{"role": "user", "content": "Reply with the single word: ok."}]
r = client.chat.completions.create(model="claude-sonnet-4-6", messages=msgs, max_tokens=5)
local = len(tiktoken.get_encoding("cl100k_base").encode(msgs[0]["content"]))
print("token ratio (want ~1.0-1.6x):", round(r.usage.prompt_tokens / local, 1))

# 2. 真正的模型 — 真實的結構化 tool_call,而不是把 JSON 硬塞進文字裡。
r = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "weather in Tokyo? use the tool"}],
    tools=[{"type": "function", "function": {"name": "get_weather",
        "parameters": {"type": "object", "properties": {"city": {"type": "string"}}}}}],
)
print("returns real tool_calls:", r.choices[0].message.tool_calls is not None)

# 3. 失敗呼叫免費 — 故意送出一個錯誤的請求,接著去看 usage 頁面:
#    4xx/5xx 應該完全不計費。
# 4. 上下文 — 在模型宣稱的視窗大小做大海撈針測試
#    (程式片段見「你的 Claude 真的是 Claude 嗎」那篇文章)。
# 5. 條款 — 有公開的狀態頁與公布的 SLA;定價是針對每個模型對照官方費率,
#    而不是含糊的「全部一律打 2 折」。

Brievio 在自己的清單上落在哪裡

老實說說我們自己的成績單:Brievio 透過 tier-1 雲端通道,路由的是 真正的第一方模型(Claude 走 AWS Bedrock、Gemini 走 Google Vertex), 完整上下文與原生功能都原封不動;以真實的 token 數計費, 失敗的呼叫一律不收費;每個模型的定價約比官方定價低 15%(圖片與影片折扣更深),用多少付多少,餘額不會過期。我們贏不了的地方在於: 直接走官方在首日就能取得新模型、 以及正式的簽約主體(provider-of-record)這兩點上,依然勝過我們;而 OpenRouter則涵蓋了範圍廣得多的開源長尾。完整內容請見 比較定價, 然後拿上面那段腳本,去跑你候選名單上的每一個閘道。

檢查清單的意義,就在於你可以拿它去檢驗每一個人,包括寫出這份清單的廠商。 也拿它來檢驗我們吧。