Streamlit
is 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.toml
st.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