見出し画像

【Python】ChatGPT APIを使って質問応答アプリを作ろう!~基礎編~

今回は、ChatGPT API を使って簡単な質問応答アプリを作る方法を、Python の基礎を踏まえながら 段階的に 解説していきます。

ChatGPT APIは、OpenAIが開発した自然言語処理モデルChatGPTを利用するためのインターフェースです。これを使えば、ChatGPTの高度な言語理解能力を活かした様々なアプリケーションを開発することができます。

ChatGPT APIキーの取得

動画の2:56から


Pythonコードの準備

次に、Pythonコードを書いていきます。今回は、Streamlit というライブラリを使ってウェブアプリを作成します。Streamlitは、Pythonでインタラクティブなウェブアプリを簡単に作成できるフレームワークです。HTMLやCSSの知識は不要で、Pythonコードだけでアプリを構築できます。

まずは、必要なライブラリをインストールします。 ターミナルまたはコマンドプロンプトで以下のコマンドを実行してください。

pip install streamlit openai

次に、Pythonファイルを作成し、以下のコードを記述します。

import streamlit as st
from openai import OpenAI

# pip install streamlit openai

st.set_page_config(page_title='chatgpt api')
st.title('chatgpt api: 基礎')

# st.markdown('## 出力内容の確認と取り出し方')

# 変数の設定
OPENAI_API_KEY = st.secrets['OPENAI_API_KEY']
# インスタンス化
client = OpenAI(api_key=OPENAI_API_KEY)
# モデルの設定
GPT_MODEL = "gpt-3.5-turbo"

# message設定
messages = [
    {"role": "system", "content": 'あなたは役に立つAIアシスタントです。'},
    {"role": "user", "content": '2018年サッカーワールドカップの開催国は?'},
]

# apiとの応答
response = client.chat.completions.create(
    model=GPT_MODEL,
    messages=messages,
    temperature=0 # モデルは最も確率の高いトークンを選択 1.0は中程度のランダム性
)

st.write('response')
st.write(response)

response_message = response.choices[0].message.content
st.code('response.choices[0].message.content')
st.write(response_message)

コードの解説

1. ライブラリのインポート

import streamlit as st
from openai import OpenAI

まず、必要なライブラリである streamlit と openai をインポートします。

2. ページタイトルとサブタイトルの設定

st.set_page_config(page_title='chatgpt api')
st.title('chatgpt api: 基礎')

# st.markdown('## 出力内容の確認と取り出し方')

streamlit の関数を使って、ページタイトルとサブタイトルを設定します。

3. APIキーの読み込み

OPENAI_API_KEY = st.secrets["OPENAI_API_KEY"]

先ほど取得したAPIキーを、streamlit の secrets 機能を使って安全に読み込みます。APIキーは、コード内に直接記述するのではなく、secrets.toml というファイルに保存し、st.secrets を使ってアクセスするのが安全です。
動画の5:17から解説しております。

4. OpenAIクライアントのインスタンス化

# インスタンス化
client = OpenAI(api_key=OPENAI_API_KEY)

openai ライブラリを使って、OpenAIクライアントのインスタンスを作成します。

5. ChatGPTモデルの指定

# モデルの設定
GPT_MODEL = "gpt-3.5-turbo"

使用するChatGPTモデルを指定します。今回は、コストパフォーマンスに優れた gpt-3.5-turboモデルを使用します。

6. メッセージの設定

# message設定
messages = [
    {"role": "system", "content": 'あなたは役に立つAIアシスタントです。'},
    {"role": "user", "content": '2018年サッカーワールドカップの開催国は?'},
]

ChatGPTとのやり取り内容を定義します。messages はリスト形式で、各要素は辞書型で表現されます。

  • role: メッセージの送信者を指定します。 "system", "user", "assistant" のいずれかを指定できます。

  • content: メッセージの内容を記述します。

ここでは、最初のメッセージとして、ChatGPTの役割を 「役に立つAIアシスタント」 と設定しています。

7. APIとの応答

# apiとの応答
response = client.chat.completions.create(
    model=GPT_MODEL,
    messages=messages,
    temperature=0 # モデルは最も確率の高いトークンを選択 1.0は中程度のランダム性
)

client.chat.completions.create メソッドを使って、ChatGPT APIにリクエストを送信し、応答を取得します。

  • model: 使用するChatGPTモデルを指定します。

  • messages: やり取り内容を定義した messages リストを指定します。

  • temperature: 応答のランダム性を制御するパラメータです。0に設定すると最も確率の高い返答が、1に設定するとよりランダム性の高い返答が生成されます。

8. 応答の表示

response_message = response.choices[0].message.content
st.code('response.choices[0].message.content')
st.write(response_message)

APIから取得した応答を、streamlit の st.write 関数を使って画面に表示します。response オブジェクトから必要な情報を抽出し、変数 response_message に格納しています。

アプリの実行

作成したPythonファイルを保存し、以下のコマンドを実行してアプリを起動します。

streamlit run [ファイル名].py

ブラウザが自動的に開き、作成したアプリが表示されます。

まとめ

今回は、PythonとChatGPT APIを使って簡単な質問応答アプリを作る方法を解説しました。APIキーの取得からコードの解説まで、段階的に説明しましたので、ぜひ参考にしてみてください。

よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただきます!