好文分享 — Streaming Chatbot with Burr, FastAPI, and React
這是 1 篇關於如何使用 FastAPI, React, SSE 技術打造 streaming chatbot 的文章。
先解釋ㄧ下何謂 streaming chatbot 。
舉個例子,當我們在使用 ChatGPT 時,會發現它的回應就像遠端有個人一直不斷輸出文字一樣,而不是一次完整回覆,這種體驗就是 streaming chatbot 。
這是因為 LLM 產生內容需要一點時間,加上使用者相當不喜歡等待的過程,所以在 chatbot 的設計上,使用 streaming 的方式,一有部分內容生成就馬上回應使用者,會比起全部產生完內容再回覆提供更好的體驗,使用者的體感會覺得 LLM 速度很快,有馬上回應(但其實還是要等它全部輸出才知道內容是什麼)。
“Streaming Chatbot with Burr, FastAPI, and React” 1 文介紹如何透過它們的開源專案 Burr 做到類似 LangGraph 狀態機的功能,並結合 FastAPI Streaming Response 功能(其實就是 SSE )做出 streaming 的 response ,最後搭配 React 實作前端 UI 。
p.s. 其實用 LangChain + LangGraph 就可以包辦 Burr, FastAPI Streaming Response, 但 LangChain 迭代很快,要注意它可能會伴隨 breaking change 的問題
整篇文章,個人覺得最重要的大概是狀態機圖的部分,很有參考價值,從圖上可以看到 1 個相對好的 chatbot 設計在處理 prompt 時,會加上安全檢查的部分,除了可以避免使用者濫下 prompt 之外,也能夠防護 prompt injection 攻擊。
ref: Streaming Chatbot with Burr, FastAPI, and React
如果你想打造 Chatbot 的話,這篇文章能夠給予你概觀的指引。