ChatGPTのレスポンスを返すプログラムを作成する。
今回はPythonプログラミングでChatGPTから応答を返すプログラムを作っていきます。
今回の対象モデルは【text-davince-003】と【chatgpt3.5-turbo】です。
環境はVisual Studio Codeを使用しています。
ChatGPTのアカウントは既に生成したことが前提です。
KindleUnlimited会員であれば、全ての本をご覧頂けます。 リストとラムダ式を理解すれば、Pythonプログラミングの世界が変わる 第1版
ChatGPTAPIキーの発行手順
まずは、ChatGPTのAPIキーを発行する必要があります。
step
1https://openai.com/api/にアクセスします。
step
2「GET STARTED」をクリックします。
step
3アカウントは既に作成したと思うので、「Continue」をクリックします。
step
4メールアドレスとパスワードを入力し、Continueボタンを押下します。
step
5OpenAIの利用方法について質問に対し、個人利用として「I’m exploring personal use」を選択します。画像がなくてすみません。
以上でAPIキーを発行するまでのアカウント登録まで完了します。
step
6メニュー画面の右上の「Personal」アイコンをクリックし、「View API Keys」をクリックします。
step
7「Create new secret key」を押下すると、APIキーを発行することができます。
発行したAPIキーをコピーし、プログラム上で指定すると使うことができます。
APIキーの発行手順については以上です。
OPENAIのライブラリをインストール
続けて、OPENAIの便利なライブラリをVisual Studio Codeからインストールします。
step
1メニューの「ターミナル」⇒「新しいターミナル」をクリックします。
step
2「pip install openai」とコマンドを打ちます。
以上で、PythonからChatGPTを使用する準備が整いました!
PythonからChatGPTを使用する(モデル:text-davinci-003)
早速、ソースコードを見ていきましょう!
api_keyに発行したキーを入力し、下記のソースコードを実行してみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import os import openai openai.api_key = '' #発行したAPIキーを入力 prompt = "消費税のブログタイトル考えてください。"; print(prompt) response = openai.Completion.create( model="text-davinci-003", prompt=prompt, max_tokens=1000, echo=False ) print(response['choices'][0]['text'].replace('\n', '')) |
出力結果
消費税のブログタイトル考えてください。
『新しく導入される消費税、その価値を考える』
上記のように比較的簡単にソースコードを書くことができます。
promptが質問文となりますので、自由に書き換えて実行してみてくださいね。
PythonからChatGPTを使用する(モデル:chatgpt3.5-turbo)
続けて、chatgpt3.5-turboにリクエストするソースコードを見ていきます。
chatgpt3.5-turboから会話履歴も一緒にリクエストを送ることができるようになりました。
ソースコードをみていきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import os import openai def get_openai_response(messages_array): for item in messages_array: print(item) openai.api_key = '' # 発行したAPIキーを入力 response = openai.ChatCompletion.create( model="gpt-3.5-turbo", max_tokens=1000, messages = messages_array ) response_text = response["choices"][0]["message"]["content"].replace('/n', '') print(response_text) return response_text messages_array=[{"role": "system", "content": "筋肉トレーニング"} ,{"role": "user", "content": "ブログタイトルを考えてください。"}] get_openai_response(messages_array) |
出力結果
{'role': 'system', 'content': '筋肉トレーニング'}
{'role': 'user', 'content': 'ブログタイトルを考えてください。'}
「筋肉に磨きをかけるトレーニング日記」
上記のように応答が返ってきました!
会話履歴を一緒に送れるようにする仕様からString型ではなく、
リスト型で要素が辞書型で送るようになっています。下記の部分です。
1 2 |
messages_array=[{"role": "system", "content": "筋肉トレーニング"} ,{"role": "user", "content": "ブログタイトルを考えてください。"}] |
ロールのsystemは過去のリクエスト、userは現在のリクエストを表しています。
role |
内容 |
user |
今回のリクエスト |
system |
過去のリクエスト |
assistant |
過去のレスポンス |
各ロールは上記の表のような意味を持っています。
そのため、下記のようにsystemの部分をコメントアウトしてリクエストを送ると、
1 2 |
messages_array=[#{"role": "system", "content": "筋肉トレーニング"} {"role": "user", "content": "ブログタイトルを考えてください。"}] |
出力結果
{'role': 'user', 'content': 'ブログタイトルを考えてください。'}
「今日から始める小さなストーリー」
筋トレとは全く関係ないブログタイトルが返ってきます。
このように、chatgpt3.5-turboから会話履歴に基づいた応答を返すことが可能となりました。
chatgpt3.5-turboの解説は以上です。
まとめ
今回はPythonでChatGPTを使用する方法を解説していきました。
細かいソースコードの説明はしておりませんが、Chatgptとの連携方法は分かって頂けたと思います。
上記のプログラムを使えば、ChatGPTと連携するプログラムはすぐに作れると思います!ぜひご活用ください!
最後まで読んで頂き、ありがとうございました!