AWS×Streamlit×GPTでペルソナ作成・リサーチアプリを作ってみた
こんにちは。ChatGPTがリリースされてからLLM以外の技術トピックをめっきりキャッチアップしなくなってしまい、まずいなと思いつつモチベが上がらない日々を過ごしています。今回はそんなLLMを使ったWEBアプリを作ってみたので、その内容を紹介しようと思います。
サマリ
OpenAI APIを用い、GPT-3.5を使って商品情報を入力するとそれに合わせたペルソナを作成・分析してくれるアプリを作った
AWSでEC2インスタンスを作成→Dockerコンテナを立てる→PythonのライブラリであるStreamlit1を用いてアプリ作成という手順で作成した
基本的に生成文が著しくズレていることはなく、壁打ちとしては機能しそう。ChatGPTでも同様のことができるが、ペルソナ作成に特化した入出力のフォーマットなので、より楽に使えそう
きっかけ
アプリ作成のきっかけは↓のツイートでした。
【図解】ChatGPTを使い、超速でペルソナ設定とリサーチができる!
— ヒロ|売れるライティング (@katosaleswriter) 2023年5月21日
ChatGPTを使って誰でも簡単に、最速で、最適解のペルソナの設定とリサーチができてしまうプロンプトを公開します。
図解の「詳細を入力」だけ書き換えて、手順1、2の順番で全文をコピペして実行するだけです。… pic.twitter.com/FADl1Gd5Qc
このプロンプトを見て良くできてるなあと思いつつも、「毎回ChatGPTにコピペするのは面倒だな」「プロンプトのどの部分を変えるのか分かりにくいな」と感じました。そこで、OpenAIのAPIを使ってアプリの形にして、もっと使いやすくできるんじゃないか?と思い、作成に至りました。
作成手順
ざっくりと作成手順を記載していきます。
DockerfileやPythonコードは↓のGitHubに挙げているので、こちらも必要に応じて見てみてください。
前提
EC2インスタンスを作成し、VSCodeからSSH接続をする
ここについては以前記事に書いたので、適宜↓を参照してください。
EC2でdockerコンテナを立てる
- 以下のコマンドを実行してdockerとdocker composeをインストールします
# Dockerのインストール sudo yum update -y sudo yum install -y docker sudo systemctl start docker sudo systemctl enable docker sudo usermod -a -G docker ec2-user newgrp docker # インストールされたことを確認 docker info # docker-composeのインストール sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose # インストールされたことを確認 docker-compose --version
Dockerfileとdocker-compose.ymlファイルを作成する EC2インスタンスの任意のディレクトリでそれぞれのファイルを作成します。Dockerfileとdocker-compose.ymlは同じディレクトリ配下に置いています。
docker-compose.ymlのあるディレクトリに移動して
docker-compose up -d
を実行する
JupyterLabを立ち上げる
http://[EC2インスタンスのパブリックIPアドレス]:8888/lab
上記のURLを打ち込めば立ち上がると思います。
- パスワードはDockerfileで記述したもの
- EC2インスタンスのセキュリティグループのインバウンドルールに8888番ポートを追加しておく
※Streamlitを使ってWebアプリを作るだけならJupyterLabは必要ないのですが、Pythonコードの試行錯誤をするのにノートブックを使い慣れているのでJupyterLabを使っています。
Streamlitを使ってペルソナ作成・リサーチアプリを立ち上げる
- Pythonコードは上部であげたGitHubのリポジトリにあるので、適宜見てもらえればと思います
- ターミナルを起動してscriptフォルダに移動し、
streamlit run [pythonファイル名]
と打ち込むと立ち上がる- 出力にある「External URL」から開ける
- 出力にある「External URL」から開ける
注意事項
- おそらくCtrl+C以外でアプリを停止できない(Streamlitの仕様?)
- ブラウザを消してもJupyterLabのターミナルタブを残したままならrunし続ける
所感
以下に作成したアプリの簡単な所感を書いていきます。
- 元ツイートと同じような出力が出てきた
- 入力する部分が分かりやすい:書き換えが楽
- カスタマイズしやすい:今回は実装していないが、出力結果をファイルにしてエクスポートすることも可能
機能は元のツイートとほぼ変わらないままに、使いやすさはアプリにした分向上したかなと思います。ChatGPTはチャット形式で便利ではありますが、今回のように目的がはっきりしているときはそれ用にカスタマイズする方が便利だなと思いました。
少し簡素ではありますが、以上になります。ではでは。