Gradio 框架概述:超越 UI 函式庫的能力
Gradio 框架概述:超越 UI 函式庫的能力
Hugging Face 詳細說明 Gradio 如何演變成一個提供通用 API 存取、伺服器端渲染以及專門的機器學習資源管理的完整 AI 專注框架。
Gradio 框架概述:超越 UI 函式庫的能力
Gradio 是一個完整的框架,可透過使用者介面與 API 與機器學習模型互動,提供效能、安全性與回應性的內建保證。它不僅是簡單的 UI 函式庫,還自動化基礎建設問題,如 API 端點產生、資源排隊與生產等級的安全性,讓機器學習從業者僅使用 Python 即可構建全功能的應用程式。
通用 API 與開發工具
每個 Gradio 應用程式會自動作為 API 運作,免除分別實作 UI 與後端的需求。
- 通用 API 存取:Gradio 會自動為應用程式中定義的每個事件產生 REST API 端點,並附帶自動生成的文件。官方 SDK 可在 Python(
gradio_client)和 JavaScript(@gradio/client)中取得,亦支援 cURL。 - 互動式 API 記錄器:於 4.26 版引入,此工具允許開發者捕捉即時 UI 互動,並自動產生相應的 Python 或 JavaScript API 呼叫。
- AI 輔助開發:框架內建「熱重載」功能,可在編碼時即時更新 UI,提供 AI Playground 以自然語言驅動的應用程式生成,並有
gr.load()函式可透過 Hugging Face 或相容 OpenAI 的 API 端點快速原型設計。
效能與即時執行
Gradio 結合多項架構特性,以因應機器學習模型的高計算需求與低延遲使用者體驗的需求。
- 伺服器端渲染(SSR):於 Gradio 5.0 引入,SSR 在伺服器上預先渲染 UI,以縮短首次頁面載入時間、消除載入指示器,並提升 SEO。
- 自動佇列管理:內建佇列系統負責管理 GPU 密集運算與大量流量。它支援併發限制、透過
concurrency_id共享佇列,以及透過 Server-Side Events 提供即時狀態更新。 - 高效能串流:Gradio 支援使用 Python 生成器(
yield)進行逐字元文字生成與影像更新。對於即時音訊與影片,則透過 FastRTC 整合 WebRTC/WebSocket API。 - 客戶端執行(Groovy):Gradio 5 引入「Groovy」庫,可將 Python 函式轉譯為 JavaScript。這使得簡單的 UI 更新能直接在瀏覽器中執行(
js=True),降低伺服器負載與延遲。
應用程式架構與部署
此框架提供工具,讓使用者能在不更改程式碼的情況下,從本機原型轉移至可投入生產的應用程式。
- 多頁面支援:Gradio 支援原生多頁面應用程式,具備自動 URL 路由與導覽列產生,且可在頁面間共享後端資源(如佇列)。
- Gradio Lite:透過使用 Pyodide(WebAssembly),Gradio Lite 可在瀏覽器內執行。這允許在靜態託管服務(例如 GitHub Pages)上進行無伺服器部署,並支援透過 Transformers.js 與 ONNX 的客戶端推論。
- PWA 支援:Gradio 應用程式可部署為漸進式網路應用(PWA),使其可在行動與桌面裝置上安裝,且不需額外設定。
- 輕鬆分享:
demo.launch(share=True)指令會透過 Fast Reverse Proxy(FRP)建立安全的 TLS 隧道,提供一個為期一週的公開*.gradio.liveURL,無需雲端部署。
使用者介面與體驗
Gradio 提供針對 AI 工作流程量身打造的專屬元件與設計工具。
- 動態介面:
@gr.render()裝飾器允許開發者根據使用者互動或模型狀態動態加入元件與事件監聽器。 - Gradio Sketch:一個所見即所得的無程式碼編輯器,讓使用者以視覺方式設計版面與定義事件,並自動產生相應的 Python 程式碼。
- ML 專屬元件:此函式庫包含專門的 UI 元件,如用於分割的
ImageEditor、AnnotatedImage,用於變換的ImageSlider,以及支援推理 LLM 與巢狀代理的增強聊天介面。 - 增強版資料框:更新後的資料框元件支援多儲存格選取、欄位釘選,以及搜尋/篩選功能,方便探索大型資料集。
- 深層連結:
gr.DeepLinkButton讓使用者捕捉並分享應用程式的精確狀態,包含特定模型輸出。
企業安全與生產就緒
為支援企業部署,Gradio 已實施嚴格的安全標準。
- 安全稽核:此框架已接受 Trail of Bits 的第三方稽核。
- 強化控制:Gradio 現已透過環境變數提供可設定的安全設定,例如
GRADIO_ALLOWED_PATHS用於控制檔案路徑存取,GRADIO_SSR_MODE用於管理伺服器端渲染。