總覽與定位
把它想成「LLM 版的 API Gateway」:統一入口、路由、限流、成本與可用性,而不是再包一層 SDK。
產品開始接 OpenAI、Anthropic、自架 vLLM、甚至多個模型等級之後,呼叫端很快變成一堆 if/else:哪個模型、超額怎麼辦、供應商掛了怎麼切、重複問題要不要再燒一次 token。LLM Gateway 把這些模型側橫切關注點收到單一控制平面,讓應用只面對穩定的 completion/chat API。
依策略選後端
預算/租戶配額
省 token/延遲
跨供應商切換
這四個盒是本篇後續四節的骨架,也是同一筆請求會依序遭遇的四類規則;看的時候記住它們的計量單位不同——Route 看能力與延遲、Quota 看美元、SemCache 看相似度、Fallback 看供應商健康。
上游可接 LLM Inference Serving(自架 runtime 如何吃 GPU);本篇站在呼叫側控制平面。刻意不談 Agent 狀態機(留給 agent-runtime-backend),也不談 tool 權限/sandbox(留給 agent-tool-gateway-security)——那些是「工具側」安全與編排;這裡只管模型路由、成本與可用性。
多模型路由:依任務選「夠好且夠省」的後端
路由不是挑最貴模型,而是依 SLA、任務型態與成本曲線把流量分到正確池。
- 任務標籤:分類/摘要/程式碼/長推理
- 延遲預算:互動聊天 vs 離線批處理
- 租戶/產品線:免費層只准 cheap 池
- 模型能力:是否需要 function calling、長 context
- 對外暴露虛擬模型名(如
chat-balanced) - Gateway 映射到實體供應商+模型版本
- 金絲雀:同策略下把 p% 打到候選模型
- 觀測:依路由鍵拆 TTFT、錯誤率、$/1k tokens
好的路由表會把「產品意圖」與「供應商細節」解耦:應用寫 model: chat-balanced,Gateway 決定今天是 GPT 小杯還是自架 Llama。面試時要講清楚:路由決策應可配置、可回放、可對成本歸因,而不是散落在業務程式碼的字串常數。
實務上會先把後端池分出能力級距:短分類與 FAQ 這種任務只需要最低一級;程式碼生成需要中間一級;長鏈推理才需要最高一級。這個級距是路由的硬前提——能力不足的池即使更便宜、更快,也不能拿來承接,只能在「沒有任何能力足夠的池可用」時當作降級選項(見第 4 節)。
chat-balanced可配置、可回放
自架 Llama
TTFT/$/錯誤率
解耦點就在第二個盒:應用只寫 model: chat-balanced,今天走哪一家、哪一杯是 Gateway 的政策決定的——換供應商不必動業務程式碼,成本也才歸得了因。
多數請求不需要旗艦推理模型。預設打最貴池會讓成本曲線失控,也讓真正需要長推理的請求與短分類搶同一配額。先定任務分級,再談 fallback 升級。
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 隔離 | 低優先權排隊或拋棄 |
計費歸因至少要能拆到:租戶、虛擬模型、供應商、快取命中與否——否則「這個月貴在哪」無法回答。
准入時往往只能用 tokenizer 近似或歷史均值做預留;完成後再按實際 usage 結算。預留過緊會誤殺;過鬆會超賣。實務是 soft reserve + 完成後校正,並對異常長輸出設硬上限。擋下請求的是預留金額、不是最後的帳單——這兩個數字不一樣,而被拿去和剩餘預算比較的永遠是前者。
跨供應商 Fallback:可用性大於單一模型忠誠度
逾時、配額用盡、區域故障時,Gateway 應能依政策切到備援供應商或較小模型。
Fallback 鏈常見順序:同供應商次級模型 → 另一供應商同級模型 → 降級回答(較短、較便宜)→ 快取/模板兜底。關鍵不是「永遠成功」,而是失敗可預期、行為可宣告(例如回應標頭標明實際模型與是否降級)。
這條鏈上有兩個常被混用的詞,面試時要分清楚:Fallback 指首選後端因健康問題(逾時、5xx、熔斷)出局,改由另一個能力同樣足夠的後端承接,答案品質不打折,代價通常是成本或延遲上升;Degrade(降級)指沒有任何能力足夠的後端可用(被延遲預算、context 上限或預算擋掉),只好用低一級的模型作答,品質確實會打折,因此必須在回應標頭標註。前者換家、後者換級。
或另一家同級
或明確拒單
Fallback 的目標不是永遠成功,而是讓失敗可預期:每一跳都要在回應標頭標明實際模型與是否降級,否則呼叫端會把降級答案當成旗艦模型的水準。
| 觸發條件 | 建議動作 | 要注意 |
|---|---|---|
| 連線逾時/5xx | 重試備援供應商 | 幂等與部分串流已送出時的客戶端協議 |
| 上游 429 | 退避或切池 | 避免雪崩式連打把備援也打爆 |
| 內容政策拒答 | 通常不盲目換商重試 | 換商可能繞過合規預期,需明確政策 |
| 品質抽檢失敗 | 金絲雀回滾路由權重 | 屬路由層,不是單次請求 fallback |
若已向客戶端送出部分 tokens,中途換模型會造成語氣/事實不一致。實務多在首 token 前完成 fallback;串流開始後偏向快速失敗並讓客戶端重試整段,或明確標註「已降級續寫」。
Semantic Cache:用「意思相近」省 token 與延遲
Exact-match cache 不夠;以 embedding 近似度命中歷史回答,是 Gateway 最常見的成本槓桿之一。
流程概觀:請求進來 → 產生 query embedding → 在向量索引找鄰近歷史 query → 相似度 ≥ 閾值則直接回傳快取 completion(或再經輕量校验)→ 否則打模型並寫回快取。這與 RAG 檢索不同:這裡快取的是對模型的既有答案,目的是跳過生成,不是組上下文。
| 設計點 | 取捨 |
|---|---|
| 相似度閾值 τ | 高 → 精準但命中低;低 → 省錢但易錯答 |
| 快取鍵範圍 | 必須納入 system prompt、工具版本、租戶隔離,避免串話 |
| 新鮮度/TTL | 知識會變:政策、價格、庫存類要短 TTL 或禁用快取 |
| 寫入策略 | 只快取「可安全重放」的成功回應;含 PII 需脫敏或不入庫 |
Semantic cache 是成本與正確性的滑桿:面試要能說你如何選 τ、如何隔離租戶、以及哪些流量根本不該快取。
還要盯「錯命中率」(語意近但答案不該共用)與節省的 $/延遲。一個高命中但常回過期答案的快取,比低命中更危險。實務會把「可接受的錯命中率」做成租戶等級的政策:內部與高價層容忍度低、免費層容忍度高——同一個相似度分數,在不同租戶下可以得到不同的放行結論。
互動 · 准入與路由決策
前面四節是規則,這一節把規則跑起來:同一筆請求,改一個旋鈕就換一個結論。
下面的決策器把第 2 到第 5 節的規則寫成一次判定。左邊調請求本身,右邊調 Gateway 當下的狀態;四個後端池與 Semantic Cache 會被畫成平面上的五個候選點,兩條約束線切出可行域,最後導出一個判定碼與它的數字理由。
橫軸是准入預留(被拿去和剩餘預算比較的那個數,不是最後帳單),縱軸是預估延遲,兩軸都是對數刻度。左下角填色矩形=兩條量化約束切出的可行域;能力級距、context 上限與供應商健康不是座標軸,違反它們的候選會留在原位但畫成空心並標出是哪一條規則擋的。看的時候先找雙環的勝出點,再看被擋在哪條線外。
| 候選後端 | 能力 | 准入預留 | 實際成本 | 預估延遲 | 判定 |
|---|
預留與實際成本的差距就是第 3 節說的 soft reserve:預留用 輸出 token × 1.3 抓保險係數,完成後再按實際 usage 結算並退回差額。
面試折衷與邊界
把 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,但授權模型屬於工具閘道議題。