Gradio 不僅僅是又一個 UI 庫的 17 個理由
引言
“哦,Gradio?那是一個用來構建使用者介面的 Python 庫,對吧?”
我們經常聽到這樣的話。雖然 Gradio 確實能讓你用最少的 Python 程式碼建立互動式使用者介面,但將 Gradio 稱為“UI 庫”卻忽略了其更宏大的願景!Gradio 不僅僅是一個 UI 庫——它是一個透過 UI 和 API 與機器學習模型互動的框架,為效能、安全性和響應性提供了強有力的保障。
在本文中,我們將介紹 Gradio 的獨特功能,並解釋它們對於構建強大的人工智慧應用為何至關重要。我們會分享 Gradio 官方文件和釋出說明的連結,如果你好奇的話可以進一步探索。

1. 通用 API 訪問
所有的 Gradio 應用也都是 API!當你構建一個 Gradio 應用時,你也可以使用 Gradio 強大的客戶端庫,以程式設計方式訪問這些 Gradio 應用。我們提供:
- Python (gradio_client) 和 JavaScript (@gradio/client) 的官方 SDK,並支援 cURL API 訪問。
- 為你在 Gradio 應用中定義的每個事件自動生成 REST API 端點。
- 自動生成的 API 文件,可透過“檢視 API”連結訪問。
- 具有高階功能的客戶端庫,如檔案處理、Hugging Face Space 複製等。
延伸閱讀: 探索客戶端庫,使用 Curl 查詢 Gradio 應用
Gradio 的獨特之處:
- 大多數其他 Python 框架缺乏官方的 API 訪問機制。
- 傳統的 Web 框架需要為 UI 和 API 端點分別實現,而 Gradio 僅透過一次實現就自動生成兩者,幷包含文件。
2. 用於開發的互動式 API 記錄器
Gradio 在 4.26 版本中引入了“API 記錄器”。這個強大的開發工具讓開發者可以即時捕獲他們的 UI 互動,並自動生成相應的 Python 或 JavaScript API 呼叫。
- “API 記錄器”可以在上面討論的“檢視 API”頁面找到。
- 它透過你自己的真實示例,幫助你記錄 Gradio 應用的 API 使用方法。
延伸閱讀: 探索 API 記錄器
Gradio 的獨特之處
- 在大多數其他 Python 和 Web 框架中,你無法如此輕鬆地將 UI 互動指令碼化。這是 Gradio 在 ML 工具領域獨有的能力。
- API 記錄器與 Gradio Client 庫的結合,使得從 UI 探索到使用 API 端點進行開發的過渡變得非常順暢。
3. 透過伺服器端渲染快速構建機器學習應用
Gradio 5.0 引入了伺服器端渲染 (SSR),改變了機器學習應用的載入和執行方式。傳統的 UI 框架依賴於客戶端渲染,而 Gradio 的 SSR:
- 消除了載入圈,顯著減少了初始頁面載入時間。
- 在伺服器上預渲染 UI,使使用者能夠立即進行互動。
- 提高了已釋出應用的 SEO。
- 為 Hugging Face Spaces 部署自動啟用,同時對本地開發保持可配置。
延伸閱讀: 瞭解更多關於 Gradio 5 的 SSR
Gradio 的獨特之處
- 傳統的 Python UI 框架僅限於客戶端渲染,而在 JS Web 框架中實現 SSR 需要大量的全棧開發專業知識。
- Gradio 提供了 Web 框架級別的效能,同時保持了純 Python 的開發體驗(注意:除了需要安裝 Node!)。
4. 針對機器學習任務的自動佇列管理
Gradio 提供了一個為機器學習應用量身定製的複雜排隊系統,可以處理 GPU 密集型計算和高流量使用者訪問。
- Gradio 的佇列會自動處理你應用中定義的各種任務,無論是執行在 GPU 上的長時間預測、音影片流,還是非機器學習任務。
- 你的應用可以擴充套件到數千個併發使用者,而不會出現資源爭用和系統過載。
- 透過伺服器傳送事件 (Server-Side Events) 即時更新佇列狀態,向用戶顯示他們在佇列中的當前位置。
- 你可以配置併發限制以並行處理請求。
- 你甚至可以使用
concurrency_id
讓不同的事件透過共享佇列池共享資源。
Gradio 的獨特之處
- 大多數其他 Python 框架在執行併發會話時不提供資源管理。如果你使用流行的 Web 框架,你可能需要自己手動實現排隊系統。
- Gradio 的內建佇列管理系統無需外部排程器,讓你能夠構建 GPU 密集型或病毒式傳播的機器學習應用。
5. 針對即時機器學習輸出的高效能流式處理
Gradio 的流式處理功能為現代機器學習應用提供了至關重要的即時、低延遲更新。該框架提供:
- 簡單的開發者體驗:Gradio 透過使用
yield
語句的簡單 Python 生成器提供流式處理。 - 這支援逐個 token 的文字生成流、逐步驟的影像生成更新,甚至透過 HTTP Live Streaming (HLS) 協議實現平滑的音影片流。
- 透過 FastRTC 實現的 WebRTC/WebSocket API,用於即時應用。
延伸閱讀: 實現指南,瞭解更多關於 Gradio 5 的流式處理改進
Gradio 的獨特之處
- 其他 Python 框架需要手動進行執行緒管理和輪詢以實現流式更新。Web 框架同樣需要自定義 WebSocket 或 WebRTC 實現來支援即時流。
- 你可以使用 FastRTC 和 Gradio 完全在 Python 中建立即時音影片流應用。
6. 整合的多頁面應用支援
Gradio 透過其原生的多頁面支援,已經超越了單頁面應用,使開發者能夠構建全面的 AI/ML 應用。
- 你可以在單個應用上下文中擁有多個頁面。
- Gradio 提供自動的 URL 路由和導航欄生成。
- 後端資源,如佇列,在頁面間共享。
- 開發者可以將程式碼拆分到多個檔案中,同時保持單一的應用上下文。這有利於檔案的可維護性和測試。
Gradio 的獨特之處
- 其他 Python 框架需要為每個頁面編寫單獨的指令碼,限制了頁面間的狀態共享。流行的 Web 框架也需要顯式設定路由。
- Gradio 使用簡單的 Python 宣告即可提供自動路由和導航欄!這一特性將 Gradio 從一個演示平臺轉變為一個強大的 Web 框架,用於構建功能齊全的機器學習應用。
7. 使用 Groovy 執行新的客戶端函式
Gradio 5 引入了一個名為 Groovy 的自動 Python-to-JavaScript 轉譯庫。這使得 UI 能夠即時響應,無需伺服器往返。
- Python 函式可以使用
js=True
標誌直接在瀏覽器內進行簡單的 UI 更新。 - 主要用於各種元件屬性的即時更新。
- 這消除了簡單 UI 互動的延遲。
- 減少了基本介面更新的伺服器負載。對於流量大的託管應用或在高延遲連線下使用應用時尤其有用。
- 使開發者無需 JavaScript 專業知識即可編寫高響應性應用。
延伸閱讀: 瞭解客戶端函式
Gradio 的獨特之處
- 大多數其他 Python 框架的所有 UI 更新都需要伺服器往返。流行的 Web 框架則為客戶端邏輯實現單獨的 JavaScript 程式碼庫。
- Gradio 自動將 Python 轉譯為 JavaScript,提供了單一語言的開發體驗,同時實現了 Web 原生的效能——這是其他框架所不具備的組合。
8. 全面的主題系統和現代 UI 元件
Gradio 提供了一個複雜的主題系統,可以將你的機器學習應用轉變為精緻、專業的介面。
- Gradio 擁有現成的主題預設,如 Monochrome、Soft、Ocean、Glass 等。這些主題也內建了暗黑模式支援。
- 所有 Gradio 主題都是自動移動端響應的,並且我們確保你的 Gradio 應用對使用螢幕閱讀器的人士是自動無障礙的。
- Gradio 元件帶有針對機器學習的 UI 選項,例如,我們為聊天介面提供撤銷/重試/點贊按鈕,為分割/遮罩用例提供 ImageEditor 和 AnnotatedImage 元件,為影像到影像轉換提供 ImageSlider 等。
- Gradio 最近在我們的聊天介面中引入了增強的 UI 功能,用於支援推理型大語言模型、智慧體、多步智慧體、巢狀思考和巢狀智慧體,將 AI 智慧體提升為聊天 UI 中的一等公民。
延伸閱讀: 探索 Gradio 主題,檢視 UI 更新,為智慧體構建 UI
Gradio 的獨特之處
- 其他 Python 框架在沒有全面主題系統的情況下,只提供非常有限的顏色定製。在所有流行的 Web 框架中,你都必須手動實現主題管理和 CSS。
- 有了 Gradio,機器學習從業者可以建立專業外觀的應用,而無需 Web 設計專業知識,同時在需要時仍能靈活地實現自定義品牌。
9. Gradio 的動態介面
隨著 @gr.render()
裝飾器的引入,你在 Gradio 應用中定義的元件和事件監聽器不再是固定的——你可以根據使用者互動和狀態動態新增新的元件和監聽器。
- 你現在可以根據模型輸出或你的工作流程即時渲染 UI 修改。
- 請注意,Gradio 還提供了一個
.render()
方法,它與裝飾器不同。它允許在另一個 Block 中渲染任何 Gradio Block。
Gradio 的獨特之處
- 其他 Python 框架的動態 UI 功能非常有限。Web 框架則需要 JavaScript 來實現任何形式的介面更新。
- Gradio 允許動態 UI 操作。開發者可以使用簡單的 Python 建立複雜且響應迅速的介面。
10. 使用 Gradio Sketch 進行視覺化介面開發
Gradio Sketch 引入了一個視覺化開發環境,為你帶來了無程式碼的機器學習應用設計介面。它基本上是一個所見即所得 (WYSIWYG) 編輯器,幫助你使用 Gradio 元件構建介面佈局,定義事件,併為這些事件附加函式。
- 你可以選擇並新增元件到你的介面,同時即時預覽介面的變化。
- 你甚至可以視覺化地為元件新增事件監聽器。整個應用程式碼會根據你的視覺化介面設計自動生成。
- Gradio Sketch 包含一個程式碼生成器功能,可以為你的推理函式建立程式碼。
- 此外,使用者可以迭代多個提示以獲得他們想要的確切程式碼。
延伸閱讀: 探索 Gradio Sketch
Gradio 的獨特之處
- 所有其他 Python 框架都需要你編寫程式碼來構建佈局。
- Gradio Sketch 降低了非編碼人員的學習曲線。它顯著加速了所有人的應用開發過程,從而有助於 AI 的民主化。
11. 漸進式 Web 應用 (PWA) 支援
Gradio 提供漸進式 Web 應用 (PWA) 功能。PWA 是常規的網頁或網站,但可以向用戶顯示為可安裝的、平臺特定的應用程式。
- 你可以建立適用於移動和桌面端的機器學習應用,而無需提供額外的配置。
延伸閱讀: 瞭解 PWA 支援
Gradio 的獨特之處
- 大多數其他 Python 框架缺乏原生的 PWA 支援。在大多數流行的 Web 框架中,你必須手動配置 PWA。
- Gradio 的這一功能使機器學習應用更易於訪問,擁有更廣泛的使用者。你可以立即建立一個帶有你所選圖示的移動應用,而無需額外的開發工作。
12. 使用 Gradio Lite 在瀏覽器內執行
Gradio Lite 透過 Pyodide (WebAssembly) 實現瀏覽器端執行。你可以使用客戶端模型推理服務(如 Transformers.js 和 ONNX)來構建機器學習演示。
- 增強的隱私性(所有資料都保留在使用者的瀏覽器中)
- 部署零伺服器成本!
- 可離線執行的模型推理
延伸閱讀: 探索 Gradio Lite,瞭解 Transformers.js 整合
Gradio 的獨特之處
- 大多數其他 Python 框架需要持續的伺服器執行。同時,流行的 Web 框架需要為後端實現單獨的 JavaScript 程式碼。
- 有一些靜態網站平臺不需要伺服器後端,但它們提供的互動性非常有限或基礎。
- Gradio 實現了 Python 機器學習應用的無伺服器部署。有了 Gradio Lite,即使是靜態檔案託管服務(如 GitHub Pages)也可以託管完整的機器學習應用。Gradio Lite 使 Gradio 在裝置上或邊緣機器學習應用的交付中獨樹一幟。
13. 透過 AI 輔助工具加速開發
Gradio 引入了創新功能,極大地加速了機器學習應用的開發週期。
- Gradio 提供了熱過載功能,可在開發過程中即時更新你的 Gradio UI 中的程式碼。
- 我們還提供 AI Playground,用於自然語言驅動的應用生成。
- 你可以透過與 HuggingFace 和 推理服務提供商的整合,用一行程式碼快速構建應用原型。這對於任何與 OpenAI 相容的 API 端點也同樣適用。你只需使用 gr.load() 即可完成所有這些操作。
延伸閱讀: 瞭解 Gradio 5 的最新創新,使用 Huggingface 進行原型設計
Gradio 的獨特之處
- 大多數其他 Python 框架在開發應用時需要手動重新整理以更新程式碼。大多數 Web 框架也是如此——你需要複雜的構建管道和開發伺服器。
- 藉助 AI Playground,Gradio 提供了即時 UI 反饋和 AI 輔助開發。這種對快速開發和 AI 輔助工具的關注,使研究人員和開發人員能夠快速建立和修改機器學習應用。
14. 無憂的應用分享
一旦你的 Gradio 應用準備就緒,你就可以分享它,而無需擔心部署或託管的複雜性。
- 你只需設定一個引數即可立即生成一個公共 URL:
demo.launch(share=True)
。應用可以在一個唯一的xxxxx.gradio.live
格式的域名上訪問,同時你的程式碼和模型仍在你的本地環境中執行。 - 這些分享連結在 Gradio 的官方分享伺服器上有 168 小時(1 周)的超時限制。
- 你只需設定一個引數即可立即生成一個公共 URL:
demo.launch(share=True)
。應用可在*.gradio.live
域名上訪問 1 周。 - 分享連結透過 Gradio 的分享伺服器,使用快速反向代理 (FRP),為你本地執行的應用建立一條安全的 TLS 隧道。
- 對於企業部署或需要自定義域名或額外安全措施的情況,你可以託管自己的 FRP 伺服器以避免 1 周的超時限制。
延伸閱讀: 瞭解快速分享,分享連結和分享伺服器
Gradio 的獨特之處
- 其他 Python 框架需要雲部署和大量配置才能與公眾分享你的應用。對於一個 Web 框架,你需要手動的伺服器設定和託管。
- Gradio 提供了從你的本地開發環境即時分享的功能,無需建立任何部署管道、配置託管伺服器或進行任何埠轉發。這為社群提供了即時的協作或演示能力。
- 任何時候都有超過 5000 個 Gradio 應用透過分享連結進行分享,這種方法非常適合快速原型設計和收集對你的機器學習應用的即時反饋。
15. 企業級安全和生產就緒
Gradio 已從一個原型工具發展成為一個具有全面安全措施的生產就緒框架。我們最近的增強功能包括:
- 來自 Trail of Bits 的第三方安全審計和對 Gradio 構建應用的漏洞評估。
- 根據我們安全審計員的反饋,我們加固了檔案處理和上傳控制。我們現在透過直觀的環境變數提供可配置的安全設定。例如,你可以透過 GRADIO_ALLOWED_PATHS 控制檔案路徑訪問,透過 GRADIO_SSR_MODE 控制伺服器端渲染。
Gradio 的獨特之處
- 大多數其他 Python 框架通常更關注開發場景而非生產安全。你典型的 Web 框架提供通用安全,但沒有針對機器學習的特定考慮。
- 使用 Gradio,你可以獲得針對機器學習部署場景的專門安全保護,受保護的檔案上傳處理,以及經過淨化的模型輸入/輸出處理。
- 這些生產級別的改進使得 Gradio 適用於企業機器學習部署,同時保持了其快速開發的簡便性。Gradio 框架現在提供了強大的安全預設設定,同時為特定的部署需求提供了精細的控制。
16. 增強的資料框元件
Gradio 更新後的資料框元件透過實用的改進,解決了機器學習應用中常見的資料視覺化需求:
- 多單元格選擇
- 行號和列固定,用於瀏覽大型資料集
- 用於資料探索的搜尋和篩選功能
- 靜態(不可編輯)列
- 透過更好的鍵盤導航提高可訪問性
延伸閱讀: 介紹 Gradio 的新資料框!
Gradio 的獨特之處
- 其他框架通常需要 JavaScript 庫來實現類似的功能。
- Gradio 在實現這些功能的同時,保持了簡單的 Python API。
- 這些改進支援實際的機器學習工作流程,如資料探索和互動式儀表板。
17. 用於分享應用狀態的深度連結
Gradio 的深度連結功能允許使用者捕獲並分享應用的確切狀態。
- 與他人分享你獨特的模型輸出。
- 在特定時間點建立你應用的快照。
- 透過單個
gr.DeepLinkButton
元件實現。 - 適用於任何公共 Gradio 應用(託管的或使用
share=True
的)。
延伸閱讀: 使用深度連結
Gradio 的獨特之處
- 大多數框架需要自定義狀態管理程式碼來實現類似功能。
- 深度連結自動適用於所有 Gradio 元件。
- 無需額外的實現工作即可分享生成的輸出!
結論
Gradio 已經從一個演示工具演變為一個以 AI 為中心的框架,讓開發者可以在 Python 中構建完整的 Web 應用,而無需 Web 開發專業知識。
Gradio 4 和 5 中的創新,例如 Python 到 JavaScript 的轉譯、用於資源密集型模型的內建排隊、使用 FastRTC 的即時音影片流以及伺服器端渲染,提供了在其他框架中需要大量實現工作才能實現的功能。
透過處理 API 端點生成、安全漏洞和佇列管理等基礎設施問題,Gradio 使機器學習從業者能夠專注於模型開發,同時仍能提供精美的使用者介面。Gradio 框架透過同一套 Python 程式碼庫支援快速原型設計和生產部署場景。
我們邀請您在下一個機器學習專案中嘗試 Gradio,親身體驗為什麼它遠不止是又一個 UI 庫。無論您是研究員、開發者還是機器學習愛好者,Gradio 都為每個人提供了工具。