AI應用的靜默失敗:每個錯誤都必須留下記錄
API超時、速率限制、空回覆三類高頻問題——失敗路徑的顯式設計是AI應用走向生產的必要門檻
「靜默失敗」(Silent Failure)是軟件工程中公認的反模式——程序遇到錯誤時不拋出異常、不記錄日誌,只是默默返回空值或假裝成功。這個問題在AI應用中尤為普遍,且後果更難追蹤,原因在於LLM的失敗模式比傳統API更為多樣。
三類高頻靜默失敗
一、API超時後未做任何處理
LLM API的響應時間因任務複雜度與模型負載而波動,從數秒到數分鐘不等。若代碼設定了過短的超時閾值,而任務實際需要更長時間,系統可能在未記錄任何信息的情況下丟棄請求。用戶界面顯示加載狀態後直接消失,既無錯誤提示,也無重試機制,開發者無從得知發生了什麼。
二、速率限制(Rate Limit)後靜默重試
所有LLM API均設有請求速率上限(RPM/TPM限制)。觸及上限時,API返回HTTP 429錯誤。部分實現在後台無限重試,用戶等待時間不斷延長,最終看到的僅是通用的「請求失敗」提示。若系統從未記錄429事件,開發者無法判斷速率上限是否需要提升、哪個功能是主要觸發源、以及高峰時段費用是否因此翻倍。
三、空回覆或格式不符
強制JSON輸出時,LLM偶爾返回格式不符合預期的輸出,例如在JSON外包裹說明文字,或完全返回空字符串。若代碼直接呈現模型輸出而不進行校驗,用戶看到空白界面,開發者面對的是一個完全無法定位的問題:是提示設計問題、模型問題,還是解析邏輯問題?
每次LLM調用應記錄的最低字段
| 字段 | 用途 |
|---|---|
| 時間戳(+8時區) | 對應用戶報告時間 |
| 用戶ID | 費用歸因 |
| 模型名稱 | 分析各模型使用分佈 |
| Input/Output Tokens | 費用計算基礎 |
| 響應時間(毫秒) | 性能監控 |
| 成功/失敗狀態 | 錯誤率統計 |
| 錯誤碼 | 區分429、500、超時等失敗類型 |
| 實際費用 | 即時成本控制 |
失敗路徑的顯式設計
正確的設計原則是:每一個可能的失敗分支,都必須有明確的處理邏輯——記錄日誌、通知用戶、啟動回退。「什麼都不做」在AI應用中永遠是錯誤的選擇,因為LLM調用的費用計量以Token為單位,一次靜默的超時重試可能在賬單上留下痕跡,但在日誌中毫無蹤跡。
小結
AI應用的失敗比傳統API更難發現:模型可能返回格式正確但語義錯誤的輸出,超時可能發生在多個層級,費用可能在靜默重試中倍增。主動為每一個失敗路徑設計處理邏輯,使錯誤可見、可追蹤、可告警,是AI應用從原型走向生產的必要門檻。
Levi係駐香港嘅獨立AI工程師,協助企業建立生產級AI系統的可觀測性基礎設施。如需設計AI應用的日誌與錯誤監控系統,歡迎洽詢。
WhatsApp 免費初步評估 → 查看更多企業案例 →或以電郵聯絡:support@hksoka.com