01

總覽與定位

把它想成「LLM 版的 API Gateway」:統一入口、路由、限流、成本與可用性,而不是再包一層 SDK。

產品開始接 OpenAI、Anthropic、自架 vLLM、甚至多個模型等級之後,呼叫端很快變成一堆 if/else:哪個模型、超額怎麼辦、供應商掛了怎麼切、重複問題要不要再燒一次 token。LLM Gateway 把這些模型側橫切關注點收到單一控制平面,讓應用只面對穩定的 completion/chat API。

供應商與模型爆炸
同一產品要在 cheap/balanced/premium 之間切換,還要避開單一供應商故障——路由規則不該散落在每個服務裡。
Token 就是帳單
沒有 quota、預算與可觀測的用量歸因,成本會在尖峰或 Agent 迴圈裡無聲爆開。
語意重複很常見
「重設密碼怎麼辦」與「forgot password steps」可能對應同一答案;Semantic Cache 能省延遲與 token。
Route
多模型/多供應商
依策略選後端
→
Quota
Rate limit
預算/租戶配額
→
SemCache
語意相似命中
省 token/延遲
→
Fallback
逾時/5xx
跨供應商切換

這四個盒是本篇後續四節的骨架,也是同一筆請求會依序遭遇的四類規則;看的時候記住它們的計量單位不同——Route 看能力與延遲、Quota 看美元、SemCache 看相似度、Fallback 看供應商健康。

座標與鄰近主題的切分

上游可接 LLM Inference Serving(自架 runtime 如何吃 GPU);本篇站在呼叫側控制平面。刻意不談 Agent 狀態機(留給 agent-runtime-backend),也不談 tool 權限/sandbox(留給 agent-tool-gateway-security)——那些是「工具側」安全與編排;這裡只管模型路由、成本與可用性。

一句話答法LLM Gateway = LLM 版 API Gateway:統一做多模型路由、限流配額、成本控管、跨供應商 fallback 與語意快取。
02

多模型路由:依任務選「夠好且夠省」的後端

路由不是挑最貴模型,而是依 SLA、任務型態與成本曲線把流量分到正確池。

常見路由維度
POLICY · NOT HARDCODE
  • 任務標籤:分類/摘要/程式碼/長推理
  • 延遲預算:互動聊天 vs 離線批處理
  • 租戶/產品線:免費層只准 cheap 池
  • 模型能力:是否需要 function calling、長 context
實作形態
VIRTUAL MODEL · ALIAS
  • 對外暴露虛擬模型名(如 chat-balanced)
  • Gateway 映射到實體供應商+模型版本
  • 金絲雀:同策略下把 p% 打到候選模型
  • 觀測:依路由鍵拆 TTFT、錯誤率、$/1k tokens

好的路由表會把「產品意圖」與「供應商細節」解耦:應用寫 model: chat-balanced,Gateway 決定今天是 GPT 小杯還是自架 Llama。面試時要講清楚:路由決策應可配置、可回放、可對成本歸因,而不是散落在業務程式碼的字串常數。

實務上會先把後端池分出能力級距:短分類與 FAQ 這種任務只需要最低一級;程式碼生成需要中間一級;長鏈推理才需要最高一級。這個級距是路由的硬前提——能力不足的池即使更便宜、更快,也不能拿來承接,只能在「沒有任何能力足夠的池可用」時當作降級選項(見第 4 節)。

應用請求
只寫別名
chat-balanced
──解析別名──→
路由策略
依任務/SLA/租戶
可配置、可回放
──選池──→
Provider A / B
GPT 小杯或
自架 Llama
──計量──→
用量歸因
依路由鍵拆
TTFT/$/錯誤率

解耦點就在第二個盒:應用只寫 model: chat-balanced,今天走哪一家、哪一杯是 Gateway 的政策決定的——換供應商不必動業務程式碼,成本也才歸得了因。

陷阱用單一「最強模型」當預設

多數請求不需要旗艦推理模型。預設打最貴池會讓成本曲線失控,也讓真正需要長推理的請求與短分類搶同一配額。先定任務分級,再談 fallback 升級。

一句話答法多模型路由用虛擬模型別名把流量依任務/SLA/租戶分池,讓應用不綁死供應商字串,並能對成本與延遲分別優化。
03

Rate Limit、Quota 與成本控管

限的不只是 QPS——token、預算與租戶公平性才是 LLM 帳單的真實單位。

傳統 API Gateway 常以請求數或連線數限流;LLM 場景還要同時盯 input/output tokens、並發串流數與美元預算。否則「每分鐘 60 次」仍可能被超長 prompt 或 Agent 多輪迴圈打穿預算。

控制面 計量單位 典型用途 失敗行為
Rate limit req/s、並發 stream 保護下游與自身連線池 429 + Retry-After
Token quota tokens/日/租戶 公平分享、防濫用 降級到 cheap 池或拒單
Budget cap $/日/專案 財務硬上限 硬停或只允許快取命中
Priority lane 權重/佇列 付費/內部 SLA 隔離 低優先權排隊或拋棄

計費歸因至少要能拆到:租戶、虛擬模型、供應商、快取命中與否——否則「這個月貴在哪」無法回答。

關鍵預估 token 與實際 token

准入時往往只能用 tokenizer 近似或歷史均值做預留;完成後再按實際 usage 結算。預留過緊會誤殺;過鬆會超賣。實務是 soft reserve + 完成後校正,並對異常長輸出設硬上限。擋下請求的是預留金額、不是最後的帳單——這兩個數字不一樣,而被拿去和剩餘預算比較的永遠是前者。

一句話答法LLM 限流要以 token/預算/並發一起管;429 只是手段,目標是租戶公平與可控的單位經濟。
04

跨供應商 Fallback:可用性大於單一模型忠誠度

逾時、配額用盡、區域故障時,Gateway 應能依政策切到備援供應商或較小模型。

Fallback 鏈常見順序:同供應商次級模型 → 另一供應商同級模型 → 降級回答(較短、較便宜)→ 快取/模板兜底。關鍵不是「永遠成功」,而是失敗可預期、行為可宣告(例如回應標頭標明實際模型與是否降級)。

這條鏈上有兩個常被混用的詞,面試時要分清楚:Fallback 指首選後端因健康問題(逾時、5xx、熔斷)出局,改由另一個能力同樣足夠的後端承接,答案品質不打折,代價通常是成本或延遲上升;Degrade(降級)指沒有任何能力足夠的後端可用(被延遲預算、context 上限或預算擋掉),只好用低一級的模型作答,品質確實會打折,因此必須在回應標頭標註。前者換家、後者換級。

Primary
同供應商主力模型
──timeout / 5xx──→
Secondary
次級模型
或另一家同級
──still fail──→
Degraded / Deny
較短回答、快取兜底
或明確拒單

Fallback 的目標不是永遠成功,而是讓失敗可預期:每一跳都要在回應標頭標明實際模型與是否降級,否則呼叫端會把降級答案當成旗艦模型的水準。

觸發條件 建議動作 要注意
連線逾時/5xx 重試備援供應商 幂等與部分串流已送出時的客戶端協議
上游 429 退避或切池 避免雪崩式連打把備援也打爆
內容政策拒答 通常不盲目換商重試 換商可能繞過合規預期,需明確政策
品質抽檢失敗 金絲雀回滾路由權重 屬路由層,不是單次請求 fallback
陷阱串流中途切供應商

若已向客戶端送出部分 tokens,中途換模型會造成語氣/事實不一致。實務多在首 token 前完成 fallback;串流開始後偏向快速失敗並讓客戶端重試整段,或明確標註「已降級續寫」。

一句話答法跨供應商 fallback 用可配置鏈在逾時與 5xx 時切備援;串流一旦開始就很難乾淨切換,政策要公開可觀測。
05

Semantic Cache:用「意思相近」省 token 與延遲

Exact-match cache 不夠;以 embedding 近似度命中歷史回答,是 Gateway 最常見的成本槓桿之一。

流程概觀:請求進來 → 產生 query embedding → 在向量索引找鄰近歷史 query → 相似度 ≥ 閾值則直接回傳快取 completion(或再經輕量校验)→ 否則打模型並寫回快取。這與 RAG 檢索不同:這裡快取的是對模型的既有答案,目的是跳過生成,不是組上下文。

sim(q, q′) ≥ τ ⇒ return cached completion
設計點 取捨
相似度閾值 τ 高 → 精準但命中低;低 → 省錢但易錯答
快取鍵範圍 必須納入 system prompt、工具版本、租戶隔離,避免串話
新鮮度/TTL 知識會變:政策、價格、庫存類要短 TTL 或禁用快取
寫入策略 只快取「可安全重放」的成功回應;含 PII 需脫敏或不入庫

Semantic cache 是成本與正確性的滑桿:面試要能說你如何選 τ、如何隔離租戶、以及哪些流量根本不該快取。

關鍵命中率不是唯一 KPI

還要盯「錯命中率」(語意近但答案不該共用)與節省的 $/延遲。一個高命中但常回過期答案的快取,比低命中更危險。實務會把「可接受的錯命中率」做成租戶等級的政策:內部與高價層容忍度低、免費層容忍度高——同一個相似度分數,在不同租戶下可以得到不同的放行結論。

一句話答法Semantic cache 用 embedding 近似度重用歷史 completion,省 token 與延遲;閾值、隔離鍵與 TTL 決定它是資產還是事故來源。
06

互動 · 准入與路由決策

前面四節是規則,這一節把規則跑起來:同一筆請求,改一個旋鈕就換一個結論。

下面的決策器把第 2 到第 5 節的規則寫成一次判定。左邊調請求本身,右邊調 Gateway 當下的狀態;四個後端池與 Semantic Cache 會被畫成平面上的五個候選點,兩條約束線切出可行域,最後導出一個判定碼與它的數字理由。

互動 · 准入與路由決策 拖任一個旋鈕,判定與理由即時重算
請求屬性
輸入 token600
輸出 token250
延遲預算3,500 ms
Gateway 狀態
租戶層級Pro
今日已用預算40%
最近鄰快取相似度0.93
相似度閾值 τ0.90
供應商健康全部正常

橫軸是准入預留(被拿去和剩餘預算比較的那個數,不是最後帳單),縱軸是預估延遲,兩軸都是對數刻度。左下角填色矩形=兩條量化約束切出的可行域;能力級距、context 上限與供應商健康不是座標軸,違反它們的候選會留在原位但畫成空心並標出是哪一條規則擋的。看的時候先找雙環的勝出點,再看被擋在哪條線外。

可行 勝出 能力不足(可當降級候選) 出局
候選後端能力准入預留實際成本預估延遲判定

預留與實際成本的差距就是第 3 節說的 soft reserve:預留用 輸出 token × 1.3 抓保險係數,完成後再按實際 usage 結算並退回差額。

一句話答法Gateway 的准入是一次多約束判定:能力級距、context、延遲預算、剩餘預算與快取相似度一起決定這筆請求走快取、正常路由、換家、降級,還是直接 429。
07

面試折衷與邊界

把 Gateway 講成控制平面:路由、配額、fallback、快取——並畫清與 Agent/Tool Gateway 的責任邊界。

面試常問 建議答法骨架
為什麼需要 LLM Gateway? 統一多模型路由、token/預算控管、跨商可用性與語意快取,避免邏輯散落在每個服務。
和 API Gateway 差在哪? 計量單位是 token/$、有虛擬模型與串流語意、還有 embedding 級快取與模型降級鏈。
Semantic cache 何時不該用? 高時效、個人化、含 PII、或答案依賴即時工具結果的請求。
Fallback 與 Degrade 差在哪? Fallback 換家、能力不降;Degrade 換級、品質打折且必須在回應標頭標註。
Fallback 如何避免雪崩? 備援獨立配額、電路熔斷、抖動退避;不要把所有重試打向同一個 secondary。
差異化本篇管什麼、不管什麼

管:模型側路由、成本、限流、跨供應商可用性、語意快取。不管:Agent 狀態機與多步編排(agent-runtime-backend);工具呼叫的權限、sandbox、資料外洩防護(agent-tool-gateway-security)。兩者常被混稱「Gateway」,面試要先劃界。

邊界本篇刻意不覆蓋

不深入 GPU continuous batching/KV(見 Inference Serving);不實作 Agent loop;不設計 tool allowlist。Gateway 可以轉發 function calling,但授權模型屬於工具閘道議題。

一句話答法面試先類比 API Gateway,再補 token 計量、虛擬模型路由、fallback 鏈與 semantic cache;並明確切開工具權限與 Agent runtime。