Streamlitis an open-source Python framework for data scientists and AI/ML engineers to deliver dynamic data apps with only a few lines of code…
Streamlit - обычные python скрипты.Streamlit в лайв-формате отображает его output в браузере.Streamlit отрисовывает приложение с использованием нового значения виджета.Streamlit позволяет использовать кэширование чтобы не пересчитывать значения тяжёлых функций при каждом рендере.Streamlit позволяет использовать session state чтобы сохранять состояние сессии при перезапусках.Streamlit позволяет создавать multipage application: каждый .py файл в папке pages - отдельная страница.import pandas as pd
import streamlit as st
st.title("Hello from streamlit")
df = pd.read_csv("examples/data/sales.csv")
st.dataframe(df.sample(2))Результат выполнения:
streamlit run your_script.py [-- script args];python -m streamlit run your_script.py - эквивалентно;streamlit run https://raw.githubusercontent.com/<...> или python -m ...;Streamlit прогоняет исходный код сверху вниз и последовательно отображает элементы на экране.Может можно иначе?
Контейнеры - элемент, позволяющий группировать другие произвольные элементы внутри себя. Позволяет в том числе управлять порядком отрисовки элементов.
Форма - составной элемент интерфейса, который считается заполненным, только когда заполнены все его элементы. Позволяет сгруппировать элементы в единый логический элемент и таким образом перезапускать скрипт только после заполнения всех элементов формы.
Фрагмент - обособленный участок кода, который может перезагружаться отдельно от основного скрипта.
Есть возможность обновлять фрагмент по заданному расписанию с помощью параметра run_every
(принимает float (seconds) | str (Pandas Timedelta constructor) | datetime.timedelta()).
Подробнее здесь
Callback-функции - функции, которые передаются в виджеты через параметры on_change или on_click. Позволяют управлять порядком выполнения кода, так как код в callback-функциях выполняется перед отрисовкой всего скрипта.
Кеширование. Любую функцию можно дополнить декоратором @st.cache_data, тогда при её вызове вычисления проводиться по возможности не будут и значение будет взято из кэша.
Состояние сессии - st.session_state, dictionary-like интерфейс. Позволяет управлять значениями объектов в пределах одной сессии.
https://docs.streamlit.io/develop/concepts/architecture/caching
DataFrame, np.ndarray, str, int, float, list, etc.
Cоздаётся словарь, где ключ - набор аргументов, а значение - результат выполнения функции на этом наборе.
При использовании значения функции помеченной декоратором, создаётся копия закешированного объекта.
Возвращается не копия, а сам объект, то есть singleton: глобальный изменяемый объект.
При изменении объекта, изменятся значения всех обращающихся к нему переменных.
Bad example
Good example
func.clear() | st.cache_data.clear() – очистить кешttl: time-to-live – время жизниmax_entries - максимальное количество хранящихся закешированных объектовpersist=True | persist='disk' - сохраняет результаты кеширования на диск (~/.streamlit/cache/): pickle-объекты_some_arg: некешируемый аргумент в функции.https://docs.streamlit.io/develop/concepts/architecture/session-state
st.session_state – dictionary-like интерфейс. Позволяет управлять значениями объектов в пределах одной сессии.Values your app stores in session_state are NOT sent to the browser or otherwise available client-side in any way. These only live on the server
В словарь состояния сессии также попадают значения виджетов, если при их создании передать параметр key.
Можно заранее создать ключ в словаре сессии, тогда созданный после элемент примет указанное значение как дефолтное.
Display almost anything
ChatGPT-like App: Туториал
Элементы на странице можно упаковать в контейнеры. Это помогает выстроить более комфортный user-experience, предоставляя пользователю удобную и понятную навигацию внутри приложения.
Более подробно здесь
Как конфигурировать:
config.toml;Местоположение файла:
~/.streamlit/config.toml (Linux, MacOS) или %userprofile%\.streamlit\config.toml (Windows);./.streamlit/config.toml;Как проверить текущие и доступные настройки приложения:
Пример конфигурационного файла
файл с секретами secrets.toml
Используются с помощью dict-like интерфейса st.secrets
Местоположение файла:
~/.streamlit/secrets.toml (Linux, MacOS) или %userprofile%\.streamlit\secrets.toml (Windows)./.streamlit/secrets.tomlst.connection("sql") (python) соотносится с секцией [connections.sql] (toml) в файле с секретами.
st.connection("my_connection", type="sql") (python) соотносится с секцией [connections.my_connection] (toml) в файле с секретами.
Доступны: sql, snowflake. Можно создать своё подключение к любому источнику, подробнее (не рекомендуется)
.streamlit/secrets.toml:
Приложение Streamlit:
Туториал: бесплатный deployment на серверах streamlit.
https://streamlit.io/components
https://streamlit.io/generative-ai - примеры интересных AI приложений
Streamlit