۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

مقدمه ای برای Streamlit: برنامه های داده پایتون مبتنی بر وب آسان شده است

Streamlit به شما امکان می دهد برنامه های داده پایتون مبتنی بر وب را بدون HTML، CSS یا جاوا اسکریپت بنویسید. در اینجا اولین نگاهی به Streamlit است.

Streamlit به شما امکان می دهد برنامه های داده پایتون مبتنی بر وب را بدون HTML، CSS یا جاوا اسکریپت بنویسید. در اینجا اولین نگاهی به Streamlit است.

یک مشکل رایج در برنامه های پایتون این است که چگونه آنها را با افراد دیگر به اشتراک بگذارید. توسعه دهندگان اغلب از یک رابط وب برای حل این مشکل استفاده می کنند و عملکرد برنامه را از طریق رابط کاربری ارائه می کنند. اما این راه حل زمانی بهترین کار می کند که رابط کاربری برنامه برای اجزای وب مناسب باشد. برای مثال، برنامه‌های کاوش داده می‌توانند این‌گونه کار کنند، اما برای تعامل ایده‌آل، به اجزای جلویی نیز نیاز دارند که با جاوا اسکریپت نوشته شده‌اند.

Streamlit یک کتابخانه Python است که هدف آن حل بسیاری از این مشکلات به طور همزمان است. با استفاده از Streamlit، توسعه‌دهندگان می‌توانند برنامه‌های پایتون را با قسمت‌های جلویی مبتنی بر وب ایجاد کنند که از یک کتابخانه غنی از اجزای تعاملی ساخته شده‌اند.

برنامه به دست آمده را می توان در هر جایی که یک برنامه وب پایتون زندگی می کند میزبانی کرد. بهتر از همه، توسعه‌دهنده نیازی به دانستن HTML، جاوا اسکریپت یا CSS ندارد تا به نتایج خوب برسد. آنها فقط باید کدی را در پایتون بنویسند که از متدها و کلاس های Streamlit استفاده می کند.

یک مثال ساده Streamlit

برنامه های Streamlit به سبک اعلامی نوشته می شوند. اشیاء به ترتیبی که در کد خود اعلام می کنید در صفحه وب ظاهر می شوند. هر گونه تعامل با مؤلفه ها باعث می شود برنامه دوباره از بالا به پایین اجرا شود و صفحه وب را مجدداً بارگیری کند تا تغییرات ایجاد شده را منعکس کند.

در اینجا یک مثال ساده از برنامه Streamlit آمده است:


import streamlit as st

st.title("Take input from the user")
user_input = st.text_input("Say something:")

if user_input:
    st.write("You said:", user_input)

اگر این کد را با Streamlit (با استفاده از دستور streamlit run) اجرا کنید، چه اتفاقی می‌افتد:

  1. یک صفحه وب با عنوان دریافت ورودی از کاربر ظاهر می شود.
  2. یک کادر متنی با برچسب چیزی بگویید: در زیر آن ظاهر می‌شود.
  3. اگر کاربر چیزی را در کادر متن تایپ کند و Enter را فشار دهد، ورودی کاربر در زیر کادر متن با برچسب شما گفتید: ظاهر می‌شود.
Kotlin Multiplatform Mobile SDK به خط پایان نزدیک می شود

این ویجت‌های HTML و تمام رفتارهای آن‌ها توسط Streamlit به صورت خودکار تولید و مدیریت می‌شوند. این شامل وضعیت برنامه می‌شود—برای مثال، در کادر user_input، عبارت if فقط زمانی فعال می‌شود که کاربر چیزی را وارد کند.

بسیاری از اجزای HTML در Streamlit نسبت به نمونه‌های نشان داده شده در اینجا موجود است. مؤلفه‌هایی مانند متن با قالب LaTeX، نمودارهای بوکه، ورودی دوربین، و بسیاری دیگر به صورت بومی در دسترس هستند.

یک مثال پیچیده تر Streamlit

برای یک برنامه Streamlit پیچیده تر، نگاهی به این مثال بیندازید مستندات Streamlit. این برنامه مجموعه داده مشترکی از بارگیری‌ها و بارگیری‌های Uber را در منهتن بارگیری می‌کند که بر اساس ساعت گروه‌بندی شده‌اند. سپس زمان ها را بر روی نمودار میله ای و مکان ها را در یک نقشه تعاملی ترسیم می کند.

کل برنامه فقط حدود ۳۰ خط است. به اندازه کافی کوتاه است که بتوانید آن را کپی و در یک فایل پیست کنید و خودتان آن را اجرا کنید. همچنین به عنوان ویترینی برای نحوه انجام کارهای Streamlit بسیار مفید است.

داده‌ها در برنامه‌های Streamlit

Streamlit بسیاری از رفتارهای بومی را برای آسان کردن کار با منابع داده ارائه می دهد. از قالب های داده به عنوان قالب اصلی برای بارگیری و کار با داده ها استفاده می کند.

همچنین می‌توانید داده‌ها را از هر منبعی که در برنامه‌های دیگر پایتون استفاده می‌کنید بارگیری کنید، و Streamlit امکاناتی را برای کمک به این فرآیند فراهم می‌کند. به عنوان مثال، برنامه تجسم داده در بخش قبل از پانداها برای بارگیری یک فایل CSV از یک URL راه دور و ترجمه آن به یک دیتا فریم استفاده می کند. در حالی که راحت است، بارگیری و قالب بندی داده ها می تواند کند و زمان بر باشد، به خصوص اگر از طریق اتصال شبکه بارگیری می کنید. برنامه همچنین پس از هر اقدامی که کاربر انجام می دهد، مجدداً بارگیری می شود.

3 افسانه مخرب هوش مصنوعی مسئول

برای انجام این کار، Streamlit دکوراتور @st.cache_data را ارائه می دهد که برای بسته بندی تابع load_data() استفاده می شود. علاوه بر این، @st.cache_data داده ها را در چندین بارگذاری مجدد برنامه در حافظه پنهان ذخیره می کند، بنابراین فقط در اولین راه اندازی بارگیری می شود.

مدیریت وضعیت در برنامه های Streamlit

از آنجایی که طراحی Streamlit مجبور به بارگیری مجدد برنامه با هر تعامل کاربر می شود، حفظ حالت پایدار در برنامه Streamlit همیشه واضح نیست. دیده‌ایم که چگونه داده‌های موجود در جعبه متن، وضعیت بین اجراها را مدیریت می‌کنند. اما اگر می‌خواهیم حالت را جدا از وضعیت کنترل‌های فردی ایجاد و مدیریت کنیم، باید از شیء داخلی session_state Streamlit.

streamlit.session_state یک ذخیره‌سازی با ارزش کلیدی است – اساساً یک فرهنگ لغت – که در تمام اجراها باقی می‌ماند. وقتی یک برنامه Streamlit برای اولین بار شروع می شود، آن فروشگاه خالی است، بنابراین قبل از تلاش برای دسترسی به کلیدها، باید وجود کلیدها را آزمایش کنید.


import streamlit as st

# create the key "sayings" if it doesn't exist
if 'sayings' not in st.session_state:
    st.session_state['sayings'] = []

# for convenience, make a reference
sayings = st.session_state['sayings']

st.title("Take input from the user")
user_input = st.text_input("Say something:")

if sayings:
    # display "sayings" if it has inputs from previous runs
    st.write("You previously said:", sayings)

if user_input:
    # add to "sayings" if we get an input
    sayings.append(user_input)
    st.write("You said:", user_input)

توجه داشته باشید که هر داده ای که در session_state ذخیره می شود، فقط در طول عمر سرور Streamlit که برنامه را اجرا می کند، باقی می ماند. اگر سرور متوقف شود، داده ها از بین می روند. اگر به داده‌هایی نیاز دارید که با شدت بیشتری ادامه پیدا کنند، ممکن است به راه‌حلی مانند پایگاه داده یا حافظه پنهان مانند Redis نیاز داشته باشید.

استفاده از مدل های یادگیری ماشینی Hugging Face در Azure

ویجت های داده برای برنامه های Streamlit

ما دیده‌ایم که چگونه عناصر در صفحات Streamlit می‌توانند از برچسب‌های نوشتاری ساده یا کنترل‌های HTML تا عناصر پیچیده‌تر مانند نقشه‌ها، نمودارها، پخش صوتی/تصویری، یا تعاملات پیشرفته مانند جعبه‌های چت (مثلاً برای تعامل با LLM).

کنترل‌های ساده برای نمایش یا تعامل با داده‌ها از قبل برای مدیریت داده‌های رندر برای رایج‌ترین موارد استفاده از قبل سیم‌کشی شده‌اند. برای مثال، ویجت‌های وب Streamlit می‌توانند از قاب‌های داده به‌عنوان منبع استفاده کنند و به‌طور خودکار قاب‌های داده را با برچسب‌گذاری ستونی مناسب ارائه دهند، بنابراین نیازی نیست آن را با دست اضافه کنید.

کتابخانه گسترده ای از ویجت های داده رایج به طور پیش فرض با Streamlit گنجانده شده است. مؤلفه‌های بیشتری از این دست، ایجاد شده و توسط جامعه کاربر به اشتراک گذاشته شده است، از طریق نصب پیپ ساده< در دسترس هستند. /code>.

استقرار برنامه های Streamlit

از آنجایی که برنامه‌های Streamlit در قلب برنامه‌های وب پایتون هستند، می‌توان آن‌ها را تقریباً به همان روشی که هر برنامه پایتون شبکه‌ای استقرار داد، اجرا کرد. راه سریع و کثیف این است که فقط برنامه را روی یک دستگاه خاص اجرا کنید و از طریق پورت اختصاص داده شده به آن دسترسی داشته باشید.

استقرارهای پیشرفته‌تر نیز از همان الگوی سایر برنامه‌های وب پایتون پیروی می‌کنند—با استفاده از Docker، Kubernetes، یا موارد رایج دیگر خدمات ابری. کاربران Snowflake در AWS و Microsoft Azure همچنین می‌توانند برنامه‌های Streamlit را با پشتیبانی فروشگاه داده Snowflake اجرا کنند. الف>. در نهایت، Streamlit سرویس میزبانی ابر انجمن خود را ارائه می‌کند، اگرچه این یک راحتی است و نه برای برنامه های Streamlit اجباری است.