好文分享 — 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 攻擊。

prompt-state-machine.png

ref: Streaming Chatbot with Burr, FastAPI, and React

如果你想打造 Chatbot 的話,這篇文章能夠給予你概觀的指引。

Streaming Chatbot with Burr, FastAPI, and React

Facebook Threads X

對抗久坐職業傷害

研究指出每天增加 2 小時坐著的時間,會增加大腸癌、心臟疾病、肺癌的風險,也造成肩頸、腰背疼痛等常見問題。

然而對抗這些問題,卻只需要工作時定期休息跟伸展身體即可!

你想輕鬆改變現狀嗎?試試看我們的 PomodoRoll 番茄鐘吧! PomodoRoll 番茄鐘會根據你所設定的專注時間,定期建議你 1 項辦公族適用的伸展運動,幫助你打敗久坐所帶來的傷害!

贊助我們的創作

看完這篇文章了嗎? 休息一下,喝杯咖啡吧!

如果你覺得 MyApollo 有讓你獲得實用的資訊,希望能看到更多的技術分享,邀請你贊助我們一杯咖啡,讓我們有更多的動力與精力繼續提供高品質的文章,感謝你的支持!