不代表。
今天我們替 LiteLLM 設定了一條比較完整的備援規則:
暫時故障,可以換模型。
資料或能力有問題,不要亂換。
高風險操作,直接交回人。
做到這裡之後,很容易產生下一個錯覺:
「我已經有主要模型和備援模型,所以 AI 服務現在不會停了。」
其實還差很遠。
因為:
有備援模型,和整套 AI 服務真的高可用,是兩件不同的事。
先看最簡單的情況
假設客服 AI 平常使用模型 A。
模型 A 暫時發生服務錯誤。
LiteLLM 自動切換到已經測試過的模型 B。
模型 B 正常回答。
客戶沒有感覺到中斷。
這就是備援最理想的情況。
但它只證明:
這一次模型供應商故障時,另一個模型成功接手。
它沒有證明整條系統永遠不會停。
第一個問題:如果備援模型也壞了呢?
模型 A 可能過載。
模型 B 也可能同時遇到:
- Rate Limit。
- 區域性故障。
- 網路問題。
- 帳號限制。
- 部署不可用。
特別是兩個模型如果最後其實依賴:
同一個雲端。
同一個網路。
同一個帳戶。
甚至同一個區域。
看起來有兩條路,實際上可能共享同一個故障點。
這叫做「共同故障點」
最簡單的例子:
你準備兩個模型部署。
但它們全部依賴同一組網路連線。
網路一斷:
兩個都不能用。
所以備援真正要問的是:
第二條路是不是也依賴第一條路會壞掉的東西?
第二個問題:如果 LiteLLM 自己停了呢?
LiteLLM 放在 App 和模型供應商中間。
請求先進 LiteLLM。
再由它決定:
- 送哪個模型。
- 要不要 Retry。
- 要不要 Fallback。
所以如果所有 AI 流量都只經過一個 LiteLLM Gateway,而這個 Gateway 本身停掉:
後面即使有十個模型,也可能一個都收不到 Request。
這就是為什麼:
模型有備援,不代表 Gateway 自己也有備援。
真正正式環境還要看 Gateway 本身
當 LiteLLM 只是自己測試時,一台機器可能就夠。
但正式服務如果不能輕易停機,就要進一步考慮:
- Gateway 是否有多個執行實例。
- 前面是否有 Load Balancer。
- 資料庫是否可靠。
- Gateway 是否能被健康檢查。
- 異常時有沒有警報。
這已經不是「換哪個模型」的問題。
而是一般正式系統本來就需要處理的可靠性問題。
第三個問題:模型看起來活著,就代表真的能工作嗎?
也不一定。
假設模型 Provider 的 API 還可以連線。
所以系統認為:
它是正常的。
但實際送一份複雜文件後:
一直 Timeout。
或者某個區域突然非常慢。
這時只知道:
「這個模型存在。」
還不夠。
你還需要知道:
它現在是不是健康到足以接正式流量。
LiteLLM 有 Health Check Routing
LiteLLM 提供健康檢查導向的路由方式。
一般路由可能要等到:
真正有一位使用者送出 Request。
某個 Deployment 失敗。
系統才知道:
這條路現在有問題。
Health Check Routing 則可以利用健康檢查結果,提前避免把新的流量繼續送向已知不健康的 Deployment。
這會比:
「每次都先讓一個客戶撞到故障,再換路。」
更合理。
但 Health Check 也不是保證
因為系統狀況可能在幾秒鐘內變化。
剛才檢查正常。
下一秒仍然可能故障。
而且不同錯誤也不一定都代表 Deployment 已經完全壞掉。
例如:
暫時的 Rate Limit。
短暫 Timeout。
可能只是瞬間流量問題。
所以健康檢查的功能是:
降低把流量送進已知故障路徑的機率。
不是替系統加上一張「永不故障」保證書。
第四個問題:技術接手成功,工作可能還是失敗
這可能是 AI 系統最容易被忽略的一點。
假設:
模型 A 故障。
LiteLLM 正確切到模型 B。
模型 B 回傳 200。
從系統監控來看:
成功。
但模型 B 把退款政策理解錯了。
那對公司來說:
這次備援還是失敗。
所以高可用不能只有 Uptime
一般軟體很常追蹤:
服務有沒有在線。
但 AI 還多一層:
服務雖然在線,產生的結果到底能不能用?
因此至少應該分開看:
- 系統可用性。
- 模型回應成功率。
- 工作成果可用率。
三個不是同一件事。
例如模型 B 成功接手 100 次
技術紀錄可能顯示:
100 次 Fallback 都成功收到 Response。
看起來非常漂亮。
但如果人工檢查後:
- 60 件可以直接用。
- 30 件需要修改。
- 10 件完全失敗。
那麼你真正擁有的不是:
100% 完美備援。
而是一條:
技術接得上,但工作品質還需要改善的備援路線。
第五個問題:備援可能變得非常貴
假設主要模型比較便宜。
備援模型價格高很多。
平常只偶爾切一次,問題不大。
但如果主要 Provider 故障兩小時:
幾萬筆流量全部切過去。
帳單可能突然上升。
所以備援還需要問:
- 備援模型單次成本多少?
- 最多可以接多少流量?
- 預算上限是多少?
- 如果預算達上限怎麼辦?
這也是為什麼 LiteLLM 同時提供 Spend、Budget 與 Rate Limit 管理。
高可用不等於「不惜代價永遠回答」
這點很重要。
假設一個一般 FAQ。
多花一點錢切備援,可能合理。
但如果:
主要模型長時間故障。
備援成本是原來十倍。
公司不一定要:
無限制一直燒。
可以預先設定:
超過某個成本或流量後:
- 只保留重要工作。
- 降低非必要功能。
- 讓部分工作排隊。
- 轉人工。
這同樣是備援策略。
第六個問題:備援模型可能需要不同 Prompt
有些團隊會期待:
同一份 Prompt 丟給任何模型。
答案都一樣。
實際上不同模型可能:
- 對指令格式反應不同。
- 結構化輸出穩定度不同。
- Tool Calling 行為不同。
- 對長上下文處理不同。
所以真正的備援測試,不一定只測:
模型 B 能不能吃模型 A 的 Prompt。
而要測:
怎麼設定才能讓 B 穩定完成相同工作。
必要時,兩個模型可能需要不同版本的 Prompt。
第七個問題:有些故障根本不是模型造成的
例如客服 Agent 需要:
- 讀 CRM。
- 查訂單。
- 讀公司知識庫。
- 最後呼叫模型。
今天 CRM 掛了。
這時模型 A 換模型 B。
沒有任何幫助。
因為兩個模型都讀不到訂單。
所以 AI 系統真正的依賴其實是一條鏈:
App。
Gateway。
模型。
資料庫。
工具。
網路。
身份驗證。
其中任何一個必要環節出問題,都可能讓工作無法完成。
這也是為什麼 Agent 特別需要看整條流程
單純聊天可能只有:
使用者 → 模型 → 答案。
Agent 則可能是:
使用者 → Gateway → 模型 → CRM → 搜尋 → 模型 → Email → 完成。
鏈愈長:
潛在故障點愈多。
所以:
多一個備援模型,只補了其中一個節點。
那什麼才叫真正比較可靠?
至少要看五層。
第一層:模型備援。
主要模型失敗,有已驗證的替代模型。
第二層:部署健康。
避免新流量持續送到已知故障 Deployment。
第三層:Gateway。
不要讓模型入口本身變成唯一故障點。
第四層:工作品質。
備援模型真的能產生可用成果。
第五層:人工降級。
AI 都不能可靠工作時,還有辦法讓重要工作繼續。
「人工降級」到底是什麼?
例如客服 AI 全部暫時不可用。
不一定要整個網站顯示:
服務失敗。
可以改成:
- 先收集客戶問題。
- 建立人工待處理案件。
- 保留聯絡方式。
- 由真人稍後處理。
功能變少了。
但核心服務沒有完全消失。
這就是降級。
真正的高可用不一定代表:
任何時候所有功能都一模一樣。
而是:
系統出問題時,最重要的工作仍有一條可以安全繼續的路。
不要等正式故障才第一次測 Fallback
這和消防演習很像。
如果公司只寫:
「火災時走這裡。」
但從來沒有人真的走過。
真正發生火災時才可能發現:
那扇門根本打不開。
AI 備援也一樣。
不能只確認設定檔裡有模型 B。
要真的模擬:
模型 A 不可用。
然後看:
- 有沒有正確 Retry。
- 有沒有切到 B。
- B 的結果能不能用。
- 成本是否正常。
- 系統是否留下紀錄。
- 需要人工的案件是否真的停下來。
還要測「復原」
這一步更容易漏。
主要模型恢復後:
系統會不會正常回到主要模型?
還是所有流量永遠留在備援?
恢復後是否突然一次處理大量排隊工作?
是否產生重複執行?
故障只是半場。
恢復正常,也是備援測試的一部分。
最簡單的「五問」檢查法
如果已經設定模型備援,可以直接問五個問題。
一、主要模型真的壞掉時,會自動切嗎?
不是看設定,是實際測。
二、備援模型真的做得了同一份工作嗎?
看成果,不只看 Response。
三、Gateway 自己壞了怎麼辦?
不要只替模型準備備援。
四、模型以外的工具壞了怎麼辦?
CRM、資料庫與其他 API 都是依賴。
五、所有自動路徑都不行時,工作去哪裡?
這就是最後人工路徑。
可以直接使用的 AI 備援檢查 Prompt
我要檢查目前的 AI 系統是不是只有「看起來有備援」,還是真的能在故障時繼續服務。 目前工作: [描述工作] 主要模型: [模型] 備援模型: [模型] AI Gateway: [例如 LiteLLM] 另外依賴: [CRM、資料庫、搜尋、Email、外部 API 等] 請不要因為我已設定第二個模型,就直接判定高可用。 請分成五層檢查。 第一層:模型 主要模型真正故障時: 會 Retry 幾次? 何時切備援? 備援是否用真實案例測過? 第二層:Gateway 如果 Gateway 本身停止: Request 還有沒有其他入口? 是否存在單一故障點? 第三層:其他工具 列出完成這項工作所有必要依賴。 每一個依賴停止時回答: 換模型有沒有用? 可以降級嗎? 還是必須停止? 第四層:工作成果 備援模型成功回應後,如何確認: 答案可直接用、 需要修改、 還是失敗? 不要把 HTTP 成功直接等於工作成功。 第五層:人工降級 如果所有自動路徑都失敗: 哪些資料先保留? 工作放到哪裡排隊? 由誰接手? 哪些高風險操作必須直接停止? 最後替我產生一份故障演習清單,至少測: 主要模型故障。 備援模型故障。 Gateway 故障。 必要工具故障。 所有 AI 都不可用。 主要模型恢復。 每個測試都寫清楚預期結果。 如果目前沒有備援措施,直接標示缺口,不要假設系統會自己恢復。
哪種小公司需要做到這麼多?
不是每一家公司。
如果 AI 只是:
- 幫忙寫文案。
- 整理個人筆記。
- 偶爾研究。
模型停半小時可能沒有什麼大問題。
直接換另一個聊天工具就好。
但如果 AI 已經負責:
- 正式客服。
- 網站功能。
- 每天大量自動化。
- 企業內部工作流程。
- 客戶付費使用的產品。
可靠性就開始變成真正的商業問題。
備援程度應該跟「停機代價」一起決定
如果 AI 停一小時:
只是少產生幾篇文案。
不需要建立銀行等級的基礎設施。
如果 AI 停一小時:
幾千名付費客戶全部不能使用產品。
那麼多投入一些成本建立備援就比較合理。
所以不要因為:
「高可用聽起來很專業。」
就什麼都做成最複雜。
真正要問的是:
這項服務停多久,我的生意才真的開始受傷?
今天最重要的答案
設定備援模型是一個非常好的開始。
但它只回答:
「模型 A 不能用時,有沒有另一個模型?」
真正的 AI 服務還要再問:
- 模型 B 真的能完成嗎?
- Gateway 自己會不會停?
- 其他工具是不是正常?
- 成本會不會失控?
- 系統怎麼知道某條路已經壞了?
- 所有 AI 都不能用時,人怎麼接手?
所以:
有備援,不等於高可用。
真正的高可用也不是「永遠不會故障」。
而是:
故障真的發生時,系統知道哪條路不能走、哪條路可以接手,以及最後什麼時候必須把工作安全交回人。
備援模型只是第二條路。
真正重要的是:
你有沒有真的走過一次。
今天,和 AI 一起進步一點。
每天學會一個 AI 技巧。
每天節省一點時間。
每天提升一點能力。
SasaDaily,陪你一起成長。