在建構基於大型語言模型(LLM)的智能助手時,系統需要處理從簡單問答到複雜的 Agent 工作流(如多步驟推理、工具調用和跨代理協作)等不同任務。隨著系統規模擴大和用戶量增長,延遲、連線中斷和資源消耗成為架構上的主要挑戰。因此,客戶端與 LLM 之間的互動模式設計,是決定系統穩定性與效能的關鍵因素。
在設計一套系統時,互動模式的選擇是關鍵的架構決策,其核心在於「客戶端選擇如何與後端溝通」。這個選擇不僅僅是技術層面的考量,它將從根本上決定整套系統的設計方向、資源需求,並直接塑造終端使用者的體驗。
前端與後端之間的通訊方式,常見的模式包括傳統的長輪詢(Long Polling))、SSE(Server-Sent Events)以及 WebSocket。
這個重要的選擇會直接決定整套系統的設計與體驗:容量模型、觀測與重試語意、錯誤邊界、以及使用者感知的即時性。
同步模式的運作方式是:客戶端發送請求,然後等待後端處理完成後返回結果。這種模式雖然實現簡單,但在 LLM 應用中,可能導致用戶長時間等待,特別是當任務涉及多輪推理時。
Request-Response | SSE | |
---|---|---|
後端 | 整段回傳 | Token-by-token 產生 |
UI 呈現 | 一次全部出現在畫面 | 分段逐漸呈現出現 |
體感 | 緩慢且生硬 | 快速且富有互動性 |
最常見的互動型態:前端發出一次 HTTP 請求,後端完成計算後 一次性回傳 結果。實作簡單、路徑清晰,但在長耗時任務上容易出現毫無頭緒的空等。
OpenAI 和 Google 等主流 LLM 服務提供商廣泛採用 Streaming 模式,因為它將等待時間轉化為觀察模型生成內容的過程。透過邊生成邊傳輸,回應延遲可以顯著降低,從而改善用戶體驗。
雖然同步 Streaming 模式能提升用戶體驗,但在長連線情境下,它也對基礎設施的穩定性提出了挑戰。
當同步模式因長任務而導致客戶端阻塞時,非同步設計提供了解耦方案,使系統更具彈性與可擴展性。
Short/Long Polling 不建立長連線,而是以週期性請求向後端拉取最新進度或增量結果。它在不像維持 SSE/WS 長連線的環境中,提供一種簡化且相容性高的「邊做邊看」替代方案。
POST /jobs
取得 jobId
→ 以固定/動態間隔輪詢 GET /jobs/{id}
;可帶 since=cursor
分段拉取已完成部分,模擬 Streaming。Retry-After
)、避免同時喚醒以防「驟發群聚」。Idempotency-Key
去重;提供 state
/progress
/cursor
;結果可快取並設定保留期(完成後一段時間 200
,逾期回 410 Gone
)。在 LLM 互動裡,同步 Streaming追求即時回饋與互動感,非同步則以穩定性、可擴展與成本控制為主。兩者不是對立,而是針對網路環境、任務時長、流量型態與體驗目標的取捨;必要時可混用。
實際選型應以 A/B 或金絲雀部署的實測為準,對比 first-token、整體完成時間、P95/P99 延遲、中斷/重連率、客訴/放棄率 與 每請求成本 等關鍵指標。整體而言,非同步設計能帶來服務解耦與更高彈性,是為面對長連線不穩定與流量峰值波動時的穩健基礎。
客戶端的互動模式選擇,會直接影響後端系統的設計以及需要應對的可靠性挑戰:
同步 Streaming(SSE/WS)依賴長連線。一旦客戶端選擇了這條路,整體系統的可靠性、擴縮與部署節奏都會跟著改變;設計要同時兼顧「能不中斷」與「斷了能順利續上」。
SSE 是目前 LLM Streaming 的主流技術,因其簡單、基於 HTTP 且支援自動重連。然而,它對長連線的依賴在擴展時帶來了挑戰。Streamable HTTP 作為一種演進方案,特別是在 MCP(Model Context Protocol)中被採用。自 2025-03-26 版本起,MCP 從 SSE 轉向 Streamable HTTP,以解決串流恢復、長連線負載和單向通訊的限制。
技術 | 核心描述 | 優點 | 缺點 | 與 Streamable HTTP 的關係 |
---|---|---|---|---|
Streamable HTTP | MCP 採用的新標準,在 POST 回應中實現串流,結合了 HTTP 和 SSE 的特性。 | 無需長連線、支援雙向互動、資源消耗低;針對 AI 應用優化,易於擴展。 | 較新,需要等待框架和工具鏈的支援;需遵循 MCP 實現。 | SSE 的進階版,解決了擴展性問題,提供更大靈活性。 |
SSE | 基於 HTTP 的單向事件推送,依賴長連線。 | 實現簡單、內建重連機制;前端整合方便。 | 單向通訊、長連線對伺服器負載高;斷線後需自訂邏輯來恢復數據。 | 適合純粹的輸出串流,但 Streamable HTTP 避免了長連線的缺點。 |
WebSocket | 基於 TCP 的全雙工通訊協議。 | 低延遲、真正的雙向通訊;適合複雜的互動場景。 | 實現複雜、資源消耗較高;可能被防火牆阻擋。 | Streamable HTTP 更輕量,且與 HTTP 生態兼容性更好。 |
傳統 HTTP Streaming | 使用 Chunked 編碼傳輸串流,是 SSE 的前身。 | 兼容性高,無需額外協議;適合簡單的數據流。 | 缺乏事件結構,重連機制較弱。 | Streamable HTTP 是其演進版本,增加了 MCP 的結構化數據,更適合 AI 應用。 |
儘管 SSE 在 2025 年仍然是主流選擇,但 Streamable HTTP 代表了未來的發展方向,尤其適用於需要更高穩定性和效率的 Agent 系統。
LLM 的互動模式設計需要在多個維度進行權衡:同步模式提供即時性,非同步模式提供擴展性;Streaming 改善了用戶體驗,但長連線也帶來了架構上的挑戰。從 SSE 到 Streamable HTTP 的技術演進,反映了業界對更高效、更穩定解決方案的追求。
在實際專案中,應從評估需求、開發原型和整合可靠性模式著手。透過合理的設計,不僅能建構出高效能的系統,還能提供優質的用戶體驗。
References: