未定の部屋

主にデータサイエンス関係の記事を書きます

AWS×Streamlit×GPTでペルソナ作成・リサーチアプリを作ってみた

こんにちは。ChatGPTがリリースされてからLLM以外の技術トピックをめっきりキャッチアップしなくなってしまい、まずいなと思いつつモチベが上がらない日々を過ごしています。今回はそんなLLMを使ったWEBアプリを作ってみたので、その内容を紹介しようと思います。

サマリ

  • OpenAI APIを用い、GPT-3.5を使って商品情報を入力するとそれに合わせたペルソナを作成・分析してくれるアプリを作った

  • AWSでEC2インスタンスを作成→Dockerコンテナを立てる→PythonのライブラリであるStreamlit1を用いてアプリ作成という手順で作成した

  • 基本的に生成文が著しくズレていることはなく、壁打ちとしては機能しそう。ChatGPTでも同様のことができるが、ペルソナ作成に特化した入出力のフォーマットなので、より楽に使えそう

きっかけ

アプリ作成のきっかけは↓のツイートでした。

このプロンプトを見て良くできてるなあと思いつつも、「毎回ChatGPTにコピペするのは面倒だな」「プロンプトのどの部分を変えるのか分かりにくいな」と感じました。そこで、OpenAIのAPIを使ってアプリの形にして、もっと使いやすくできるんじゃないか?と思い、作成に至りました。

作成手順

ざっくりと作成手順を記載していきます。
DockerfileやPythonコードは↓のGitHubに挙げているので、こちらも必要に応じて見てみてください。

github.com

前提

EC2インスタンスを作成し、VSCodeからSSH接続をする

ここについては以前記事に書いたので、適宜↓を参照してください。

miteinoheya.hatenablog.com

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」から開ける

注意事項

  • おそらくCtrl+C以外でアプリを停止できない(Streamlitの仕様?)
  • ブラウザを消してもJupyterLabのターミナルタブを残したままならrunし続ける

所感

以下に作成したアプリの簡単な所感を書いていきます。

  • 元ツイートと同じような出力が出てきた
  • 入力する部分が分かりやすい:書き換えが楽
  • カスタマイズしやすい:今回は実装していないが、出力結果をファイルにしてエクスポートすることも可能

機能は元のツイートとほぼ変わらないままに、使いやすさはアプリにした分向上したかなと思います。ChatGPTはチャット形式で便利ではありますが、今回のように目的がはっきりしているときはそれ用にカスタマイズする方が便利だなと思いました。

少し簡素ではありますが、以上になります。ではでは。


  1. Streamlitとは、PythonでWebアプリケーションを作成するためのフレームワーク。簡易的にWebアプリを作成するのに向いている