- ほとんどの企業は社内に価値あるデータを保有している
- 顧客が製品とどのようにやり取りしているかを示す分析データ
- 製品内で行われた作業の監査ログ(機能がいつ有効化されたかを把握できる)
- 小規模なスタートアップであっても有用なデータを持っている
- サポートチケットを通じて、製品の中で最も注意が必要な部分を把握でき、機能リクエストも含まれている
- LLM(大規模言語モデル)以前は、データから洞察を抽出するのは難しかった
- 独自モデルを訓練する必要があり、特徴量エンジニアリングやNLP、モデル選定、そして最も難しい訓練データ収集が必要だった
- 今ではシンプルなプロンプトで作業できる
- 例のプロンプト: "次のチケットを次のカテゴリに分類してください: Uptime, Security, Bug, Feature Request, Other"
- その結果、簡単な分類器を作ることができ、少し調整するだけでも十分な性能を発揮する
- Streamlitを使えば、誰でもLLMをデータセットに適用して実験できる社内ツールを簡単に構築できる
作ってみるもの
- ユーザーは次のような操作が可能
- ログイン
- プロンプト作成: チケット分類システム向け
- いくつかのサンプルデータでプロンプトをテストし、出力(エラーを含む)を確認
- 他の人が使えるようにプロンプトを保存
Streamlitの簡単な紹介
- Streamlitはデータアプリケーションを素早く構築できる優れたツール
- Streamlitではシンプルなコードでアプリケーションを書ける
import streamlit as st
prompt = st.text_area(
"Prompt to test (use {text} to indicate where the text should be inserted):",
"This is an example prompt:\\n\\n{text}",
)
prompt_with_data = f"{prompt}".format(
text="`Example data to be placed into prompt`"
)
st.write(prompt_with_data)
- コード実行結果: Streamlitが自動でインタラクティブなフロントエンドを生成してくれる
- ユーザーが
text_areaのプロンプトテキストを更新すると、残りのPythonコードが自動的に再実行される
Streamlitの強力な機能
- Streamlitはダッシュボードのようなインタラクティブツールを作るのに非常に強力
- さまざまなコンポーネントが使える: Pandasデータフレームをテーブルとしてレンダリングしたり、ボタンでアクションをトリガーしたりできる
- 外部データの読み込み、シークレット管理、データキャッシュのユーティリティが用意されており、これによってデータとのやり取りがより強力になる
ステップ 1: データの読み込みと可視化
- Streamlitを使ってハードコードされたデータを読み込み、テーブルとしてレンダリングする
.streamlit/secrets.tomlファイルを通じて、StreamlitにPostgreSQLデータベースへの接続方法を教える
psycopg2-binaryをインストールし、load_data_sample()関数を更新してPostgreSQLからデータを読み込む
- StreamlitはSnowflakeやGoogleスプレッドシートなど、さまざまなデータソースに接続できる
- キャッシュのために、
st.cache_resourceは接続に、st.cache_dataはコストの高いクエリ結果に一般的に使われる
ステップ 2: プロンプトを使ってデータを実行
- ユーザーからプロンプトを受け取り、読み込まれたデータに適用する
- プロンプトは
{"urgent": false, "categories": ["CategoryA", "CategoryB"]}形式の有効なJSONを出力しなければならない
- データフレームを変換して、
urgent、categories、error(エラー発生時)列を追加する
- OpenAI呼び出しをキャッシュして時間とコストを節約する
- プロンプトをデータに再実行するためのボタンを追加する
ステップ 3: 認証を追加
- PropelAuthを使ってStreamlitに認証を追加する
propelauth.pyファイルを作成してauthオブジェクトをエクスポートする
- スクリプトの先頭でユーザーを読み込むか、スクリプトの実行を停止する
- データクエリでユーザーIDを使い、アクセス権のあるデータだけを確認できるようにする
ステップ 4: プロンプトを保存
- ユーザーがプロンプトを保存できるボタンを追加する
- データベース接続を読み込み、プロンプトを
promptsテーブルに挿入する
- ユーザーIDとプロンプトをパラメータとして渡してプロンプトを保存する
1件のコメント
2020年に私がStreamlit - PythonコードをカスタムMLツールに簡単にすると簡単に紹介したことがありましたが、2022年にSnowflakeがStreamlitを$800Mで買収しました。
少し前には、Streamlitを使って作成されたツールがShow GNにも一度投稿されていましたね。
MP3 Tag Editor (Python Streamlit +FastAPI) on Docker