ChatGPTのAPIを使ってみた!

アメリカのOpenAI社が展開するChatGPTのAPIが、2023年3月1日にリリースされました!
この記事では、PythonからChatGPTのAPIを使う方法を紹介します!

こんな人におすすめ

・ChatGPTのAPIについて知りたい人
・ChatGPTのAPI料金を知りたい人
・ChatGPTのAPIをPythonから使いたい人

主なライブラリ

openai

本ページで使用するライブラリをインポートするときは以下のコードを使用します。

import openai

ChatGPTのAPIの費用

ChatGPTのAPIの利用料は2023/3/2時点で、1000トークンで$0.002のようです。
最新の情報はOpen AIのサイトからご確認ください。

https://openai.com/pricing

PythonでChatGPTのAPIを使用する(userのみ設定する)

PythonでChatGPTのAPIを使用します。
処理としては以下の4つの処理を実施します。
(1)openaiライブラリを読み込む
(2)openaiのAPP Keyを設定する
(3)リクエストを送信する
(4)回答を表示する

# (1)openaiライブラリを読み込む
import openai

# (2)openaiのAPP Keyを設定する。
openai.api_key = "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

# (3)リクエストを送信する。
response = openai.ChatCompletion.create(
     model = "gpt-3.5-turbo",
     messages = [
         {
             "role": "user",
             "content": "野球とサッカーの違いを教えてください。"
         },
     ]
)

# (4)回答を表示する。
print(response["choices"][0]["message"]["content"])

上記処理を実行すると以下のように回答を表示することができます。

野球とサッカーの主な違いは次のとおりです。

1.プレイヤーの数:野球は9人が野球フィールドに置かれ、サッカーは11人の選手がフィールドに置かれます。

2. ボールの使用:野球は小さなボールを使用し、サッカーは大きなボールを使用します。

3. 試合時間:野球は一般的に3時間以上の長い時間をかけて行われることがあり、サッカーは一般的に90分間の試合時間があります。

4. ポジション:野球はプレイヤーが特定のポジションに配置されることが多く、サッカーはより自由な位置決めができます。

5. スコア:野球のスコアは非常に低いことがあり、一方、サッカーのスコアは低いことがありますが、高得点のゲームもよくあります。

6. ルールの違い:野球は打球のルールなど特別なルールがある一方、サッカーはオフサイドルールなどの特定のルールがあることが特徴です。

それぞれの処理について簡単に解説します。

openaiライブラリを読み込む

importを使い、openaiライブラリを読み込みます。

openaiのAPP Keyを設定する

Open AIのサイトから発行したAPP Keyを設定します。
発行の方法については、別途記事を上げる予定です。

リクエストを送信する

openasiのChatCompletion.createを使い、リクエストを送信します。
引数は以下のように設定しました。
 model:ChatGPTのモデル名(gpt-3.5-turbo)を指定します。
 messages:ChatGPTに入力する文字列を設定します。

roleにはsystem、user、assistantのいずれかを設定し、contentには文字列を設定します。
上記の例ではroleにuserのみ設定しています。

roleの設定内容は以下を参考にしてください。
 出力の条件を設定したい:system
 利用者のチャット内容を設定したい:user
 チャットボット(ChatGPT)の回答内容を設定したい:assistant

回答を表示する

response[“choices”][0][“message”][“content”]でチャットボット(ChatGPT)の回答内容を取り出すことができます。

PythonでChatGPTのAPIを使用する(systemとuserを設定する)

チャットボット(ChatGPT)の出力条件を設定したい場合は、以下のようにrole:systemで条件を指定します。
以下の例では、回答を50文字程度で表示するよう指示しています。

import openai
openai.api_key = "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

response = openai.ChatCompletion.create(
     model = "gpt-3.5-turbo",
     messages = [
         {
             "role": "system",
             "content": "50文字程度で教えてください。"
         },
         {
             "role": "user",
             "content": "野球とサッカーの違いを教えてください。"
         },
     ]
)

print(response["choices"][0]["message"]["content"])

結果は以下のようになりました。

野球は9人でチームを組み打撃と守備を交替しながら点を競い合い、サッカーは11人でボールを蹴り合い相手チームのゴールにボールを入れて得点を競うスポーツです。また、野球は主にグローブを使いますが、サッカーは足でボールを扱います。

112文字で回答が返ってきてしまいました。。
ただし、指示しないときと比べると文字数は少なくなっています。

まとめ

ChatGPTのAPIの使い方を紹介しました。
API経由で使うことができるようになり、利用用途が広がりそうです。
興味のある方は是非利用してみることをおススメします!