こんにちは!奥津です。
今日はタイトルのとおり、StreamlitでChatGPTを使ったチャットボットを実装し、
指示に応じたSQLが回ってSnowflakeから欲しいデータを持ってきてくれるシステムのデモをやっていこうと思います。
やってみるデモはこちら。こんなものが簡単に実装できちゃうのはすごいですね。
Frosty: Build an LLM Chatbot in Streamlit on your Snowflake Data
詳しい流れはデモを見た方が良いので、大きな流れや引っかかったところなど中心に書いていきます。
準備
環境設定
pythonやstreamlitの設定がまだの場合は設定します。
データ
今回使用するデータをSnowflake MarketplaceでGetします。
Cybersyn Financial & Economic Essentialsという、アメリカの金融・経済のサマリーデータを使います。
認証情報
SnowflakeとOpenAIのGPT-3.5の認証情報をそれぞれ用意します。
StreamlitのSecret Management機能を使うと、認証情報を安全に別管理しつつ、変数として使うことができるとのことなのでこれに従います。
secrets.tomlというファイルを作成し、ここに認証情報を追加していきます。
OpenAI
OpenAIのAPI KEYを取得したことがなかったので戸惑いましたが、このブログなど参考に取得しました。
[超初心者向け] ChatGPT(OpenAI)のAPI key取得手順
一度ChatGPTで登録しちゃってると、トライアル分が既に期限切れになってたりしておおっとなりました。
ユーザー登録してセッティングのところからキーを作れます。5$分のトライアル枠が付与されます。
Snowflake
Snowflakeの認証情報は基本問題なかったのですが、アカウント識別子を取得する際、
Snowsightでコピペしたままだと認証できないことを忘れていてエラーになり、修正しました。
Snowsightからの取り方は以下のとおりですが、<orgname>.<acount_name>を<orgname>-<acount_name>にする必要があります。
実装
チャットボットを試す
実装前に、ちゃんとチャットボットできるのか試します。
デモに従ってスクリプトを入力して実行すると、お~~たしかにStreamlit上でチャットが返ってくる。
自然言語でプロンプトファイル作成
つづいてメインのチャットボットを実装する前に、
チャットボットの応対内容や、データを抽出してくるときの考え方などをプロンプトファイルに定義します。
これを自然言語でできるのがすごいですね。一部抜粋ですが以下のような形。
チャットボット実装
試したときのチャットボットにもう少し細かい設定を加え、実装完了です。
実行結果をGoogle翻訳するとこんな感じ。
入力した質問から、回答に必要なSQLをあっという間に作り上げて結果を打ち返してくれます。
いや賢いなフロスティ。
Streamlit in Snowflakeでチャットボット
実は最初はこのデモをStreamlit in Snowflakeを使って、Snowflake上で完結させたいと思ってトライしてたのですが、
OpenAIの認証がなんだかうまくいかずいったん断念しました。
しかし必要な設定も認証もかなり減るのでホントはより簡単に実装できるはず、truestarメンバーの力を借りまたトライしてみます。
truestarではSnowflakeの検討、導入支援や環境構築からアプリ開発まで幅広くサポート可能です。
Snowflakeに゙興味がある、導入済みだけどもっとうまく活用したい等々ありましたら、ぜひこちらからご相談ください。