22 ポイント 投稿者 xguru 2024-10-07 | 1件のコメント | WhatsAppで共有
  • ほとんどの企業は社内に価値あるデータを保有している
    • 顧客が製品とどのようにやり取りしているかを示す分析データ
    • 製品内で行われた作業の監査ログ(機能がいつ有効化されたかを把握できる)
  • 小規模なスタートアップであっても有用なデータを持っている
    • サポートチケットを通じて、製品の中で最も注意が必要な部分を把握でき、機能リクエストも含まれている
  • 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を出力しなければならない
  • データフレームを変換して、urgentcategorieserror(エラー発生時)列を追加する
  • OpenAI呼び出しをキャッシュして時間とコストを節約する
  • プロンプトをデータに再実行するためのボタンを追加する

ステップ 3: 認証を追加

  • PropelAuthを使ってStreamlitに認証を追加する
  • propelauth.pyファイルを作成してauthオブジェクトをエクスポートする
  • スクリプトの先頭でユーザーを読み込むか、スクリプトの実行を停止する
  • データクエリでユーザーIDを使い、アクセス権のあるデータだけを確認できるようにする

ステップ 4: プロンプトを保存

  • ユーザーがプロンプトを保存できるボタンを追加する
  • データベース接続を読み込み、プロンプトをpromptsテーブルに挿入する
  • ユーザーIDとプロンプトをパラメータとして渡してプロンプトを保存する

1件のコメント

 
xguru 2024-10-07

2020年に私がStreamlit - PythonコードをカスタムMLツールに簡単にすると簡単に紹介したことがありましたが、2022年にSnowflakeがStreamlitを$800Mで買収しました。

少し前には、Streamlitを使って作成されたツールがShow GNにも一度投稿されていましたね。
MP3 Tag Editor (Python Streamlit +FastAPI) on Docker