Zenn
💭

OPENAI APIを利用してチャットサービスを作る

2025/03/27に公開

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']}")

4. .env で API キーを管理しよう

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 キーなどの機密情報を入れる場所

おわりに

今回の手順をまとめると、以下の流れになります。

  1. conda で仮想環境を作る: conda create --name myenv python=3.10
  2. ライブラリをまとめてインストール: pip install -r requirements.txt
  3. Streamlit アプリを起動: streamlit run app.py

こうするだけで、OpenAI API を利用したチャットサービスをすぐに試せます。
手軽に作れるので、プロトタイプやデモ用のアプリとしても活用しやすいですよ。ぜひ挑戦してみてくださいね!

Discussion

ログインするとコメントできます