🤖

0から学ぶ Poetry + Streamlit で Hello World

2024/09/12に公開

Streamlitとは

Streamlitは、Pythonを使ってデータサイエンスや機械学習のアプリケーションを簡単に作成できるWebフレームワークです。データの可視化やインタラクティブなダッシュボードを構築するために設計されており、最小限のコードで素早くWebアプリを作成することができます。

本記事ではゼロからStreamlitプロジェクトを作成し、Webアプリを立ち上げるまでの手順について解説します。

Streamlitの特徴

  • フレームワークに組み込まれたUIコンポーネントがあるのでPythonエンジニアでもいい感じのUIが作れる
  • PandasのDataFrameをst.dataframe(df)という感じでそのままポンできる(便利)
  • 逆に、StreamlitでカバーしているUIの範囲を超えるとしんどい。ゴリゴリ凝ったUI組みたいなら使うべきではない
  • APIサーバは別途FlaskやFastAPIなどで建てる必要がある

poetry でプロジェクト作成

poetry new st-sandbox

poetryでの空のプロジェクト作成したら、streamlitをadd

poetry add streamlit

参考: Poetryに関する詳しい記事はこちら
https://qiita.com/shun198/items/97483a227f288ad58112

Streamlit の起動

構築がちゃんとできているかどうかは streamlit hello で確認する

poetry run streamlit hello

デフォルトだと localhost:8501 にstreamlit Webアプリが作成される

Streamlit でHello World

プロジェクト作成時はこんな感じでほとんどファイルがない

とりあえず main.py を作ってHello World

import streamlit as st

st.title("Hello World!")

起動コマンド

poetry run streamlit run main.py

Streamlitの UI Componentを使ってみる

streamlitには標準でUIコンポーネントが用意されていて、フロントエンドの知識がなくてもいい感じのWebアプリのUIを作成してくれます。

例えば、以下のようなシンプルなコードだけでChatGPTっぽいUIを作ることができます。

import streamlit as st

st.title("Streamlit Chat Application")

message = st.chat_input("Enter a message:")

st.chat_message("assistant").write("Hello, how can I help you?")

if message:
    st.chat_message("user").write(message)
    st.chat_message("assistant").write("Thank you for your message!")

ゼロからReactで書くと結構めんどくさいんですが前もって用意してくれるのはありがたいです。

st.write_streamでストリームレスポンスを描画することができるので、LLMにリクエストを投げた時のストリーム実装も比較的簡単に、かつ直感的に実装することができます。

他のコンポーネントに関してはStreamlit APIリファレンスを参照してください。

Reference

streamlit公式

https://streamlit.io/

poetry公式
https://python-poetry.org/

Discussion