PythonからChatGPTのAPIを呼び出してみる
ノーコードによるシステム構築がトレンドとなっている今現在ですが、ノーコードによって実現できることは限られているのも事実です。そんな時に自分でプログラムが書けると自分自身が求めているニーズに合わせてソフトウェアをカスタマイズすることが可能となります。またプログラミングを学ぶことによって技術の背後にある原理や概念を理解することができます。
今回の記事はプログラミング言語「Python」を利用してChatGPTのAPIを呼び出す手順を公開します。Pythonは数千ものライブラリとフレームワークがあり、ウェブ開発、データサイエンス、機械学習、AI、科学計算、自動化スクリプトなど、多岐にわたる用途で使用されています。
Pythonを使ってChatGPTのAPIを呼び出すための準備
準備するのは以下となります。
・Visual Studio Code(VSCode)→ コードエディタ
・ChatGPTのAPIキー → GhatGPTを外部から呼び出すためのキー情報
・OpenAIライブラリ → コード内でChatGPTを使うためのプログラム群
まずはコードを書くためにVisual Studio Code(以下、VSCode)を以下のMicrosoft公式ウェブサイトからしましょう。VSCodeはMicrosoftが開発したオープンソースのソースコードエディタです。
ChatGPTのAPIキー取得については以下の記事にまとめてありますのでそちらを参考にして下さい。登録時に$18分の無料クレジットが付与されますが、それ以降のAPIキーの利用については従量課金されますので、詳しくはOpenAIのサイトをご確認ください。
次にVSCodeを開いて以下の拡張機能「GhatGPT – Genie AI」をインストールして、ChatGPTのAPIキーを入力して下さい。コーディングしてる際に困ったことが発生した時に画面端でChatGPTに聞くことが可能となります(かなり便利)
コードを書いて実行してみる
では、実際にコードを書いてみましょう。と言いたいのですが、今やコーディングはAIのサポートを受けながらやるのがトレンドなので実際にChatGPTに意見を聞いてみましょう。(あくまでも補助的なモノなので自分自身で確認するのは必須です。)
前章で「GhatGPT – Genie AI」」を導入したので「PythonでChatGPTを使いたい。コードはどのようにかけばいいか?」と聞いてみた結果、以下の回答が返ってきました。
上記のコードを参考に以下のchatgpt.py※を作成しました。記事最後のAppendixに実際のコードを記載してありますので確認してみて下さい。
※Pythonで書いたファイルについては拡張子を「.py」にするのが通例となります。
この「chat_with_gpt(prompt)」のprompt部分に何か入れればそれに応じた回答が戻ってくるイメージです。これでChatGPTのモジュール完成です。(api_keyをメソッド呼び出し毎に読み込むのは書き方として微妙ですがまあ、うん。)
さて、このchatgpt.pyを処理の中で呼び出してみましょう。test.pyというファイルを作成して以下のようにコーディングします。「import chatgpt」は先程作成したchatgpt.pyを呼び出すという意味です。printは結果を出力させる関数となっているのでこの中にchat_with_gpt関数を入れます。今回は試しに「元気ですか?」を引数にして実行してみます。右クリックを押して「ターミナルでPythonファイルを実行する」を押してみて下さい。
「はい、元気です!」という頼もしい返事が返ってきました!これでPythonからChatGPTのAPIを呼び出せたことになります。
まとめ
今回、科学技術分野でよく使われるプログラミング言語「Python」を用いてChatGPTのAPIを呼び出してみました。コーディングする際には「GhatGPT – Genie AI」も活用しながらプログラムを動かすことができました。少しプログラミングをやった人にとっては簡単な作業だったと思いますが、基本的なところを確実に抑えることで様々なことへの応用が可能となります。
Appendix
今回のコードを添付します。
■chatgpt.py
import openai
def chat_with_gpt(prompt):
openai.api_key = “自分のChatGPTのAPIキー“
response = openai.Completion.create(
engine=”text-davinci-003″,
prompt=prompt,
max_tokens=100, # 応答のトークン数を制限する場合に指定します。
temperature=0.7, # 高い値ほどランダム性が増え、低い値ほど厳密な応答になります。
n=1, # 返される応答の数を指定します。
stop=None, # 応答を停止させるテキストを指定します。Noneの場合は自動的に停止しません。
timeout=None, # APIリクエストのタイムアウトを指定します。Noneの場合はデフォルト値が使用されます。
)
return response.choices[0].text.strip()
■test.py
import chatgpt
print(chatgpt.chat_with_gpt(“元気ですか?”))