建立與啟動 SSE Server
本教學將帶你快速上手 LLMBrick 的 SSE (Server-Sent Events) Server,並說明如何自訂請求處理邏輯。你將學會如何設定伺服器、撰寫 handler、啟動服務,以及如何進行本地測試。適合初學者與進階開發者。
1. 前置準備
- 已安裝 Python 3.8 以上版本
- 已安裝
llmbrick
套件 - 建議使用虛擬環境管理依賴
pip install llmbrick
2. SSE Server 範例程式碼
以下為一個最小可執行的 SSE Server 範例,檔案路徑:examples/simple_sse_server/server.py
。
from llmbrick.servers.sse.server import SSEServer
from llmbrick.servers.sse.config import SSEServerConfig
from llmbrick.protocols.models.http.conversation import ConversationSSEResponse
# 進階設定
config = SSEServerConfig(
host="127.0.0.1",
port=9000,
debug_mode=True,
allowed_models=["gpt-4o", "claude-3"],
max_message_length=5000,
enable_request_logging=True
)
# 啟用測試網頁
server = SSEServer(config=config, enable_test_page=True)
# 註冊 handler 處理請求
@server.handler
async def my_handler(request_data):
# 回傳訊息(可多次 yield 以支援串流)
yield ConversationSSEResponse(
id="msg-1",
type="text",
text="Hello World",
progress="IN_PROGRESS"
)
yield ConversationSSEResponse(
id="msg-2",
type="done",
progress="DONE"
)
# 啟動服務
server.run()
3. 程式碼說明
- SSEServerConfig:用於設定伺服器參數(如 host、port、允許的模型、訊息長度限制等)。
- SSEServer:建立 SSE 伺服器實例,
enable_test_page=True
會自動啟用內建測試網頁,方便本地測試。 - @server.handler:註冊一個 async handler 處理所有進入的請求。可多次
yield
回應以支援串流。 - ConversationSSEResponse:標準化 SSE 回應格式,支援 id、type、text、progress 等欄位。
- server.run():啟動伺服器,開始監聽請求。
4. 啟動 SSE Server
於終端機執行:
python examples/simple_sse_server/server.py
預設會啟動在 http://127.0.0.1:9000
。
5. 測試與驗證
-
瀏覽器測試
啟動後,於瀏覽器開啟 http://127.0.0.1:9000/
可直接發送測試請求,觀察 SSE 串流回應。
6. 進階設定與最佳實踐
- 安全性:建議設定
allowed_models
限制可用模型,避免未授權存取。 - 日誌管理:
enable_request_logging=True
可協助除錯與追蹤請求。 - 效能調校:可依需求調整
max_message_length
,避免過大訊息造成資源耗盡。
7. 常見問題
-
Q: 如何支援多次串流回應?
A: 在 handler 內多次yield ConversationSSEResponse(...)
,每次即為一個 SSE event。 -
Q: 如何自訂回應格式?
A: 請依照ConversationSSEResponse
結構填入所需欄位,支援 id/type/text/progress 等。 -
Q: 如何整合至正式服務?
A: 可將 SSEServer 整合至主應用程式,或以 Docker 部署,並依需求擴充 handler 邏輯。
8. 參考資源
本教學涵蓋了 SSE Server 的基本設定、啟動與測試流程,協助你快速上手 LLMBrick 的串流服務開發。如需進階應用,請參考其他相關教學文件。