OPENAI APIを利用してチャットサービスを作る
Streamlit × OpenAI API でチャットサービスを構築しよう!
「OpenAI の API を使ってチャットサービスを作りたいけど、どうやって始めればいいの?」
そんな方のために、conda を使った Python 3.10 の仮想環境構築から、ライブラリ導入、そして Streamlit でチャットサービスを立ち上げるまでの手順をサクッとご紹介します!
1. conda で仮想環境を準備する
① 仮想環境を作成
conda create --name myenv python=3.10
これで myenv
という Python 3.10 を使った仮想環境ができあがります。
② 仮想環境をアクティブにする
conda activate myenv
これで新しい環境の準備完了です。必要に応じて他の環境に切り替える際は conda activate 別の環境
を使ってください!
2. ライブラリを一括インストール
requirements.txt
に必要なパッケージをまとめておけば、一度のコマンドで全て入れられて便利です。たとえば次のように書いてみましょう。
openai
streamlit
python-dotenv
それをまとめてインストールするには、
pip install openai streamlit python-dotenv
これで、OpenAI API とやりとりするための openai
パッケージや、Web アプリっぽい画面を手軽に作れる streamlit
、そして環境変数を管理しやすい python-dotenv
が一気にインストールされます。
3. チャットサービス用のアプリを作ってみよう
次に、app.py
というファイルを用意して、以下のサンプルコードを書いてみましょう(もちろん、自由にカスタマイズ OK です)。
from openai import OpenAI
import streamlit as st
import os
from dotenv import load_dotenv
load_dotenv()
# OpenAI APIキーの設定
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# Streamlitアプリのタイトル
st.title("ChatGPT Chat Service")
# チャット履歴を保存するためのセッション状態を初期化
if "messages" not in st.session_state:
st.session_state["messages"] = []
# ユーザー入力
user_input = st.text_input("あなたのメッセージを入力してください:")
# ユーザーがメッセージを送信した場合
if user_input:
# ユーザーのメッセージをチャット履歴に追加
st.session_state["messages"].append({"role": "user", "content": user_input})
# OpenAI APIを呼び出して応答を取得
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=st.session_state["messages"]
)
# 応答メッセージをチャット履歴に追加
assistant_message = response.choices[0].message.content
st.session_state["messages"].append({"role": "assistant", "content": assistant_message})
# 応答を表示
st.text_area("ChatGPTの応答:", value=assistant_message, height=200, max_chars=None)
# チャット履歴を表示
st.write("### チャット履歴")
for message in st.session_state["messages"]:
role = "ユーザー" if message["role"] == "user" else "ChatGPT"
st.write(f"**{role}:** {message['content']}")
.env
で API キーを管理しよう
4. OpenAI の API キーは人には見せたくないもの。
そんなときは、.env
ファイルを作り、その中に以下のように書いておくと便利です。
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxx
あとは、上のコードの load_dotenv()
が自動的に .env
の内容を読み込み、環境変数として利用してくれます。キーをハードコーディングしなくていいのは大きなメリットですね。
5. いざ、Streamlit で起動!
アプリを起動するには、仮想環境がアクティブな状態で以下を実行するだけ。
streamlit run app.py
すると、ターミナルに表示される URL(例: http://localhost:8501)を開くだけで、ブラウザからチャットを楽しめるようになります!
6. フォルダ構成の例
最終的に、こんなディレクトリ構成を想定しています。
.
├── app.py
├── requirements.txt
└── .env
- app.py … 先ほどの Streamlit アプリのコード
- requirements.txt … 必要なパッケージ一覧
- .env … API キーなどの機密情報を入れる場所
おわりに
今回の手順をまとめると、以下の流れになります。
-
conda で仮想環境を作る:
conda create --name myenv python=3.10
-
ライブラリをまとめてインストール:
pip install -r requirements.txt
-
Streamlit アプリを起動:
streamlit run app.py
こうするだけで、OpenAI API を利用したチャットサービスをすぐに試せます。
手軽に作れるので、プロトタイプやデモ用のアプリとしても活用しやすいですよ。ぜひ挑戦してみてくださいね!
Discussion