跳至主要內容
ESC
Study Jam:GenAI 開發者實戰 — 第 20/29 篇

Gemini + Streamlit 開發 GenAI App

Gemini + Streamlit 開發 GenAI App

課程概述

Streamlit 很適合讓 Python 開發者快速做出可操作的介面,再接上 Gemini 驗證一個點子值不值得繼續。不過原型跑得動,和多人使用、資料不外洩、失敗能復原是兩回事。這堂課會帶你完成原型,也會一起判斷它什麼時候能繼續用 Streamlit,什麼時候該把核心邏輯拆出去。

Streamlit Gemini App 從原型到 Cloud Run:Python Widgets、上傳、Chat、視覺化和 Session State 由伺服器端 SDK 呼叫模型,本機快速迭代後建成容器,透過受驗證、自動擴縮服務搭配 Secrets、日誌與監控上線

Streamlit 能快速證明想法,但原型的 Session State、金鑰和單機錯誤處理不足以直接生產。容器化上 Cloud Run 後,還要補多使用者隔離、持久化、安全、限流、快取、成本與 CI/CD,才算跨過就緒門檻。

你將學到

  • 使用 Streamlit 建構 GenAI 應用的互動介面
  • 整合 Gemini API 進行文字生成、多模態問答與對話
  • 實作對話記憶與 Session State 管理
  • 將 Streamlit 應用容器化並部署到 Cloud Run
  • 理解原型與生產應用之間的架構差異

核心概念

Streamlit 的優勢與適用場景

Streamlit 讓你用 Python 腳本建立 Web 介面:st.text_input() 做輸入框、st.write() 顯示內容、st.chat_message() 組對話畫面。它省掉不少前端樣板,很適合內部工具、PoC、資料探索與 AI Demo;但需要高度客製互動、複雜前端狀態或大量即時使用者時,就要提早評估是否仍符合需求。

Gemini 與 Streamlit 的整合

整合 Gemini 時,先用新版 google-genai SDK 建立 Client,再呼叫 client.models.generate_content(...) 或 Chat/Streaming 方法。舊版 google-generativeai 範例不適合直接拿來開新專案,遷移方式可參考官方 SDK 指南。對話歷史可先放在 st.session_state,但不要每次無上限地送出全部內容;應設定 Token 預算,保留近期訊息並摘要較舊對話。

Session State 管理

Streamlit 的執行模型是互動後重新執行腳本,因此跨互動狀態通常放在 st.session_state。對話應用至少會有訊息、模型設定和載入/錯誤狀態。Session State 跟著使用者連線,不是可靠的永久資料庫;連線重建、服務換版或工作階段結束後,不應假設內容還在。需要跨裝置歷史、稽核或復原時,應另存到有使用者隔離與保存政策的資料庫。

從原型到生產的差距

Streamlit 可以正式部署,但要依情境補齊能力。它已支援 st.login()st.userst.logout() 串接 OIDC,解決的是「使用者是誰」;角色、資料範圍與操作權限仍要由應用自行判斷,詳見官方認證文件。若只是少量內部使用者、互動也單純,Streamlit 搭配 Cloud Run、Secret Manager、資料庫與監控可以繼續用。若面向大量外部流量、需要多前端共用 API、複雜授權或高度客製體驗,再把模型與商業邏輯抽成獨立服務,不必一驗證成功就整套重寫。

Streamlit 不只適合 Demo,也不是所有產品都該永遠留在 Streamlit。先看使用者規模、授權、共用 API 與介面複雜度,再決定強化既有 App 或拆出正式後端。

實作重點

  • 建立一個 Streamlit 聊天應用,整合 Gemini API 實現多輪對話
  • 加入側邊欄控制面板:Temperature 滑桿、模型選擇、System Instruction 輸入
  • 實作檔案上傳功能,讓使用者上傳圖片後用 Gemini 的多模態能力分析
  • 撰寫 Dockerfile 部署到 Cloud Run,讓服務監聽平台指定連接埠,並以 Secret Manager 或服務身分提供憑證
  • 加入基本的使用者回饋機制(如按讚/按倒讚按鈕)收集回應品質資料

Lab 導讀

Lab 連結Develop GenAI Apps with Gemini and Streamlit — Google Cloud Skills Boost

這個 Lab 會從零做出 Streamlit+Gemini 應用,再部署到 Cloud Run。基本功能完成後,可以刻意測試重新整理、兩個瀏覽器工作階段、模型逾時和上傳錯誤,確認狀態沒有串到別人、錯誤也不會讓整個 App 卡死。這些測試比再多加一個 Demo 按鈕更接近真正上線會遇到的事。

延伸學習

Study Jam:GenAI 開發者實戰 — 20/29 完成 查看系列全覽 →

留言討論

徽章解鎖!