- Ortak zemin: Python bilen birinin web arayüzü kurması
- Ölçüt ölçüt Gradio ve Streamlit
- Aynı iş iki araçta: belge özetleyici demo
- Streamlit'in yeniden çalıştırma modeli neden önemli?
- Hangi durumda hangisi?
- Paylaşım ve güvenlik: demo bağlantısı kurumsal veriye açılmadan önce
- Bu araçları Mindset programlarında nerede çalışırsınız
- Resmî kaynaklardan bilgiler
- Sık sorulan sorular
Gradio ile Streamlit: Model Demosu mu, Veri Uygulaması mı?
Gradio bir Python fonksiyonunu girdi ve çıktı bileşenleriyle web arayüzüne dönüştürmeye odaklanır; Streamlit ise sayfayı yukarıdan aşağı okunan bir betik gibi kurar ve her etkileşimde betiği yeniden çalıştırır. Seçimi belirleyen, kurduğunuz şeyin bir model demosu mu yoksa çok adımlı bir veri uygulaması mı olduğudur.
Bir bakışta
- Gradio'nun çıkış noktası fonksiyondur, Streamlit'inki betiktir. Gradio'da girdi ve çıktı bileşenleri fonksiyonun argümanlarına ve dönüş değerlerine bağlanır; Streamlit'te sayfa, betiğin satır sırasıyla oluşur.
- Streamlit her etkileşimde betiğin tamamını baştan çalıştırır. Bu yüzden pahalı hesaplar önbelleğe alınmalı, kalıcı değerler oturum durumunda tutulmalıdır.
- İki araçla da sohbet arayüzü kurulur, ama yol farklıdır. Gradio hazır bir sohbet sınıfı sunar; Streamlit'te sohbet giriş ve mesaj öğeleriyle akış elle kurulur.
- Hızlı paylaşım Gradio'nun güçlü yanıdır. Gradio, yerelde çalışan bir demo için dışarıdan erişilebilen bir genel bağlantı üretebilir; bu bağlantı kurumsal veriyle kullanılmadan önce güvenlik açısından değerlendirilmelidir.
- Kalıcı iç araç ve pano için Streamlit'in betik modeli daha doğaldır. Filtreler, tablolar ve grafiklerle çok adımlı bir analiz ekranı Streamlit'te düz Python akışıyla okunur.
Ortak zemin: Python bilen birinin web arayüzü kurması
Gradio da Streamlit de aynı sorunu çözer: bir makine öğrenmesi modelini, dil modeli çağrısını ya da veri analizini HTML, CSS ve JavaScript yazmadan tarayıcıda çalışan bir arayüze dönüştürmek. Gradio kendini, makine öğrenmesi modelleri, API'ler ya da herhangi bir Python fonksiyonu için hızlıca demo ya da web uygulaması kurmayı sağlayan açık kaynak bir Python paketi olarak tanımlar. Streamlit de Python betiğini doğrudan etkileşimli bir uygulamaya çevirir.
İkisinde de geliştirici yalnız Python yazar, bileşenler (metin kutusu, kaydırıcı, dosya yükleme, tablo, grafik) hazır gelir ve uygulama yerelde tek komutla ayağa kalkar. Bu yüzden iki araç da ön yüz geliştirmeyle uğraşmak istemeyen veri bilimciler, yapay zeka mühendisleri ve analistler için prototip aşamasında doğal bir seçimdir.
Ayrıldıkları yer, arayüzü nasıl düşündükleridir. Gradio arayüzü bir fonksiyonun etrafına kurulan girdi ve çıktı kutuları olarak görür. Streamlit ise sayfayı, yukarıdan aşağı okunan ve her etkileşimde baştan çalışan bir betik olarak görür. İki araç arasındaki farkların neredeyse hepsi bu iki zihinsel modelden doğar.
Ölçüt ölçüt Gradio ve Streamlit
- Ölçüt: Temel soyutlama. Gradio: fonksiyon ve ona bağlı girdi ile çıktı bileşenleri; Interface sınıfında bileşen sayısı fonksiyonun argümanlarına ve dönüş değerlerine uymak zorundadır. / Streamlit: betiğin kendisi; her çağrı sayfaya bir öğe ekler.
- Ölçüt: Etkileşim modeli. Gradio: bir olay (düğmeye basma, değer değişimi) ilgili fonksiyonu tetikler. / Streamlit: ekranda bir şeyin güncellenmesi gerektiğinde betiğin tamamı yukarıdan aşağı yeniden çalışır; bileşene bağlı geri çağırma varsa önce o yürür.
- Ölçüt: Yerleşim kontrolü. Gradio: hızlı demo için Interface, özel yerleşim ve çok adımlı veri akışı için Blocks. / Streamlit: sütunlar, sekmeler, kenar çubuğu ve kapsayıcılarla betik sırası içinde yerleşim.
- Ölçüt: Sohbet arayüzü. Gradio: sohbet arayüzü kurmak için tasarlanmış hazır ChatInterface sınıfı. / Streamlit: sohbet girişi ve sohbet mesajı kapsayıcısı gibi öğelerle akış elle kurulur; akış hâlinde gelen metni daktilo etkisiyle yazan bir öğe de vardır.
- Ölçüt: Durum ve performans. Gradio: durum, fonksiyonlar arasında açıkça taşınır. / Streamlit: anahtar verilen her bileşen otomatik olarak oturum durumuna eklenir; pahalı hesaplar önbellek dekoratörüyle saklanmazsa her yeniden çalıştırmada tekrar yapılır.
- Ölçüt: Paylaşım ve programatik erişim. Gradio: başlatırken genel bir paylaşım bağlantısı üretilebilir, model yerel bilgisayarda çalışmaya devam eder; Python ve JavaScript istemcileriyle her Gradio uygulaması programla sorgulanabilir. / Streamlit: uygulama bir sunucuda yayımlanarak paylaşılır.
Özetle Gradio, bir modelin girdisini ve çıktısını göstermek için en kısa yolu sunar; Streamlit ise birden çok adım, filtre ve görselleştirme içeren uygulamalarda okunaklı bir akış sağlar.
Gradio fonksiyonu sarar, Streamlit betiği yeniden çalıştırır
| Gradio | Streamlit | |
|---|---|---|
| Temel soyutlama | Fonksiyon ve girdi/çıktı bileşenleri | Yukarıdan aşağı okunan betik |
| Etkileşimde ne olur | İlgili fonksiyon tetiklenir | Betiğin tamamı yeniden çalışır |
| Özel yerleşim | Blocks ile | Sütun, sekme ve kapsayıcılarla |
| Sohbet arayüzü | Hazır ChatInterface sınıfı | Sohbet öğeleriyle elle kurulur |
| Hızlı paylaşım | Genel paylaşım bağlantısı | Sunucuda yayımlama |
Aynı iş iki araçta: belge özetleyici demo
Bir ekibin, şirket içi raporları özetleyen bir dil modeli çağrısını yöneticilere göstermek istediğini düşünün. Elinde metni alıp özet döndüren bir ozetle fonksiyonu var.
Gradio'da bu fonksiyon doğrudan arayüze sarılır:
import gradio as gr demo = gr.Interface(fn=ozetle, inputs="text", outputs="text") demo.launch()
Metin kutusu fonksiyonun argümanına, çıktı kutusu dönüş değerine bağlanır. Ekip daha sonra rapor türü seçimi, örnek girdiler ve yan yana karşılaştırma isterse Blocks'a geçer.
Streamlit'te aynı iş betiğin akışı olarak yazılır:
import streamlit as st metin = st.text_area("Rapor metni") if st.button("Özetle"): st.write(ozetle(metin))
Kullanıcı düğmeye bastığında betik baştan çalışır; düğme bu çalışmada basılı görüldüğü için özet yazılır. Ekip ardından rapor listesini veritabanından çeken bir seçim kutusu, özet geçmişini gösteren bir tablo ve kenar çubuğunda filtreler eklemek isterse Streamlit'te bunlar betiğe yeni satırlar olarak girer. Burada dikkat edilecek nokta, veritabanı sorgusunun önbellek dekoratörüyle saklanması ve özet geçmişinin oturum durumunda tutulmasıdır; aksi hâlde her tıklamada sorgu yeniden çalışır ve geçmiş kaybolur.
Demo bir modelin ne yaptığını göstermekse Gradio daha az kodla sonuca varır. Ekran bir iş akışına dönüşüyorsa Streamlit'in betik düzeni okunaklılığı korur.
Streamlit'in yeniden çalıştırma modeli neden önemli?
Streamlit'te en sık yapılan hata, betiği sıradan bir Python programı gibi düşünmektir. Streamlit belgelerine göre ekranda bir şeyin güncellenmesi gerektiğinde, yani kaynak kod değiştiğinde ya da kullanıcı bir bileşenle etkileşime girdiğinde, betiğin tamamı yukarıdan aşağı yeniden çalışır. Bu, kodu basit tutar ama bedeli vardır: büyük bir modeli yüklemek, uzun bir sorgu çalıştırmak ya da bir API'yi çağırmak her etkileşimde tekrarlanabilir.
Çözüm iki araçtır. Pahalı ve aynı girdiyle aynı sonucu veren hesaplar önbellek dekoratörüyle işaretlenir; böylece yeniden çalıştırmada atlanır. Kullanıcıya özgü ve etkileşimler boyunca korunması gereken değerler (sohbet geçmişi, seçili kayıt, sayaçlar) oturum durumunda tutulur. Anahtar verilen her bileşen zaten oturum durumuna otomatik eklenir.
Gradio'da bu sorun daha az görünür, çünkü yalnız tetiklenen fonksiyon çalışır. Buna karşılık Gradio'da birden çok fonksiyon arasında durum taşımak, Blocks içinde açıkça tasarlanması gereken bir iştir.
Streamlit'te her tıklama betiği baştan çalıştırır
- Kullanıcı bileşenle etkileşirDüğmeye basar, değer değiştirir.
- Varsa geri çağırma çalışırBileşene bağlı fonksiyon betikten önce yürür.
- Betik yukarıdan aşağı çalışırTüm satırlar yeniden yürütülür.
- Önbellekteki sonuçlar kullanılırDekoratörlü pahalı hesaplar atlanır.
- Oturum durumu okunur, sayfa çizilirKalıcı değerler korunarak ekran güncellenir.
Hangi durumda hangisi?
Gradio'yu seçin: • Amaç bir modelin girdisini ve çıktısını göstermekse (görüntü sınıflandırma, metin üretimi, ses yazıya çevirme). • Sohbet arayüzlü bir dil modeli ya da yapay zeka ajanı demosu hızla kurulacaksa. • Demoyu başka bir uygulamanın programla çağırması gerekiyorsa; Gradio'nun Python ve JavaScript istemcileri bunu sağlar. • Uygulama Hugging Face Spaces'te barındırılacaksa; Gradio belgeleri Spaces'i Gradio uygulamalarını barındırmak için en popüler yer olarak anar.
Streamlit'i seçin: • Ekran birden çok adım, filtre, tablo ve grafik içeren bir iç araç ya da analiz panosuysa. • Ekipte veri analistleri betik yazarak çalışıyor ve kodun okunaklı kalması önemliyse. • Uygulama, model çıktısını iş verisiyle birleştiren ve oturum boyunca durum tutan bir akışa dönüşecekse.
İkisi birlikte de kullanılabilir: model ekibi modeli Gradio ile test eder ve bir uç nokta olarak sunar, iş birimi için kurulan Streamlit panosu bu uç noktayı çağırır. Önemli olan, prototip aracının kalıcı ürün mimarisine dönüşüp dönüşmeyeceğine baştan karar vermektir.
Paylaşım ve güvenlik: demo bağlantısı kurumsal veriye açılmadan önce
Gradio'da başlatma sırasında paylaşım seçeneği açıldığında, uygulama yerel bilgisayarda çalışmaya devam ederken dışarıdan erişilebilen bir genel bağlantı üretilir. Bu, toplantıda bir modeli göstermek için çok pratiktir; ama bağlantıyı alan herkes uygulamaya ve dolayısıyla arkasındaki modele ve veriye erişir. Kurumsal belgelerle çalışan bir demoda bu seçenek kullanılmadan önce kimlik doğrulama, erişim kaydı ve hangi verinin modele gittiği netleştirilmelidir.
Streamlit'te paylaşım, uygulamanın bir sunucuda yayımlanmasıyla olur; bu da erişim kontrolünü kurumun kendi altyapısına ya da seçtiği barındırma hizmetine bırakır. Her iki durumda da dil modeli çağrılarında kullanılan API anahtarları koda yazılmamalı, ortam değişkeni ya da gizli bilgi yönetimiyle verilmelidir.
Prototipten ürüne geçerken iki araçta da aynı sorular sorulur: kaç kullanıcı aynı anda çalışacak, uzun süren model çağrıları nasıl kuyruğa alınacak, hata durumunda kullanıcı ne görecek. Bu sorular yanıtlanmadan yayımlanan demo, iyi bir prototipken kırılgan bir ürüne dönüşebilir.
Bu araçları Mindset programlarında nerede çalışırsınız
Python ile Yapay Zeka Ajanları Geliştirme Eğitimi, tek ve çoklu ajanlı sistemler kurup araçlarla donatma, RAG ile geliştirme ve uygulama projesi aşamalarını içerir; ajanın davranışını bir arayüzle gösterip test etmek isteyen geliştiriciler için Gradio ya da Streamlit tercihi bu aşamada somutlaşır.
Generative NLP ve Açık Kaynak Büyük Dil Modelleri Uygulamaları ise açık kaynak modellerle çalışma, ince ayar ve modelleri yerelde ya da bulutta çalıştırma konularını kapsar; kendi modelini çalıştıran bir ekibin onu kullanıcıya hangi arayüzle açacağı sorusu burada gündeme gelir.
Resmî kaynaklardan bilgiler
| Gradio'nun tanımı ve temel sınıfları | Makine öğrenmesi modeli, API ya da Python fonksiyonu için demo veya web uygulaması kurmayı sağlayan açık kaynak Python paketi; Interface (demo), Blocks (özelleştirilebilir yerleşim ve veri akışı) ve ChatInterface (sohbet arayüzü) sınıflarıkaynak |
|---|---|
| Gradio paylaşım bağlantısı ve istemciler | Paylaşım seçeneğiyle genel bir bağlantı üretilir, model yerel bilgisayarda çalışmaya devam eder; Python ve JavaScript istemcileriyle Gradio uygulamaları programla sorgulanabilir; Hugging Face Spaces Gradio uygulamalarının en popüler barındırma yeri olarak anılırkaynak |
| Streamlit yürütme modeli | Ekranda bir şey güncellenmesi gerektiğinde betiğin tamamı yukarıdan aşağı yeniden çalışır; geri çağırma betikten önce çalışır; anahtar verilen her bileşen oturum durumuna eklenir; önbellek dekoratörü pahalı hesapları yeniden çalıştırmada atlatırkaynak |
| Streamlit sohbet öğeleri | Sohbet girişi, sohbet mesajı kapsayıcısı, uzun süren işler için durum kapsayıcısı ve akışı daktilo etkisiyle yazan öğekaynak |
Bilgiler resmî kaynaklarla doğrulandığı tarihte günceldir; değişiklik olabilir.
İlgili Mindset programı
Python ile Yapay Zekâ Ajanları (AI Agent) Geliştirme Eğitimi
Sık sorulan sorular
Gradio ile kurulan uygulama yalnız demo için mi uygundur?
Hayır. Gradio'nun Interface sınıfı makine öğrenmesi modelleri için demo kurmaya odaklansa da Blocks yaklaşımı özelleştirilebilir yerleşim ve veri akışıyla web uygulaması tasarlamaya izin verir. Yine de çok sayfalı, rol bazlı yetkilendirme gerektiren kurumsal bir uygulama için arayüz katmanını ayrı bir web çatısıyla kurmak çoğu zaman daha sürdürülebilir olur.
Streamlit'te sohbet geçmişi neden her mesajda kayboluyor?
Çünkü betik her etkileşimde baştan çalışır ve sıradan bir liste değişkeni her seferinde yeniden oluşturulur. Mesajlar oturum durumunda bir liste olarak tutulmalı, her çalıştırmada bu listedeki mesajlar sohbet mesajı kapsayıcısıyla yeniden çizilmeli, yeni mesaj sohbet girişinden alınıp listeye eklenmelidir. Dil modelinden akış hâlinde gelen yanıt için akışı daktilo etkisiyle yazan öğe kullanılabilir.
Gradio uygulamasını başka bir sistemden programla çağırabilir miyim?
Evet. Gradio'nun Python istemcisi ve JavaScript istemcisi, çalışan herhangi bir Gradio uygulamasını programla sorgulamayı sağlar. Arayüz tanımlanırken uç noktaya bir ad verilerek çağrı daha okunaklı hâle getirilebilir. Bu özellik, model ekibinin Gradio ile yayımladığı bir demoyu iş biriminin otomasyonlarına ya da başka bir uygulamaya bağlamayı kolaylaştırır; erişim yetkisi yine ayrıca düşünülmelidir.
Hangisini öğrenmek daha kolaydır?
İkisi de temel Python bilen biri için kısa sürede kullanılabilir. Tek fonksiyonluk bir demo için Gradio genellikle daha az satırla sonuç verir. Streamlit'in betik mantığı başta daha doğal gelir, ama yeniden çalıştırma modeli, önbellek ve oturum durumu anlaşılmadan büyüyen uygulamalar yavaşlar ve beklenmedik davranır. Hangisi seçilirse seçilsin, olay ve durum yönetimini erkenden öğrenmek sonraki sorunları azaltır.