Streamlit (Streamlit (Python Web Uygulama Çerçevesi))

Streamlit, veri bilimcilerin saf Python ile etkileşimli yapay zeka ve makine öğrenimi web uygulamaları oluşturmasını sağlayan açık kaynaklı bir çerçevedir.

Streamlit, veri bilimciler ve yapay zeka geliştiricilerin HTML, CSS veya JavaScript bilgisi olmadan Python betikleriyle etkileşimli web uygulamaları oluşturmasını sağlayan açık kaynaklı bir Python kütüphanesidir. 2018 yılında Adrien Treuille, Thiago Teixeira ve Amanda Kelly tarafından kurulan Streamlit, makine öğrenimi modellerini, veri görselleştirmelerini ve analiz araçlarını hızlı biçimde interaktif uygulamalara dönüştürmek için tasarlanmıştır. 2022 yılında Snowflake tarafından satın alınan platform, bugün Fortune 50 şirketlerinin %90'ından fazlası tarafından kullanılmaktadır. Streamlit'in temel çalışma prensibi son derece yalındır: Python betiğine Streamlit widget komutları eklenir (`st.slider()`, `st.button()`, `st.text_input()` gibi), ardından `streamlit run app.py` komutuyla uygulama başlatılır. Kullanıcı herhangi bir widget ile etkileşime girdiğinde veya geliştirici kod değişikliği kaydettiğinde, tüm betik baştan sona yeniden çalıştırılır ve arayüz otomatik olarak güncellenir. Bu reaktif model, veri bilimcilerin callback fonksiyonu veya durum yönetimi (state management) gibi yazılım mühendisliği kavramlarına hâkim olmak zorunda kalmadan uygulama geliştirmesini mümkün kılar. Yapay zeka ekosisteminde Streamlit en çok makine öğrenimi modellerinin prototiplenmesi, model performans gösterge panelleri (dashboards), veri keşif araçları ve son kullanıcıya yönelik demo uygulamaları için tercih edilmektedir. LangChain, Hugging Face, OpenAI gibi kütüphanelerle doğal entegrasyonu sayesinde büyük dil modeli (LLM) uygulamaları, görüntü sınıflandırıcılar, öneri sistemleri ve RAG pipeline'larının hızla sergilenebilir arayüzlere taşınmasını kolaylaştırmaktadır. Gradio ile birlikte, kod yazmayı bilen veri bilimciler için standart hale gelen iki ML demo aracından biridir.

play_circle Streamlit Nasıl Çalışır?

Streamlit'in çalışma prensibi üç adıma dayanır. İlk olarak, normal bir Python betiğine Streamlit widget komutları eklenir; başlık, metin, grafik, buton, kaydırıcı veya dosya yükleyici gibi bileşenler tek satır Python koduyla eklenir. İkinci adımda `streamlit run app.py` komutu terminalde çalıştırılır; Streamlit otomatik olarak yerel bir web sunucusu başlatır ve tarayıcıda uygulamayı açar. Üçüncü adımda ise reaktif çalışma modeli devreye girer: Kullanıcı bir slider'ı hareket ettirdiğinde, bir butona tıkladığında veya bir metin kutusuna yazdığında tüm Python betiği baştan sona yeniden çalıştırılır ve sonuçlar anlık olarak güncellenir. Bu yaklaşım, geleneksel web framework'lerindeki callback fonksiyonu veya olay dinleyicisi (event listener) yazma zorunluluğunu ortadan kaldırır. Geliştirme sırasında kod değişikliği kaydedildiğinde de uygulama otomatik olarak yenilenir; bu sayede iterasyon döngüsü son derece kısalır.

Temel Bileşenler ve Özellikler

bar_chart Veri Görselleştirme

Matplotlib, Plotly, Altair, Bokeh ve Vega-Lite entegrasyonuyla tek satır kodla grafik çizimi. Pandas DataFrame'leri otomatik tablo olarak render eder.

tune Etkileşimli Widget'lar

Slider, buton, metin kutusu, çok seçimli liste, dosya yükleyici, kamera girişi gibi 30'dan fazla hazır widget bileşeni.

memory Oturum Durumu (Session State)

st.session_state ile kullanıcı oturumu boyunca değişken saklanabilir; sohbet geçmişi, model sonuçları veya kullanıcı tercihleri gibi veriler korunur.

cloud_upload Streamlit Community Cloud

GitHub repo'sundaki Streamlit uygulamalarını ücretsiz olarak buluta deploy etme imkânı; URL paylaşımıyla anında erişim.

hub Yapay Zeka Projelerinde Kullanım Alanları

  • check_circle LLM Sohbet Arayüzleri: LangChain veya OpenAI API üzerine inşa edilmiş özel chatbot ve soru-cevap uygulamaları; st.chat_message() bileşeni ile akıcı sohbet arayüzü
  • check_circle Model Demo Uygulamaları: Görüntü sınıflandırma, nesne tespiti, duygu analizi modellerinin son kullanıcıya yönelik etkileşimli demosu
  • check_circle Veri Keşif ve Analiz Panelleri: Veri kümesini yükle, filtrele, görselleştir; EDA (keşifsel veri analizi) iş akışını hızlandır
  • check_circle Model Performans Gösterge Panelleri: Doğruluk, F1 skoru, kayıp eğrisi gibi metriklerin canlı takibi; model izleme (model monitoring) için hafif arayüz
  • check_circle RAG ve Arama Uygulamaları: Vektör veritabanıyla entegre belge arama, semantik sorgulama ve bilgi erişimi arayüzleri

compare_arrows Streamlit ve Alternatifleri

Streamlit'in en yakın rakipleri Gradio, Dash ve Flask'tır. Gradio, tek bir ML modeli için hızlı demo arayüzü oluşturmada Streamlit'e kıyasla daha minimal bir API sunar ve Hugging Face Spaces ile doğal entegrasyonu vardır. Ancak Streamlit, çok sayfalı uygulama, veri görselleştirme panosu ve karmaşık iş akışları için belirgin biçimde daha güçlüdür. Dash (Plotly), üretim ortamı için daha ölçeklenebilir ve yalnızca tetiklenen callback'leri yeniden çalıştıran daha verimli bir mimariye sahiptir; ancak geliştirme hızı Streamlit'in gerisinde kalır. Flask ve FastAPI ise tam kontrol sunar fakat HTML/CSS/JS gerektirdiğinden veri bilimciler için başlangıç eşiği yüksektir. Sonuç olarak Streamlit, prototipleme ile paydaş demosu için endüstri standardına yaklaşmış; Gradio ise model kartı ve Hugging Face ekosistemi için tercih edilen çerçeve konumuna gelmiştir.

quiz Sıkça Sorulan Sorular

  • check_circle Streamlit üretim ortamı için uygun mu?: Streamlit temel olarak prototipleme ve dahili araçlar için tasarlanmıştır. Her etkileşimde tüm betiğin yeniden çalışması yüksek trafikli üretim ortamlarında performans sorununa yol açabilir. Yüksek ölçekli senaryolar için Dash veya FastAPI tercih edilebilir. Ancak orta ölçekli iç kullanım araçları için Streamlit Community Cloud veya Kubernetes üzerinde deploy tamamen mümkündür.
  • check_circle Streamlit ile Flask/FastAPI farkı nedir?: Flask ve FastAPI tam kontrollü REST API ve web uygulaması geliştirme framework'leridir; HTML/CSS/JavaScript bilgisi gerektirir. Streamlit ise sadece Python bilerek birkaç satır kodla interaktif arayüz oluşturmayı sağlar. Veri bilimciler için Streamlit çok daha düşük başlangıç maliyetine sahiptir; yazılım mühendisleri için Flask/FastAPI daha esnektir.
  • check_circle Streamlit'te çok sayfalı uygulama nasıl yapılır?: Streamlit 1.10+ sürümünden itibaren yerleşik çok sayfa desteği bulunmaktadır. 'pages/' klasörüne Python dosyaları eklemek yeterlidir; her dosya otomatik olarak ayrı bir sayfa olarak tanınır ve sol kenar çubuğunda listelenir. st.navigation() API'siyle daha özelleştirilmiş navigasyon da mümkündür.
  • check_circle Streamlit'te LLM chatbot nasıl entegre edilir?: st.chat_message() ve st.chat_input() bileşenleri kullanılarak OpenAI, Anthropic, LangChain veya herhangi bir LLM API'siyle birkaç satır kodda tam fonksiyonel sohbet uygulaması oluşturulabilir. st.session_state ile konuşma geçmişi oturum boyunca korunur.